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

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

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;
}

跟siki老师学C#第四天(练习部分)_第1张图片

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;
        }
    }
}

跟siki老师学C#第四天(练习部分)_第2张图片

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);
    }
}

跟siki老师学C#第四天(练习部分)_第3张图片

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);

跟siki老师学C#第四天(练习部分)_第4张图片
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+"是素数之一!");
    }
}

跟siki老师学C#第四天(练习部分)_第5张图片
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();
        }
    }
}

跟siki老师学C#第四天(练习部分)_第6张图片
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码表中的数字,我们正是通过这个数字来判断该字符是不是大写字符的。
跟siki老师学C#第四天(练习部分)_第7张图片
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类,用于产生随机数。
跟siki老师学C#第四天(练习部分)_第8张图片

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;//最终跳出
        }
    }
}

跟siki老师学C#第四天(练习部分)_第9张图片
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开始执行的:
跟siki老师学C#第四天(练习部分)_第10张图片

修改成程序段里面的形式之后:
跟siki老师学C#第四天(练习部分)_第11张图片
可以看出,完数1也被归纳进来了。

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

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

你可能感兴趣的:(C#)