跟siki老师学C#第四天(练习部分)

来源:互联网 发布:用单片机做自动浇花 编辑:程序博客网 时间:2024/04/19 18:34

学习了分支和循环以及跳出循环的方法,接下来十三道小练习奉上:

1.编写一个程序,对输入的四个整数,求出最大值、最小值,并打印出来显示在控制台上;

Console.WriteLine("请输入四个整数:");int num1 = Convert.ToInt32(Console.ReadLine());int num2 = Convert.ToInt32(Console.ReadLine());int num3 = Convert.ToInt32(Console.ReadLine());int num4 = Convert.ToInt32(Console.ReadLine());int max,min;/最大值if (num1 > num2){    max = num1;}else{    max = num2;}if (num3 > max){    max = num3;}if (num4 > max){    max = num4;}Console.WriteLine("最大值为"+max);if (num1 < num2){    min = num1;}else{    min = num2;}if (num3 < min){    min = num3;}if (num4 < min){    min = num4;}Console.WriteLine("最小值为"+min);

这里通过一个中间变量进行比较,就不用那么麻烦了。

2.让用户输入两个整数,再输入0-2中的一个数,0表示+、1表示-、2表示*;

Console.WriteLine("请输入两个整数:");int num1 = Convert.ToInt32(Console.ReadLine());int num2 = Convert.ToInt32(Console.ReadLine());Console.WriteLine("请输入运算符(0表示+、1表示-、2表示*):");switch(Console.ReadLine()){    case "0":        Console.WriteLine("结果为:{0}+{1}={2}",num1,num2,num1+num2);        break;    case "1":        Console.WriteLine("结果是:{0}-{1}={2}",num1,num2,num1-num2);        break;    case "2":        Console.WriteLine("结果是:{0}*{1}={2}",num1,num2,num1*num2);        break;}

这里写图片描述

3.求出1-1000之间所有能被7整除的数,并计算和输出每五个的和;

int sum = 0;   //用来计算和int num = 0;   //用来统计是不是每五个for (int i = 1; i <= 1000;i++ ){    if(i%7==0)    {        sum += i;        num++;        if(num==5)        {            num = 0;            Console.WriteLine("当前五个的和是:"+sum);            sum = 0;        }    }}

这里写图片描述

4.编写一个控制台应用程序,要求输出1-100之间的平方根、立方根

//平方根for(int i=1;i<=100;i++){    if(i*i<=100)    {        Console.WriteLine("1-100之间的平方根有:"+i);    }}//立方根for (int i = 1; i <= 100;i++ ){    if(i*i*i<=100)    {        Console.WriteLine("1-100之间的立方根有:"+i);    }}

这里写图片描述

5.兔子繁殖问题:设有一对新生兔子,从第三个月开始它们每个月都生一对新兔子,新生的兔子从第三个月开始又每个月生一对兔子,按此规律,假设兔子不死亡,20个月后一共有多少只兔子?

6.编程输出1-100之间能被3整除但不能被5整除的数字,并统计其个数;

int num = 0;for (int i = 1; i <= 100;i++ ){    if(i%3==0&&i%5!=0)    {        Console.WriteLine("能被3整除但不能被5整除的数字有:"+i);        num++;    }}Console.WriteLine("能被3整除但不能被5整除的数字共有{0}个!",num);

这里写图片描述
7.编程输出100以内的所有素数;

for (int i = 2; i <= 100; i++)   //最小的素数是2,所以从2开始{    bool isPrime = true;  //默认一个数是素数    for (int j = 2; j <= i-1; j++)    //遍历除了1和它本身之外的数字    {        if (i % j == 0)        {            isPrime = false;   //一旦存在有其他数字可以被整除,当前数字就不是素数,同时跳出当前循环            break;        }    }    if (isPrime == true)   //如果当前的i遍历了除1和本身外的所有数字,都不能被整除,那它就是素数    {        Console.WriteLine(i+"是素数之一!");    }}

这里写图片描述
8.编程输出九九乘法表;

for (int i = 1; i <= 9;i++ ){    for (int j = 1; j <= i; j++)    {        Console.Write("{0}*{1}={2} ",i,j,i*j);        if(i==j)        {            Console.WriteLine();        }    }}

这里写图片描述
9.输出1-5的平方值,分别用for、while和do while实现

//for循环:for (int i = 1; i <= 5;i++ ) {    Console.WriteLine("{0}的平方值为{1}!",i,i*i);}//while循环:int j = 1;while (j <= 5){    Console.WriteLine("{0}的平方值为{1}!", j, j * j);    j++;}//do-while循环int a = 1;do{    Console.WriteLine("{0}的平方值为{1}!", a, a * a);    a++;} while (a <= 5);

10.要求用户输入5个大写字母,如果用户输入的信息不满足要求,提示帮助信息并要求重新输入;
(题目的意思是用户输入一个五个字母的字符串,这个字符串要求五个字母都是大写,否则重新输入。)

Console.WriteLine("请输入一个字符串:");string str = Console.ReadLine();for (int i = 0; i <= str.Length - 1; i++){    int numOfLetter=str[i];    if(numOfLetter>=65&&numOfLetter<=91)    {        continue;    }    else    {        Console.WriteLine("您输入的字符串中第{0}个字符是除大写外的其他字符!",i+1);    }}

这里注意三点:1.str.Length表示字符串str的长度,是int类型的整型数值;2.str[i]表示字符串str中第i-1个字符,因为编号是从0开始的;3.int numOfLetter=str[i]表示某个字符在Ascall码表中的数字,我们正是通过这个数字来判断该字符是不是大写字符的。
这里写图片描述
11.编写一个掷骰子100次的游戏并打印出各种点数出现的次数

Random ran = new Random();int point1 = 0, point2 = 0, point3 = 0, point4 = 0,point5=0,point6=0;for (int i = 1; i <= 100; i++){    switch (ran.Next(1, 7))    {        case 1:            point1++;            break;        case 2:            point2++;            break;        case 3:            point3++;            break;        case 4:            point4++;            break;        case 5:            point5++;            break;        case 6:            point6++;            break;    }}Console.WriteLine("在100次投掷中,\n1点出现了{0}次;\n2点出现了{1}次;\n3点出现了{2}次;\n4点出现了{3}次;\n5点出现了{4}次;\n6点出现了{5}次!",point1,point2,point3,point4,point5,point6);

这里用到了Random类,用于产生随机数。
这里写图片描述

12.接收一个整数n,如果为正数,输出1-n之间的所有整数,如果为负数,终止程序,如果是0的话,要求重新输入;

while (true)//利用while的特性构成一个死循环{    Console.WriteLine("请输入一个整数n:");    int num = Convert.ToInt32(Console.ReadLine());    if(num==0)//如果等于0,再来一次    {        continue;    }    else    {        if(num<0)        {            break;//如果小于0,直接跳出while循环        }        else        {            for (int i = 1; i <= num; i++)            {                Console.WriteLine(i);//满足条件时,输出所有数字            }            break;//最终跳出        }    }}

这里写图片描述
13.求1000以内的所有“完数”。“完数”:等于所有因子(除自身以外)之和的数字。

for (int i = 1; i <= 1000; i++){    int sum = 1;   //因为1是所有正数的因子,所以这里sum初始值为1    for (int j = 2; j <= i-1; j++)   //那么这里就要从2开始了,因为1已经是因子而且已经存在在sum中了    {        if (i % j == 0)        {            sum += j;        }    }    if (sum == i)    {        Console.WriteLine("{0}是完数!", i);    }}

这个输出是因为第一次写的时候设置sum=0,j=1开始执行的:
这里写图片描述

修改成程序段里面的形式之后:
这里写图片描述
可以看出,完数1也被归纳进来了。

以上就是十二道练习题,第五道的知识暂时还没学到,先放一放,等学习了递归再来看看吧,for循环我还没相通应该怎么做。

这些练习中的一些思想值得回顾。
题目都是基本的,很简单。
简单的不会并不可耻,不会却又不学,还要不懂装懂、自欺欺人,这才最可耻。

0 0