C语言第9天,循环结构和多重选择switch


一、循环函数

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

(0)
上一篇 2022年9月15日 20:05
下一篇 2022年9月15日 20:05

相关推荐

发表回复

登录后才能评论