2025年【明解C语言】循环语句之while

【明解C语言】循环语句之while目录 一 while 语句 1 语法结构 2 while 语句的三个部分 二 while 语句代码示例 1 在屏幕上输出 1 10 2 while 循环流程图 三 break 循环语句中的作用 四 continue 在循环语句中的作用 五 getchar 函数代码分析 1

大家好,我是讯享网,很高兴认识大家。

目录

一、while语句  

1:语法结构:

2.while语句的三个部分

二、while语句代码示例:

1.在屏幕上输出1~10

2.while循环流程图:

三、break循环语句中的作用

四、continue在循环语句中的作用

五、getchar()函数代码分析

1.getchar()函数

2.putchar()函数

六、登录认证

1.登录认证代码问题

2.输入缓冲区

3.登录认证代码的正确写法:


【明解C语言】之do... while循环_马桶上看算法的博客-CSDN博客C语言、循环语句、初级、编程语言
讯享网https://blog.csdn.net/m0_/article/details/?spm=1001.2014.3001.5501
【明解C语言】之for循环_马桶上看算法的博客-CSDN博客C语言、for循环、编程初级、for循环练习题https://blog.csdn.net/m0_/article/details/?spm=1001.2014.3001.5501

一、while语句  

1:语法结构:

while(表达式) { 循环语句; }

讯享网

表达式如果为非0,表达式结果为真,循环语句要被执行;如果为非0,就不执行。

2.while语句的三个部分

while语句的这三个部分(初始化部分、判断部分、调整部分)任意一个部分发生变化都会影响到循环 

二、while语句代码示例:

1.在屏幕上输出1~10

代码段1:

讯享网#include<stdio.h> int main() { int i = 1; while(i<=10)//i小于等于10进入循环语句 { printf("%d ",i); i++;//自加1 } return 0; }

输出结果:

2.while循环流程图:

三、break循环语句中的作用

代码段2:

#include<stdio.h> int main() { int i = 1; while(i<=10) { if(i==5) { break; } printf("%d ",i); i++; } return 0; } 

输出结果:

 在while循环中,break被用于永久性的终止循环。

四、continue在循环语句中的作用

代码段3:

讯享网#include<stdio.h> int main() { int i = 1; while(i<=10) { if(i==5) { continue; } printf("%d ",i); i++; } return 0; }

输出结果:光标一直闪烁,说明代码还没有结束(死循环)。

在while语句中,continue的作用是跳过本次循环continue后面的代码,直接去判断部分,看是否进行下一次循环。

五、getchar()函数代码分析

1.getchar()函数

代码段4:

#include<stdio.h> //EOF-end of file--文件结束标志 int main() { int ch = getchar(); printf("%c\n",ch); return 0; }

输出结果:

2.putchar()函数

代码段5:

讯享网#include<stdio.h> //EOF-end of file--文件结束标志 int main() { int ch = getchar(); putchar(ch);//输出一个字符 return 0; }

输出结果:

getchar()用于输入,putchar()用于输出。

getchar()读取失败的时候会返回一个EOF。

代码段6:

#include<stdio.h> int main() { int ch = 0; while((ch = getchar())!=EOF) { putchar(ch); } return 0; }

输出结果:输入一个字符,输出一个字符。

在键盘上输入Ctrl+Z的时候getchar读取结束。

代码分析:

 getchar()读取一个字符,放到ch里面去,如果赋完值之后得到的ch内容不等于EOF,说明getchar()读取的是正常的字符,进入while循环的内部,然后putchar()把字符输出。如果ch内容等于EOF,表达式为假,循环结束。

六、登录认证

1.登录认证代码问题

代码段7:

讯享网#include<stdio.h> int main() { char password[20]={0}; printf("请输入密码:>"); scanf("%s",password);// printf("请确认密码:>"); int ch=getchar(); if(ch=='Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } retutn 0; }

password为什么没有&?

password是一个数组,数组的数组名就是一个地址,所以没有&。

输出结果:

 程序还没有输入Y/N就确认失败了,说明程序有问题。

2.输入缓冲区

getchar()和scanf()输入函数不是直接从键盘上获得数据的,而是去之间的缓冲区里拿数据,如果发现缓冲区里没有数据它就会等待,等待从键盘上输入数据到缓冲区里,如果getchar()或scanf()发现缓冲区里有数据,它就会拿走。

从键盘上输入\n

回车会触发scanf()读内容,敲一个回车把放到缓冲区里,然后scanf()才会去读取信息,scanf()只会拿,不会拿\n,会把放到数组里去。

getchar()把\n拿走了,放到了ch(判断条件)里面。

ch就是\n了,\n不等于'Y',所以就走了else,也就是确认失败。

3.登录认证代码的正确写法:

要把缓冲区里的\n拿走才可以选择输入Y或N,getchar()是用来处理\n的,可以清理缓冲区。

代码段8:

#include<stdio.h> int main() { char password[20]={0}; printf("请输入密码:>"); scanf("%s",password);// printf("请确认密码:>"); //清理缓冲区 getchar();//处理'\n' int ch=getchar(); if(ch=='Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } retutn 0; }

输出结果:

代码段9:

讯享网#include<stdio.h> int main() { char password[20]={0}; printf("请输入密码:>"); // abcdef scanf("%s",password); printf("请确认密码:>"); //清理缓冲区 getchar();//处理'\n' int ch=getchar(); if(ch=='Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } retutn 0; }

输出结果: 


小讯
上一篇 2025-04-06 15:02
下一篇 2025-01-04 16:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/11844.html