循环语句 (一)
语句:
1、顺序语句
2、分支语句
3、循环语句
三种循环语句:
for
while
foreach
循环四要素:
初始条件,循环条件,循环体,状态改变
for(初始条件;循环条件;状态改变)
{
循环体;
}
基本结构:
for (int i = 1; i <= 10; i++)
初始条件; 循环条件; 状态改变
{
Console.WriteLine("hello world!" + i);
循环体;
}
最容易晕的地方:
1、到低循环几遍
起始条件为第一遍循环,若循环条件为“<=”,则比循环条件“<”多循环一遍。
2、循环条件表达式的写法 :
"i < 某一值" 或"i > 某一值"或"i <= 某一值"或"i >= 某一值";
不可写作"i == 某一值"或"i = 某一值"
----------------------------------------------------------------------------------------------
死循环:
for(;;)
{
}
while(循环条件true)
{
}
跳转语句:
break; 只要程序在循环中看到这句话,就会立刻终止循环并且跳出循环;
continue; 只要程序在循环中看到这句话,就会立刻终止此次循环;
return;//用在函数里
while循环的写法
循环初始条件
while(循环条件)
{
循环体
状态改变
}
----------------------------------------------------------------------------------------------
练习题:
1、
用户输入一个整数;然后计算从1 — n的总和;
例如输入了一个5,结果就是1+2+3+4+5;
//1、接收用户输入进来的数 Console.Write("请输入一个整数:"); int a = Convert.ToInt32(Console.ReadLine()); int sum = 0; //2、累加求和 for (int i = 1; i <= a; i++) { sum += i; } //3、打印 Console.WriteLine(sum);
Console.ReadLine(),
2、
让用户循环操作,用户输入一个正整数(0-20),
如果小于0或大于20都提示输入错误,
如果输入的是0-20之间的数,那么就打印从0到这个数的累加求和,
一共需要用户输入3遍,输入错误不计入这3遍操作当中
int count = 0; for (; ; )//不知道用户该输入多少次,所以用死循环 { //1、接收用户输入的值 Console.Write("请输入一个0-20的整数:"); int a = Convert.ToInt32(Console.ReadLine()); int sum = 0; //2、判断值是否输入有误 if (a < 0 || a > 20) { Console.Write("输入有误!"); } else { //3、如果输入没有错,那么就进行累加求和并打印 //记录打印的次数,如果到了3次,就跳出循环 for (int i = 0; i <= a; i++) { sum += i; } Console.WriteLine(sum); count++; Console.WriteLine("当前执行第" + count + "次。"); if (count == 3) { break; } } } Console.ReadLine();
3、
打印 你好 20遍,
格式为:
1、你好 2、你好 3、你好 .... 20、你好
for (int i = 1; i <= 20; i++) { Console.WriteLine(i + "、" + "你好"); } Console.ReadLine();
4、
闯关:(一共100关)
前20关,每一关都是自己的分数;
21-50关,都是20分;
51-100关,都是30分。
求:
最后100关都闯过后的总分数。
int s = 0; //1、循环100关 for (int i = 1; i <= 100; i++)//起始条件为第一遍循环,若循环条件为“<=”,则比循环条件“<”多循环一遍。 { //2、累加某一关卡数的总得分 if (i <= 20)//1—20关的分数 { s += i; } else if (i <= 50)//21—50关的分数 { s += 20; } else //51—100关的分数 { s += 30; } } Console.WriteLine(s); Console.ReadKey();
5、
打印 10遍 “你好”
要求:
使用 “i--”的循环状态
for (int i = 10; i > 0; i--) { Console.WriteLine(i + "你好"); } Console.ReadKey();
6、
用户输入姓名,然后打印此人的年龄,从1岁-18岁,每一岁占一行;
打印内容为:
“我今年xxx岁了!”;
当6岁时增加打印“我上小学了!”;
当11岁时增加打印“我上初中了!”;
当15岁时增加打印“我上高中了!”;
当18岁时增加打印“我成年了!考上了北大!”;
//1、接收用户输入的姓名信息 Console.Write("请输入姓名:"); Console.ReadLine(); //2、循环 for (int i = 1; i <= 18; i++) { if (i == 6)//判断年龄是不是6岁 { Console.WriteLine("我今年" + i + "岁了。我上小学了!"); } else if (i == 11)//判断年龄是不是11岁 { Console.WriteLine("我今年" + i + "岁了。我上初中了!"); } else if (i == 15)//判断年龄是不是15岁 { Console.WriteLine("我今年" + i + "岁了。我上高中了!"); } else if (i == 18)//判断年龄是不是18岁 { Console.WriteLine("我今年" + i + "岁了。我成年了,我上北大了!"); } else { Console.WriteLine("我今年" + i + "岁了。"); } } Console.ReadKey();
7、
随机抽取一个手机号
//1、提示用户,按空格键开始随机选号码; Console.Write("请输入随机抽奖的秒数:"); int s = int.Parse(Console.ReadLine()); int ss = 0;//已经执行的秒数 Console.WriteLine("按空格键开始抽奖!"); ConsoleKeyInfo info = Console.ReadKey(); if (info.Key.ToString() == "Spacebar") { Random r = new Random(); //2、持续滚动手机号码; for (; ; ) { Thread.Sleep(100); string phone = "1"; phone += r.Next(10000, 99999); phone += r.Next(10000, 99999); Console.Clear(); Console.WriteLine(phone);
ss += 100; if (ss == s * 1000) {break; } } } Console.ReadLine();
8、
用户输入一个字母,打印从A到这个英文字母之间的全部字母,包含用户输入的字母
char a ='a'; for (int i = 1; i <= 26; i++) { Console.WriteLine(a); b++; }
Console.ReadKey();
9、
用户输入一个字母,如D,那么就打印 ABCDCBA
//1、接收用户输入的字母 Console.Write("请输入一个字母:"); char a = Convert.ToChar(Console.ReadLine()); char b = 'a'; bool isok = true; //判断b是该++还是-- //2、拼接要打印的内容 for (int i = 0; i < 26; i++) { Console.Write(b); if (b == a) { isok = false; } if (isok) { b++; } else { b--; if (b == 'a' || b == 'A') { Console.Write(b); break; } } } //3、打印 Console.ReadLine();
10、
一张纸,对折几次可以达到珠穆朗玛峰的高度?
一张纸为3微米,10微米为1毫米,珠峰高度为8848米
需要折多少次,折完之后这张纸的厚度是多少米
long page = 3; //单位是微米 long feng = 8848000000; int count = 0;//记录折的次数 while (true) { page *= 2; count++; if (page >= feng) { Console.WriteLine(page); Console.WriteLine(feng); Console.WriteLine(count); break; } } Console.ReadLine();