java书上第二章的最后实验题,一个是求:数字转换为中文金额。另一个是:约瑟夫环问题。
第一个写了两天,还是没有完美的解决,主要的问题在于他的几个要求0的表示,10的表示和整的表示。解决一个可以,但是要一起解决,感觉代码就越写越乱了。然后参考了答案,发现答案的解答也不尽如人意,想一想反正简单就做简单的搞吧。很快就写完了。
Code
using System;
public class ChineseMoney
{
public static string moneyToString(double x)
{
string yuan = "亿千百拾万千百拾元角分";
string digit = "零壹贰叁肆伍陆柒捌玖";
string result ="";
int y = (int)Math.Floor(x);
int i=yuan.Length-1;
while(y>0 && i>0)
{
result = ""+digit[y%10]+yuan[i]+result;
i--;
y=y/10;
}
return result;
}
public static void Main()
{
double x = 1234456;
Console.Write(moneyToString(x));
}
}
约瑟夫是做过很多次的问题了,沿用以前的写法:
Code
using System;
public class Josephus_Array
{
public static void output(int[] table)
{
for(int i=0;i<table.Length;i++)
Console.Write(table[i]+" ");
Console.WriteLine();
}
public static void josephus(int number,int start,int
distance)
{
int[] ring = new int[number];
for (int m=0;m<number;m++) //初始化
ring[m] = m+1;
//Console.Write("ring: ");
// output(ring);
int i=start-1;
int k=number;
while(k>1)
{
int j=0;
while(j<distance)
{
i=(i+1)%number;
if(ring[i]!=0)
j++;
}
ring[i]=0;
k--;
output(ring);
}
}
public static void Main()
{
josephus(5,0,2);
}
}