学习了分支和循环以及跳出循环的方法,接下来十三道小练习奉上:
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);
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+"是素数之一!");
}
}
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);
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循环我还没相通应该怎么做。
这些练习中的一些思想值得回顾。
题目都是基本的,很简单。
简单的不会并不可耻,不会却又不学,还要不懂装懂、自欺欺人,这才最可耻。