循环语句
-
while语句
int i = 1; //初始化 while(i <= 10) // 判断部分 { printf("%d",i); i++; //调整部分 }
-
break语句和continue语句的区别
break; 跳出循环
continue; 跳过本次循环,注意一下不要陷入死循环
-
-
补充:getchar( ) ; 和putchar()
getchar(); 获取一个字符,返回值由整型接收(字符是以ASCII码形式存储)
putchar(); 输出一个字符,
EOF:-1,文件的结束标志
int a = getchar(); int char = 0; while((char=getchar())!=EOF){ putchar(cahr); }
清空缓冲区
while((char=getchar())!=EOF) { ; }
如果不清空缓冲区,可能会导致缓冲区内有数据,导致后面操作错误
例如:int main(){ int arr[10] = {0}; printf("请输入密码"); //123456 scanf("%d",arr); printf("请确认密码 Y/N"); int char = getchar(); if(char== 'Y') printf("确认成功"); else printf("确认失败"); return 0; } /*输出结果为: 请输入密码:123456 请确认密码:确认失败*/ //原因是:再输入完密码后,缓冲区内还有\n存在,因此getchar(),此时就会获取\n,又由于\n不等于‘Y’,因此会直接返回,确认失败
改正:
int main(){ int arr[10] = {0}; printf("请输入密码"); //123456 scanf("%d",arr); printf("请确认密码 Y/N"); getchar(); //这里用一个getchar(),消耗掉缓冲区的\n int char = getchar(); if(char== 'Y') printf("确认成功"); else printf("确认失败"); return 0; }
以上改正消耗掉了一个缓冲区的字符,但有的时候缓冲区内不止一个多余字符,因此再加以改正
改正2.0:
int main(){ int arr[10] = {0}; printf("请输入密码"); //123456 scanf("%d",arr); printf("请确认密码 Y/N"); int ch = 0; while((ch=getchar())!='\n') //利用循环,消除缓冲区内的多余字符 { ; } int char = getchar(); if(char== 'Y') printf("确认成功"); else printf("确认失败"); return 0; }
-
for循环
for(表达式1;表达式2;表达式3) /*表达式1:初始化 表达式2:条件判断 表达式3:调整语句*/ { 循环语句; }
-
两个建议:
1.不可在for 循环体内修改循环变量,防止for 循环失去控制
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法
-
for循环内省略问题:
int main(){ int i = 0; int j = 0; for(;i < 3; i++){ for(; j <3; j++){ printf("hehe\n"); //这里指挥打印三次hehe, /*因为内层for循环内有省略,使得再第一次i=0,时j=0,1,2,3;共计打印三次, 而当i=1,时,j已经=3,故不再打印hehe*/ } } return 0; }
-
-
do while语句
do 循环语句; while(条件判断);
先执行再判断
特点:循环体至少执行一次