Hi!这里是渔火。今天我们来讲用while语句和do-while语句实现循环结构。
在C语言中,使用while语句完成不定次数的循环,如果满足循环条件,则反复执行循环体语句,当循环条件不满足时退出循环。while语句在使用时,总是先要判断一个条件,使用可以用while语句实现“当型”循环。while语句的一般形式如下:while(表达式)循环体;。接下来我们来看一个例子。
【由键盘输入一串字符,分别统计输入字符中数字字符、字母字符以及其他字符的个数。】
#include<stdio.h>
//2023.2.5渔火 Linux迷 www.linuxmi.com
int main()
{
int d,l,o;
char ch;
d=l=o=0;
printf("请输入一串字符:");
while((ch=getchar())!='\n')
if((ch>='0')&&(ch<='9'))
d++;
else if ((ch>='a')&&(ch<='z')||(ch>='A')&&(ch<='Z'))
l++;
else
o++;
printf("数字%d个,字母%d个,其他%d个\n",d,l,o);
//2023.2.5渔火 Linux迷 www.linuxmi.com
return 0;
}
运行结果如下://随便输入字母字符数字
分析:按照题意,由键盘输入一行字符是一个重复的动作,每输入一个字符都需要判断属于哪种字符,分别进行统计。若输入的是一个回车符时,程序运行结束。(ch=getchar())!='\n'
不能写成ch=getchar()!='\n'
两者不等价。循环体为为一条完整的if语句,若有多条语句时,必须使用复合语句的形式。while后面的括号“()”不可省略。
在C语言中,do-while语句也用于完成不定次数的循环,与while语句不同的是,do-while语句首先执行一次循环体,然后判断循环条件,如果满足,则反复执行循环语句,否则结束循环。do-while语句的一般形式如下:do 循环体 while(表达式);。接下来我们来看两个例子。
【求自然数的最大公约数和最小公倍数】
#include<stdio.h>
//2023.2.5渔火 Linux迷 www.linuxmi.com
int main()
{
int a,b,r,n,m;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
m=a,n=b;
do
{
r=a%b;
a=b;
b=r;
} while(r!=0);
printf("%d和%d的最大公约数是:%d\n",m,n,a);
printf("最小公倍数是:%d",m*n/a);
//2023.2.5渔火 Linux迷 www.linuxmi.com
return 0;
}
运行结果如下://输入12 72
【输入一个整数,统计该数的位数】
#include<stdio.h>
//2023.2.5渔火 Linux迷 www.linuxmi.com
int main()
{
long n,m;
int count=0;
printf("请输入一个整数:");
scanf("%ld",&n);
m=n;
if(n<0)n=-m;
do{
n=n/10;
count++;
} while(n!=0);
printf("整数%ld有%d位数\n",m,count);
//2023.2.5渔火 Linux迷 www.linuxmi.com
return 0;
}
运行结果如下://输入1235698
许多时候当循环结构中出现多个循环条件时,要求当某个条件满足时会立即结束循环,或者循环结构中根据条件会跳过某些语句继续循环,这就要在循环结构中配合使用break语句和continue语句。
break语句的一般形式如下:break;。当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时便跳出循环。
continue语句的作用是跳过循环体continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if语句一起使用。continue语句的一般形式如下:continue;。我们来看一个用到continue语句的程序设计。
【把1~100之间能被7整除的数,以每行5个的形式在屏幕上输出。】
#include<stdio.h>
//2023.2.5渔火 Linux迷 www.linuxmi.com
int main()
{
int i,n=1;
for(i=1;i<=100;i++)
{
if(i%7!=0)
continue;
printf("%4d",i);
if(n++%5==0)printf("\n");
}
//2023.2.5渔火 Linux迷 www.linuxmi.com
return 0;
}
在C语言中,还有一种可以实现循环控制的语句,即goto语句。goto语句的一般形式如下:goto语句标号;。
说明:语句标号是一个有效的标识符,使用时在语句的后面跟一个“;”出现在函数中某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。语句标号必须与goto语句处于同一个函数中。通常goto语句与if语句连用实现循环控制。大型程序中由于goto语句可能存在不合理的使用,会使程序结构变坏,所以结构化程序设计中,不建议使用goto语句。