初始C语言02-分支与循环(上)

网友投稿 625 2022-05-28

初始C语言02-分支与循环(上)

前言:有人可能觉得笔者写的东西很简单,没有写的必要!但是我想说的是,存在即合理!夯实基础才是yyds!知识分享yyds! 不喜勿喷,谢谢各位! 如有错误,欢迎斧正!

1.C语言是结构化的程序设计语言

c语言中有3中结构:顺序结构,选择结构,循环结构

空语句: ; //只有一个分号

2.C语言中非0表示真,0表示假

判断:C语言中,1表示真,0表示假 错: 非0表示真

3.else和if的匹配

就近原则:else与最近的if匹配

#include int main() { int a = 0; int b = 2; if(a == 1) if(b == 2) printf("hehe\n"); else printf("haha\n"); return 0; } //什么也不打印 //因为if和最近的else匹配,因为不满足 a == 0所以不进入第一个if循环,所以不打印 //相当于 //增加了程序的可读性 int main() { int a = 0; int b = 2; if(a == 1) { if(b == 2) printf("hehe\n"); else printf("haha\n"); } return 0; }

程序题:打印1-100的奇数并计算个数

//方法1:故意营造奇数出来打印,效率更高 int main() { int count = 0; int i = 1; //while循环的写法 /* while(i < 100) { printf("%d ",i); i += 2; count++; } */ //for循环写法 for(i = 1; i < 100; i+=2) { printf("%d ",i); i += 2; count++; } printf("1-100的奇数个数为:%d\n",count); }

//写法2:产生1-100的数,奇数:除2余数为1 int main() { int count = 0; int i = 1; while(i < 100) { if(i % 2 == 1) { printf("%d ",i); } i++; } return 0; }

4.EOF-end of file 文件结束标志

EOF-> 代表的值为-1

getchar() : 读取失败的时候返回EOF

返回的字符,本质是字符也是ASCII码值,是整数

getchar 函数不仅仅是返回正常字符,还会返回EOF 是-1,所以放到整形变量中

遇到ctrl+z时结束循环输入

循环输入的方法

//写法1 while( (c = getchar()) !=EOF) //用括号括起来 while( scanf("%d",&a) != EOF) //写法2 while( ~(c = getchar()) ) while( ~(scanf("%d",&a)) )

-1: 原码:10000000 00000000 00000000 00000001 反码:11111111 11111111 11111111 11111110 补码:11111111 11111111 11111111 11111111 内存中存放的是补码 EOF为-1 按位取反-1的补码 ->全0序列 即为0

程序题:密码确认题 (缓冲区

输入缓冲区:内存空间

scanf ,getchar:从键盘上输入东西到输入缓冲区, 从输入缓冲区拿东西

//err程序 int main() { int ch = 0; char password[20] = {0}; printf("请输入密码>:"); scanf("%S",password);//数组名是首元素地址,不用加取地址 printf("请确认密码(Y/N)>:"); ch = getchar(); if(ch == 'Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } return 0; }

从键盘中输入字符到缓冲区,然后scanf,getchar拿东西,getchar一次只能读取一个字符,%s只能读到空白字符前的字符 空白字符:空格,换行) 因为最后一个是换行符(\n),所以我们要把缓冲区的字符清理干净,当getchar读取到\n使,说明缓冲区已经清理干净了

//正解 int main() { int ch = 0; char password[20] = { 0 }; printf("请输入密码>:"); scanf("%s", password);//数组名是首元素地址,不用加取地址 printf("请确认密码(Y/N)>:"); //清理缓冲区字符 while (getchar() != '\n') { ; //空语句,不处理 } ch = getchar(); if (ch == 'Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } return 0; }

若想要读取有空格的作为密码:使用gets()函数

使用gets()则不用考虑缓冲区的问题

int main() { int ch = 0; char password[20] = { 0 }; printf("请输入密码>:"); gets(password); printf("请确认密码(Y/N)>:"); ch = getchar(); if (ch == 'Y') { printf("确认成功\n"); } else { printf("确认失败\n"); } return 0; }

C 语言

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何在小车任务板上添加一个转向灯指令?
下一篇:【数据结构】栈
相关文章