一、循环函数
1.while循环
和if一样,while也仅对其后一条语句产生效果,不能加分号。
while(测试条件)
{循环行为1;
循环行为2;
循环行为3;
…}
例题:求1+2+3+4+…+100
#include<stdio.h>
int main()
{
int i = 1, sum = 0;
while (i <= 100)
{
sum = i + sum;
i++;
}
return 0;
}
输出结果为i=101 sum=5050
在表达式求值过程中,除了0为假,其他数字都为真。
如果你的程序陷入了死循环,或者你想打断程序的执行,可以按组合键Ctrl+C让程序停止运行。
2.for循环
for循环为while循环更为紧凑的一种写法,只有细微不同
for(计数器设置初始值;循环条件;计数器更新)
{循环行为1;
循环行为2;
循环行为3;
…;}
依旧是上述例子
#include<stdio.h>
int main()
{
int i, sum = 0;
for (i = 1; i <= 100; i++)
sum = i + sum;
printf(“i=%d sum=%d/n”, i, sum);
return 0;
}
若不在for函数外定义i,那么i仅会当成计数器使用,循环结束后将失效
如果你仅仅想写一个死循环,你可以将3个条件都不写。或者写一个永远为真的表达式。以下3个均为死循环。但是while循环不能省略循环条件。
1.for(;;) 2.for(;100;0) 3.while(100)
循环行为 循环行为 循环行为
3.do while循环
与while不同的是,do while循环将先进行一次循环再判断是否符合循环条件
#include<stdio.h>
int main()
{
int x;
do
scanf(“%d”, & x);
while (x < 0);//在do while后面需要加;
printf(“%d/n”, x);
return 0;
}
该程序直到你输入正数或者0才结束
二、循环嵌套
#include<stdio.h>
int main()
{
for (char c = ‘A’; c <= ‘E’; c++)//外循环:字母由A到E
{
for (int i = 0; i <= 9; i++)//内循环:数字由1到9
printf(“%c%d”, c, i);
printf(“/n”);
}
return 0;
}
输出结果为
A0A1A2A3A4A5A6A7A8A9
B0B1B2B3B4B5B6B7B8B9
C0C1C2C3C4C5C6C7C8C9
D0D1D2D3D4D5D6D7D8D9
E0E1E2E3E4E5E6E7E8E9
三、循环辅助,break和continue
1.break
符合条件时,将打断循环直接跳出循环
输入密码123456,错误时重新输入
#include<stdio.h>
int main()
{
int password;
while (1)
{
scanf(“%d”, &password);
if (password == 123456)
break;//当密码输入正确时,跳出循环
printf(“password error/n”);
}
printf(“welcome back”);
return 0;
}
正常情况下,该while是一个无限循环,但break可以使它在满足条件下结束循环。
2.continue
跳过本次循环内容,并开始下一轮循环
#include<stdio.h>
int main()
{
for (int i = 1; i <= 20; i++)
{
if(i==6)
{
i = 15;
continue;
}
printf(“%d “, i);
}
return 0;
}
输出结果为1 2 3 4 5 16 17 18 19 20,可以看出i=6时重新进行了循环
四、多重选择switch
例题:在航空通讯中,常把一个字母,读成一个对应的单词,要求编写一个程序,输入字母,输出对应单词
#include<stdio.h>
int main()
{char c;
scanf(“%c”,&c);
if(c==’a’)
printf(“alpha/n”);
elseif(c==’b’)
printf(“bravo/n”);
else if(c==’c’)
printf(“charlie/n”);
else if(c==’d’)
printf(“delta/n”);
else if(c==’e’)
printf(“echo/n”);
else if(c==’f’)
printf(“foxtrot/n”);
else if(c==’g’)
printf(“golf/n”);
else
printf(“i don’t know/n”);
return 0;}
可以看到if嵌套可以实现,但使用switch可以使代码更加清晰明了(虽然也不简便)
#include<stdio.h>
int main()
{
char c;
while (1)
{
scanf(“%c”, &c);
switch (c)
{
case’a’:
printf(“alpha/n”);
break;//switch函数会使从符合条件处开始向下执行,会将下面的结果都打印出来,所以需要brake跳出函数
case’b’:
printf(“bravo/n”);
break;
case’c’:
printf(“charlie/n”);
break;
case’d’:
printf(“delta/n”);
break;
case’e’:
printf(“echo/n”);
break;
case’f’:
printf(“foxtrot/n”);
break;
case’g’:
printf(“golf/n”);
break;
default://可以没有default这一项
printf(“i dont’no/n”);
}
getchar();//吸收字符/n,使回车产生的/n被吸收,从而不会出现default
}
return 0;
}
switch(整型表达式)
{case整型常量1:
语句
case整型常量2:
语句
case整型常量3:
语句
case整型常量4:
语句
case整型常量5:
语句
default:语句
…}
字符型也是一种整型
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/289668.html