1. 求1!-n!之和,即1!+2!+3!+...+(n-1)!+n
代码
int
sum;
int factorial;
while ( true )
{
Console.Write( " 请输入一个整数数字(输入exit退出): " );
string input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
int n = Convert.ToInt32(input); // 略掉验证
sum = 0 ;
factorial = 1 ;
for ( int i = 1 ; i <= n; i ++ ) // 控制数字增长
{
factorial = 1 ;
for ( int j = 1 ; j <= i; j ++ )
{
factorial *= j;
}
sum += factorial;
}
Console.WriteLine( " The factorial of number n is: " + sum.ToString());
}
}
int factorial;
while ( true )
{
Console.Write( " 请输入一个整数数字(输入exit退出): " );
string input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
int n = Convert.ToInt32(input); // 略掉验证
sum = 0 ;
factorial = 1 ;
for ( int i = 1 ; i <= n; i ++ ) // 控制数字增长
{
factorial = 1 ;
for ( int j = 1 ; j <= i; j ++ )
{
factorial *= j;
}
sum += factorial;
}
Console.WriteLine( " The factorial of number n is: " + sum.ToString());
}
}
2. 输出Fibonacci数列的前n位数, 如1,1,2,3,5,8....
代码
string
input
=
""
;
int n;
int f1;
int f2;
while ( true )
{
Console.Write( " 请输入要显示斐波那契数列(Fibonacci)的位数(偶数), 输入exit退出: " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
n = Convert.ToInt32(input);
f1 = 1 ; // f1为第一项, 即第奇数项
f2 = 1 ; // f2为偶数位, 即第偶数项
for ( int i = 1 ; i <= n / 2 ; i ++ ) // 斐波那契树立每次出项2个, 所以位数n需要除以2
{
Console.Write(f1 + " , " + f2 + " , " );
f1 = f1 + f2;
f2 = f2 + f1;
}
Console.Write( " \n " );
}
}
int n;
int f1;
int f2;
while ( true )
{
Console.Write( " 请输入要显示斐波那契数列(Fibonacci)的位数(偶数), 输入exit退出: " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
n = Convert.ToInt32(input);
f1 = 1 ; // f1为第一项, 即第奇数项
f2 = 1 ; // f2为偶数位, 即第偶数项
for ( int i = 1 ; i <= n / 2 ; i ++ ) // 斐波那契树立每次出项2个, 所以位数n需要除以2
{
Console.Write(f1 + " , " + f2 + " , " );
f1 = f1 + f2;
f2 = f2 + f1;
}
Console.Write( " \n " );
}
}
3. 若一个数恰好等于它的因子之和, 则称这个数为"完全数", 如: 6的因子为1,2,3,因子之和为1+2+3=6; 28的因子为1,2,4,7,14,因子之和为28. 编程求解整数n之内的所有完全数.
代码
string
input
=
""
;
int n;
int sum;
while ( true )
{
Console.Write( " 请输入要输出的完全数的最大值n(输入exit退出) " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
n = Convert.ToInt32(input);
for ( int i = 1 ; i <= n; i ++ )
{
sum = i; // 暂存当前数字, 例如: 6
for ( int j = 1 ; j < i; j ++ ) // 这里不能取=号
{
if (i % j == 0 ) // 找到一个因子
{
sum -= j; // 根据因子之和等于该数来确定的条件. 如: 6 = 1+2+3, 每找到一个因子就可以减去它, 直到结果为0为止
}
}
if (sum == 0 )
{
Console.Write(i + " , " );
}
}
}
}
int n;
int sum;
while ( true )
{
Console.Write( " 请输入要输出的完全数的最大值n(输入exit退出) " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
n = Convert.ToInt32(input);
for ( int i = 1 ; i <= n; i ++ )
{
sum = i; // 暂存当前数字, 例如: 6
for ( int j = 1 ; j < i; j ++ ) // 这里不能取=号
{
if (i % j == 0 ) // 找到一个因子
{
sum -= j; // 根据因子之和等于该数来确定的条件. 如: 6 = 1+2+3, 每找到一个因子就可以减去它, 直到结果为0为止
}
}
if (sum == 0 )
{
Console.Write(i + " , " );
}
}
}
}
4. 水仙花数是一个n(>=3)位数字的数, 它等于每个数字的n次幂之和. 例如, 153是一个水仙花数, 153=1³+5³+3³. 编写程序, 求解小于1000的所有水仙花树.
代码
int
d3, d2, d1;
for ( int i = 100 ; i < 1000 ; i ++ )
{
d3 = i / 100 ; // 分离出百位, 如:987/100=9(9.87)
d2 = i / 10 % 10 ; // 分离出十位, 如:987/10=98(98.7) , 98%10 = 8;
d1 = i % 10 ; // 分离出个位, 如: 987%10 = 7
if (d3 * 100 + d2 * 10 + d1 == d3 * d3 * d3 + d2 * d2 * d2 + d1 * d1 * d1)
{
Console.Write(i + " , " );
}
}
for ( int i = 100 ; i < 1000 ; i ++ )
{
d3 = i / 100 ; // 分离出百位, 如:987/100=9(9.87)
d2 = i / 10 % 10 ; // 分离出十位, 如:987/10=98(98.7) , 98%10 = 8;
d1 = i % 10 ; // 分离出个位, 如: 987%10 = 7
if (d3 * 100 + d2 * 10 + d1 == d3 * d3 * d3 + d2 * d2 * d2 + d1 * d1 * d1)
{
Console.Write(i + " , " );
}
}
5. 回文整数是指正读和反读相同的整数, 如:1,11,121,1221,12321...等, 编写程序, 输入一个整数并判断它是否为回文整数.
代码
string
input
=
""
;
int num;
int d5, d4, d3, d2, d1;
while ( true )
{
Console.Write( " 输入一个1至99999之间的数(输入exit退出): " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
num = Convert.ToInt32(input);
if (num <= 99999 && num >= 1 )
{
d5 = num / 10000 ; // 分离万位数, 如: 98765 /10000 = 9(9.8765)
d4 = num / 1000 % 10 ; // 分离千位数, 如: 98765 / 1000 =98(98.765), 98%10 = 8 注: d4 = num%10000/1000; 也可
d3 = num / 100 % 10 ; // 分离百位数, 如: 98765 / 100 =987(987.65), 987%10 = 7 注: d3 = num%1000/100; 也可
d2 = num / 10 % 10 ; // 分离十位数, 如: 98765 / 10 =9876(9876.5), 9876%10 = 6 注: d2 = num%100/10; 也可
d1 = num % 10 ; // 分离个位数, 如: 98765%10 = 5
if (d5 != 0 )
{
Console.WriteLine( " 五位数 " );
if (d1 == d5 && d2 == d4)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d4 != 0 )
{
Console.WriteLine( " 四位数 " );
if (d1 == d4 && d2 == d3)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d3 != 0 )
{
Console.WriteLine( " 三位数 " );
if (d1 == d3)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d2 != 0 )
{
Console.WriteLine( " 二位数 " );
if (d1 == d2)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d1 != 0 )
{
Console.WriteLine( " 一位数 " );
Console.WriteLine(num + " 是回文数! " );
}
}
else
{
Console.WriteLine( " 输入数字超范围! " );
}
}
}
int num;
int d5, d4, d3, d2, d1;
while ( true )
{
Console.Write( " 输入一个1至99999之间的数(输入exit退出): " );
input = Console.ReadLine().Trim();
if (input.ToLower() == " exit " )
{
break ;
}
else
{
num = Convert.ToInt32(input);
if (num <= 99999 && num >= 1 )
{
d5 = num / 10000 ; // 分离万位数, 如: 98765 /10000 = 9(9.8765)
d4 = num / 1000 % 10 ; // 分离千位数, 如: 98765 / 1000 =98(98.765), 98%10 = 8 注: d4 = num%10000/1000; 也可
d3 = num / 100 % 10 ; // 分离百位数, 如: 98765 / 100 =987(987.65), 987%10 = 7 注: d3 = num%1000/100; 也可
d2 = num / 10 % 10 ; // 分离十位数, 如: 98765 / 10 =9876(9876.5), 9876%10 = 6 注: d2 = num%100/10; 也可
d1 = num % 10 ; // 分离个位数, 如: 98765%10 = 5
if (d5 != 0 )
{
Console.WriteLine( " 五位数 " );
if (d1 == d5 && d2 == d4)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d4 != 0 )
{
Console.WriteLine( " 四位数 " );
if (d1 == d4 && d2 == d3)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d3 != 0 )
{
Console.WriteLine( " 三位数 " );
if (d1 == d3)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d2 != 0 )
{
Console.WriteLine( " 二位数 " );
if (d1 == d2)
{
Console.WriteLine(num + " 是回文数! " );
}
else
{
Console.WriteLine(num + " 不是回文数! " );
}
}
else if (d1 != 0 )
{
Console.WriteLine( " 一位数 " );
Console.WriteLine(num + " 是回文数! " );
}
}
else
{
Console.WriteLine( " 输入数字超范围! " );
}
}
}