概述
#while
##while的简单语法规则
while (判断条件) {
循环体;
}
###练习
- 例一
用一个循环来求出前n项和
#include<stdio.h>
int main(void)
{
int i;
int sum=0;
/*
for(i=1;i<101;i++)
sum=sum+i;
printf("%d",sum) ;
*/
i=1;
while(i<101){
sum=sum+i;
++i;
}
printf("%d",sum);
return 0;
}
2.例二
利用循环输出0-9之间的数字
#include<stdio.h>
int main(void) {
int ch = 0;
while ((ch = getchar()) != EOF) {
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
//输入0——9之外的数,输出空格,输入0——9,输出输入的值
return 0;
}
3.getchar()的用法
getchar——从键盘读取字符的函数
#include<stdio.h>
int main(void) {
int ch = 0;
while ((ch = getchar()) != EOF)//EOF=End Of File=-1;
{
putchar(ch);
//CTRL+Z为文件结束标志
}
意思是
getchar先读取一个字符放到ch里面去,如果这个字符不等于EOF,就进入循环,打印这个字符。当getchar读到文件末尾或者结束时,它会返回一个EOF,此时结束
循环。
当我们想要结束时,输入ctrl+Z,再按回车即可
getchar的实例联系:
#include<stdio.h>
int main(void) {
char password[20] = { 0 };
int ret = 0;
printf("请输入密码:>");
scanf_s("%s", password);//读取密码,并放在passward数组中
//缓冲区还剩余n,读取后可恢复正常
printf("请确认(Y/N):>");
ret = getchar();
if (ret == 'Y')
printf("确认成功");
else
printf("确认失败");
return 0;
}
结果为输入密码后未进行确认,默认确认失败
原因利用scanf输入密码后,按下了回车键,scanf取走了缓冲区的密码,还剩余n被getchar取走
正确做法为清空缓冲区,即
char password[20] = { 0 };
int ret = 0;
int ch = 0;
printf("请输入密码:>");
scanf_s("%s", &password);//读取密码,并放在passward数组中
//缓冲区还剩余n,读取后可恢复正常
while ((ch = getchar()) != 'n');
printf("请确认(Y/N):>");
ret = getchar();
if (ret == 'Y')
printf("确认成功");
else
printf("确认失败");
4.contiune和break的应用
continue代表跳过后续步骤,进行下一次循环
#include<stdio.h>
int main(void) {
int i = 0;
while (i <=10)
{
if (i == 5)
continue;
printf("%d", i);
i++;
}
return 0;
}
输出结果:0 1 2 3 4,原因:当i==5时,陷入死循环
#include<stdio.h>
int main(void) {
int i = 0;
while (i <=10)
{
if (i == 5)
break;
printf("%d", i);
i++;
}
return 0;
}
输出结果:0 1 2 3 4
i==5时,跳出循环,运行结束
#for循环
##for的简单语法规则
for(赋值;判断;调整)
{
循环体;
}
###练习
1.单个for的使用
#include<stdio.h>
int main() {
int i = 0;
for (i = 1; i <= 5; i++) {
printf("ahahahahhan");
}
return 0;
}
2.for的嵌套使用
#include<stdio.h>
int main(void) {
int i, j;
for (i = 0; i < 3; ++i) //循环三次
for (j = 2; j < 5; ++j) //循环三次
printf("ahahahhn");//输出9此
printf("hhhhhhhn");//输出一次
return 0;
}
输出结果为
ahahahh
ahahahh
ahahahh
ahahahh
ahahahh
ahahahh
ahahahh
ahahahh
ahahahh
hhhhhhh
--------------------------------
Process exited after 0.03344 seconds with return value 0
请按任意键继续. . .
注意有多个for循环时,要区分所属循环语句
3.for的变种
#include<stdio.h>
int main(void) {
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, ++y)
printf("HEHEHn");
return 0;
}
结果为
`HEHEH
HEHEH
Process exited after 0.02551 seconds with return value 0
请按任意键继续. . .
`
#do while循环
#do while循环的语法规则
do
{
} while (表达式) ;
```
###举例
1.
```c
#include<stdio.h>
int main(){
int i=1;
do{
printf("%dn",i);
i++;
}
while(i<12);
return 0;
}
```
输出结果为1 2 3 4 5 6 7 8 9 10 11
2.do... while.并不等价于for,当然也不等价于while主要用于人机交互
进阶应用
```c
#include<stdio.h>
#include<math.h>
int main(void){
double a,b,c;
double delta;
double x1,x2;
char ch ;
do{
printf("请依次输入a,b,c的值n");
//printf("a=%lf,b=%lf,c=%lfn",a,b,c);
//scanf("%lf,%lf,%lf",a,b,c);
printf("a的值为");
scanf("%lf",&a);
printf("b的值为");
scanf("%lf",&b);
printf("c的值为");
scanf("%lf",&c);
delta=b*b-4*a*c;
if(delta>0){
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("x1=%lf,x2=%lf",x1,x2);
}
else if(delta==0){
x1=x2=(-b)/(2*a);
printf("x1=x2=%lf",x1,x2);
}
else
printf("GUnn");
printf("还要继续不(Y/N)n");
scanf(" %c",&
ch);
}
while('y'==ch||'Y'==ch);
return 0;
}
```
可实现多次判断
最后
以上就是腼腆蜡烛为你收集整理的【循环总结】For循环,while循环,do while循环的全部内容,希望文章能够帮你解决【循环总结】For循环,while循环,do while循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复