1、求正整数的阶乘(10分)见题末
输入一个正整数n,分别用for 、while、do...while三种不同的方法求其阶乘。
2、显示Fibonacci数列(10分)见题末
打印出Fibonacci数列,要求每行显示5项,当Fibonacci的值大于10000时停止显示。
3、鸡兔同笼求解(10分)见题末
由用户输入鸡和兔的总数量h,鸡和兔的总脚数f,判断用户输出的h和f是否正确,之后根据h和f 的值分别输出鸡和兔的数量。用二种不同方法求解(方程法和穷举法)。
4、百钱买百鸡求解(10分)见题末
公鸡5元一只,母鸡3元一只,小鸡一元3只,100元钱买100只鸡(要求公鸡、母鸡和小鸡都要有),求解每类鸡的数量。
5、猴子吃桃求解(10分)见题末
猴子第一天摘下若干个桃子,当天吃掉一半多一个;第二天接着吃掉剩下桃子的一半多一个;以后每天都吃了前一天剩下桃子的一半多一个。到第8天的时候,只剩下了一个桃子。请问猴子第一天共摘了多少个桃子。
6、超市找零钱方案(10分)见题末
输入需要找零的金额,计算出该金额可以由哪些面额的人民币组成,输出找零钱的最佳方案。(找零方案中需要找出的钱币数量最少的为最佳)
7、计算距离(10分)见题末
一个小球从100m的高度自由落下,每次落地后反弹回原来高度的一半,再落下。求小球在第10次落地时,共经过多少米?第10次反弹多高?
8、求两个正整数的最大公约数(10分)见题末
用随机函数生成两个五位数的正整数,采用辗转相除法,求出它们的最大公约数和最小公倍数。
9、求数列的和(10分)见题末
随机产生一个1-9(包括1和9)的整数a,再随机产生一个5-10(包括5和10)的整数。求数列Sa=a+aa+aaa+…+a…a(n个a)
10、用数组存储矩阵,实现矩阵乘法的运算(10分)见题末
要求:由用户输入正整数m,n,p(均要求小于5),计算机用10以内的随机数生成m行p列的矩阵A和p行n列的矩阵B, 然后计算求出矩阵C=AXB,最后分别按矩阵的排列方式输出矩阵A,B,C。
using System;
namespace ch08
{
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("1.求正整数的阶乘\n2.显示Fibonacci数列\n3.鸡兔同笼求解\n4.百钱买百鸡求解\n5.猴子吃桃求解\n6.超市找零钱方案\n7.计算距离\n8.求两个正整数的最大公约数\n9.求数列的和\n10.用数组存储矩阵,实现矩阵乘法的运算");
for (int o = 1; o <= 20; o++) {
Console.Write("请选择你的题目:");
int i = int.Parse(Console.ReadLine());
if (i > 10 && i < 0)
{
Console.WriteLine("你是来捣乱的吧?");
}
else
switch (i)
{
case 1:
A.jiecheng();
break;
case 2:
B.fibo();
break;
case 3:
C.jitu();
break;
case 4:
D.baiji();
break;
case 5:
E.monkey();
break;
case 6:
F.shopping();
break;
case 7:
G.juli();
break;
case 8:
H.gy();
break;
case 9:
I.qiuhe();
break;
case 10:
J.juz();
break;
}
}
Console.WriteLine("任意键退出");
Console.ReadKey();
}
}
class A
{
public static void jiecheng()
{
Console.Write("请输入一个正整数n,稍后为你求出其阶乘:");
int n = 1;
int i = 1;
string shuru = Console.ReadLine();
int zhong = short.Parse(shuru);
for ( i = 1; i <= zhong; i++)
{
n = n * i;
}
Console.WriteLine("{0}", n);
Console.WriteLine("任意键后使用while语句再次求值:");
Console.ReadKey();
while (i <= zhong)
{
n = n * i;
i++;
}
Console.WriteLine("{0}", n);
Console.WriteLine("任意键后退出");
Console.ReadKey();
}
}
class B
{
public static void fibo()
{
int f1 = 1, f2 = 1;
for (int i = 1; f2 <10000; i++)
{
Console.Write("{0,5}\t{1,5}\t",f1,f2);
if (i % 5 == 0)
Console.WriteLine();
f1 += f2; f2 += f1;
}
}
}
class C
{
public static void jitu()
{
Console.WriteLine("按任意键进入方程法");
Console.ReadKey();
Console.WriteLine("请输入鸡兔的总数:");
int y = int.Parse(Console.ReadLine());
Console.WriteLine("请输入鸡兔的总腿:");
int x = int.Parse(Console.ReadLine());
int j, t;
j = (4*y-x)/2;
t = y-j;
if (x % 2 != 0 || j < 0 || t < 0)
{
Console.WriteLine("输入的量有问题");
}
else
{
Console.WriteLine("鸡有{0},兔有{1}",j,t);
Console.WriteLine("按任意键进入穷举法");
Console.ReadKey();
bool qiong = false;
int xj = 0, xt = 0;
for (int i = 1; i <= y; i++)
{
if (2 * i + 4 * (y - i) == x)
{
xj = i;xt = y- i;
qiong = true;
}
}
if (qiong)
{
Console.WriteLine("鸡有{0},兔有{1}", xj, xt);
}
}
}
}
class D
{
public static void baiji()
{
int gong, mu, xiao;
int sum=100, allmoney=100;
for (gong = 1; gong <= 20; gong++)
{
for (mu = 1; mu <= 33; mu++)
{
xiao = sum - gong - mu;
if (xiao % 3 != 0) continue;
int money = gong * 5 + mu * 3 + xiao / 3;
if (money == allmoney)
{
Console.WriteLine("公鸡若有{0}只,则母鸡有{1},小鸡有{2}", gong, mu, xiao);
Console.WriteLine("任意键继续");
Console.ReadKey();
}
}
}
}
}
class E
{
public static void monkey()
{
int o = 1;
for (int i = 1; i <= 8; i++)
{
o = o * 2 + 1;
}
Console.WriteLine("一共有{0}个桃子", o);
}
}
class F
{
public static void shopping()
{
Console.WriteLine("请输入找零金额:");
int money = int.Parse(Console.ReadLine());
if (money == 0)
{
Console.WriteLine("不需要找零。");
return;
}
int hundred = money / 100;
money %= 100;
int fifty = money / 50;
money %= 50;
int twenty = money / 20;
money %= 20;
int ten = money / 10;
money %= 10;
int five = money / 5;
money %= 5;
int one = money / 1;
money %= 1;
Console.WriteLine("100元需要{0}张,50元需要{1}张,20元需要{2}张,10元需要{3}张,5元需要{4}张,1元需要{5}张", hundred, fifty, twenty, ten, five, one);
}
}
class G
{
public static void juli()
{
double t;
double sum =100;
for (int i = 1; i <= 10; i++)
{
t = 100 * Math.Pow(0.5,i);
sum += t;
Console.WriteLine("高度为{0},{1}", t, sum);
}
Console.ReadKey();
}
}
class H
{
static int GCD(int m, int n)
{
int r, t;
if (m < n)
{
t = n;
n = m;
m = t;
}
while (n != 0)
{
r = m % n;
m = n;
n = r;
}
return (m);
}
public static void gy()
{
int yy;
Random ran = new Random();
int num2 = ran.Next(10000, 99999);
int num1 = ran.Next(10000, 99999);
num2 = Convert.ToInt32(Console.ReadLine());
yy = GCD(num1, num2);
Console.WriteLine("最大公约数为:{0} 最小公倍数为{1}",yy,num1* num2/ yy);
Console.ReadKey();
}
}
class I
{
public static void qiuhe()
{
Random ran = new Random();
int a = ran.Next(1, 9);
int n = ran.Next(5, 10);
int Sa = 0, now = 0;
for (int i = 1; i <= n; i++)
{
now = now * 10 + a;
Sa += now;
}
Console.WriteLine("生成的a为{0},生成的n为{1},数列的和Sa为 {2}", a, n, Sa);
}
}
class J
{
public static void juz()
{
Console.WriteLine("请输入正整数m:");
int m = int.Parse(Console.ReadLine());
Console.WriteLine("请输入正整数n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("请输入正整数p:");
int p = int.Parse(Console.ReadLine());
if (m < 5 && n < 5 && p < 5)
{
int[,] a = new int[10, 10];
int[,] b = new int[10, 10];
int[,] c = new int[10, 10];
Random ran = new Random();
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= p; j++)
{
a[i, j] = ran.Next(0, 10);
}
}
Console.WriteLine("生成的A数组为:");
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= p; j++)
{
Console.Write("{0} ", a[i, j]);
}
Console.WriteLine("");
}
for (int i = 1; i <= p; i++)
{
for (int j = 1; j <= n; j++)
{
b[i, j] = ran.Next(0, 10);
}
}
Console.WriteLine("生成的B数组为:");
for (int i = 1; i <= p; i++)
{
for (int j = 1; j <= n; j++)
{
Console.Write("{0} ", b[i, j]);
}
Console.WriteLine("");
}
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= p; k++)
{
c[i, j] += a[i, k] * b[k, j];
}
}
}
Console.WriteLine("得到的C数组为:");
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
Console.Write("{0} ", c[i, j]);
}
Console.WriteLine("");
}
}
else
{
Console.WriteLine("请输入5以内的数字");
}
Console.WriteLine("任意键结束");
Console.ReadKey();
}
}
}