【明解C语言】循环语句之while
目录
【明解C语言】之do... while循环_马桶上看算法的博客-CSDN博客C语言、循环语句、初级、编程语言https://blog.csdn.net/m0_63033419/article/details/123704397?spm=1001.2014.3001.5501【明解C语言】之for循环_马桶上看算法的博客-CSDN博客C语言、for循环、编程初级、for循环练习题https://blog.csdn.net/m0_63033419/article/details/123715284?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);//123456
printf("请确认密码:>");
int ch=getchar();
if(ch=='Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
retutn 0;
}
password为什么没有&?
password是一个数组,数组的数组名就是一个地址,所以没有&。
输出结果:
程序还没有输入Y/N就确认失败了,说明程序有问题。
2.输入缓冲区
getchar()和scanf()输入函数不是直接从键盘上获得数据的,而是去之间的缓冲区里拿数据,如果发现缓冲区里没有数据它就会等待,等待从键盘上输入数据到缓冲区里,如果getchar()或scanf()发现缓冲区里有数据,它就会拿走。
从键盘上输入123456\n
回车会触发scanf()读内容,敲一个回车把123456放到缓冲区里,然后scanf()才会去读取信息,scanf()只会拿123456,不会拿\n,会把123456放到数组里去。
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);//123456
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("请输入密码:>");
//123456 abcdef
scanf("%s",password);
printf("请确认密码:>");
//清理缓冲区
getchar();//处理'\n'
int ch=getchar();
if(ch=='Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
retutn 0;
}
输出结果:
更多推荐
所有评论(0)