目录
一、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; }
输出结果:

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