有的时候需要多次运行同一块代码而且代码量很大的情况下会运用循环,语句按顺序依次执行。
编程语言提供了允许更为复杂的执行路径的多种控制路径,编程语言:允许多次执行一个语句或语句组。
循环类型
C#中分为四种循环,现在简单介绍类型的细节。
第一种:while 循环
代码格式:
while(循环条件) { 循环体 } //循环条件为true,执行循环体代码,在进行判断条件是否满足,条件为true继续循环,条件不满足为false则终止循环。(会把导致循环条件发生变化的语句放在循环体中,例如:i++,i--)。
例题: 错误示范: int times=0; while(times<100) { Console.Write("你好"); }//此时为死循环,永远times为0,没有放入可以让循环条件发生变化的语句 正确示范: int times=0; while(times<100) { Console.Write("你好"); times++; }//此时的times++为条件变化语句。
第二种:do while循环
代码格式: do { 循环体 } while(循环条件);//此时的循环体,至少循环一次。 //先执行一次循环体,然后判断循环的条件是否满足,为true继续循环直到判断条件不满足为false时终止循环。(do while和while形式差不多)。
第三种:for 循环
for循环不管在C#中还是在JS或者Java中通用,一篇代码中与if判断语句用的最多的。所以这一部分一定要领略,for循环要抽象一些循环N次,而if语句只要条件bool值判断真假就可进入执行。
代码格式: for(表达式1;循环条件;表达式2) { 循环体 } //表达式2中放导致循环条件发生变化的语句。 //先运行表达式1,判断是否满足循环条件,满足为true就执行循环体代码,再运行表达式2,最后再判断是否满足循环条件,满足为真继续循环,不满足为假则终止循环
例1: for(int x=1;x<=10;x++) { Console.WriteLine("*"); }//输出1-10 个星号 例2: for(int a=10;a<20;a=a+1) { Console.Write(a); }//输出10-19的数字 例3: int sum=0;//设一个总和为sum,都从0 开始计算 for(int i=1;i<100;i++) { sum+=i; } Console.Write("所有数字之和:"+sum);//输出1-100所有数字总和 例4: for(int x=1;x<=10;x++) { Console.Write("十以内所有数字"+x); }
第四种:嵌套循环
嵌套:指相互镶嵌套用来实现更复杂的代码
可以在while,do while,for 循环中使用一个或多个循环体。
例1: int a=0;//为奇数时循环的次数 int num=0;//总和 for(int i=1;i<=100;i++) { if(i%2!=0)//判断不能被2整除的为奇数 { a++; num+=i; } } Console.write(a); Console.write(" 奇数之和:"+num);//实现1-100的奇数之和 } 例2: for(int nums=100;nums<=999;nums++) { int b=nums/100%10;//百位数字,先除取整数再取余 int s=nums/10%10;//十位 int g=nums%10;//个位 if(nums==b*b*b+s*s*s+g*g*g)//水仙花算法 { Console.Write("所有水仙花数:"+nums); }//实现100-999之间的水仙花数 例3: for(int numbers=1;numbers<=10;numbers++) { if(numbers%2==0){//运用取余为0,来判断能被2整除的为偶数 Console.Write("偶数:"+numbers); } } 例4:for(int x=1;x<10;x++) { for(int y=x;y<10;y++) { Console.WriteLine(x+"*"+y+"="+(x*y)); } } Console.ReadLine();//九九乘法表
循环控制语句
控制语句可以控制循环。
① break 语句
可用在switch选择,和所有循环中。表示立即结束switch选择,和终止循环。
1.当break出现在循环中,循环会终止,然后程序会继续执行紧挨着结束了的循环的下一句代码。
2.终止switch内的一个case。
例1: for(int i=1;i<=10;i++) { if(i%2==0) { break; } Console.Write(i); }// 只循环一次,break就终止了,所以最后i=1;
②continue语句
和break有点像,但break是强迫终止,而continue会跳过当前一次循环代码,强迫开始下一次循环。
1.for循环中是跳至下一次循环,while和do while会导致程序控制回到条件测试上。
无限循环
当条件永远不为假,则循环变成无线循环for循环可用于无线循环。
for (;;) { Console.Write("你好"); }//此时程序会无限循环输入你好。在编程中这样写会出错,会加大CPU使用率导致程序瘫痪。 解决办法: for(;;) { Console.Write("你好"); break; }//加入一个强迫终止,终止无限循环,此时会输出一句你好。
【编码题】
1.编写一个温度转换应用,让用户输入一个摄氏温度(整数),将其转换为华氏温度输出(整数)。
公式:华氏温度 = 9/5*摄氏温度 + 32
static void Main(string[] args)
{
Console.Write("请输入一个摄氏温度(为整数):");
int Celsius = int.Parse(Console.ReadLine());
Console.Write("华氏温度为:");
double fa=Celsius*9/5+32;
int Fahrenheit=(int)fa ;
Console.Write(Fahrenheit);
Console.ReadLine();
}
2.实现如下效果:
请输入第一个数:2
请输入第二个数:3
您输入的第一个数比第二个数小。
(斜体有底线 部分为用户输入的数据)
最终的输出结果可能有:
- 您输入的第一个数比第二个数小。
- 您输入的两个数相等。
- 您输入的第一个数比第二个数大。
- static void Main(string[] args)
- {
- Console.Write("请输入第一个整数:");
- int num1=int .Parse( Console.ReadLine());
- Console.Write("请输入第二个整数:");
- int num2= int.Parse(Console.ReadLine());
- string result=num1 ==num2?"两数字相等":num1>num2?"第一个大于第二个":"第一个数小于第二个";
- Console.Write(result);
- Console.ReadLine();
- }
3.提示用户输入当前时间,若小于等于12则输出上午好,若大于12则输出下午好
static void Main(string[] args)
{
Console.Write("请输入当前时间(为整数):");
int time = int.Parse(Console.ReadLine());
string result = time <= 12 ? "上午好" : "下午好";
Console.Write(result );
Console.ReadLine();
}
4. 提示用户输入一个整数,根据用户的输入判断该数字是奇数还是偶数,并输出结果。
static void Main(string[] args)
{
Console.Write("请输入一个整数:");
int num = int.Parse(Console.ReadLine());
int a =num%2;
bool c=a==0;
string d = c ? "偶数" : "奇数";
Console.Write("这个数是:"+d);
Console.ReadLine();
}
5. 实现如下效果:
请输入第一个数:3
请输入第二个数:6
3*6=18
3+6=9
3/6=0.5
3-6=-3
(斜体有底线 部分为用户输入的内容)
static void Main(string[] args)
{
Console.Write ("请输入第一个数:");
int num1=int.Parse(Console.ReadLine());
Console.Write("请输入第二个数:");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine(num2 + " *" + num1 + "=" +( num1 * num2));
Console.WriteLine(num1 +"+"+num2 +"="+(num1 +num2 ));
double x = (double)num1;
6. 写一个while循环,输出100-999之间所有的水仙花数
int num=100;
while (100<=num &&num <999)
{
int x = num / 100 % 10;
int y = num / 10 % 10;
int z = num % 10;
if (num == x * x * x + y * y * y + z * z * z)
{
Console.WriteLine(num );
}
num++;