路边的茶楼 人影错落
街上传来 两三声吆喝
人前摇扇 醒木拍桌
各位看官 你细听分说
目录
🌞分支语句
🌟if语句
⭐练习
🌟 switch语句
⭐练习:
🌞循环语句
🌟while循环
🌟for循环
C语言是【结构化的】程序设计语言
- 顺序结构 √
- 选择结构 if switch
- 循环结构 while for do.while
分支语句
分支语句
- if
- switch
循环语句
- while
- for
- do while
goto语句
if语句
语法结构: if(表达式) 语句; if(表达式) 语句1; else 语句2; //多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3;
int main() { int age = 0; scanf("%d", &age); if (age >= 18) printf("成年\n"); return 0; }
CTRL+f5:
以上是单分支,下面再给各位客官看一下双分支:
int main() { int age = 0; scanf("%d", &age); /*if (age >= 18) printf("成年\n");*/ if(age>=18) printf("成年\n"); else printf("未成年\n"); return 0; }
CTRL+f5:
那此时有些客官可能就要说了,先生你这划分的不够细致欸!
别急嘛,下面咱就来给大家伙讲上一番:
int main() { int age = 0; scanf("%d", &age); /*if (age >= 18) printf("成年\n");*/ //if(age>=18) // printf("成年\n"); //else // printf("未成年\n"); if (age < 18) { printf("青少年\n"); printf("好好学习\n"); } else if (age >= 18 && age < 30) { printf("青年\n"); } else if (age >= 30 && age < 50) { printf("中年\n"); } else if (age >= 50 && age < 80) { printf("中老年\n"); } else if (age >= 80 && age < 100) { printf("老年\n"); } else { printf("老寿星\n"); } return 0; }
//如果 if 或者 else if 后面要跟多条语句的话,要使用{}
解释一下:
如果表达式的结果为真,则语句执行
在C语言中如何表示真假?
0表示假,非0表示真
接下来,请各位客官仔细看下这段代码:
#include <stdio.h> int main() { int a = 0; int b = 2; if(a == 1) if(b == 2) printf("hehe\n"); else printf("haha\n"); return 0; }
结果是什么呢?
我们把代码放入编译器看一下:
各位客官有没有发现,把这段代码代码拷贝到编译器里面,代码的排版发生了改变。
else的匹配:else是和它离的最近的if匹配的。
在这里给各位客官推荐一本秘籍——《高质量的C++编程》
int test() { int a = 2; if (2) return 1; return 0; } int main() { int ret = test(); printf("ret=%d\n", ret); return 0; }
CTRL+f5:
那这个时候就会有看官问到了,说先生,那我这个地方如果是0呢?
0为假,所以return 0。
练习
- 判断一个数是否为奇数
int main() { int n = 0; scanf("%d", &n); //%2==1 if (n % 2 == 1) { printf("奇数\n"); } return 0; }
- 输出1-100之间的奇数
int main() { //打印1~100之间的奇数 int i = 1; while (i <= 100) { //对i进行判断,是奇数才打印 if (i % 2 == 1) printf("%d ", i); i++; } return 0; }
switch语句
int main() { int day = 0; scanf("%d", &day); //if (1 == day) // printf("星期1\n"); //else if (2 == day) // printf("星期2\n"); //else if (3== day) // printf("星期3n"); //… return 0; }
这个地方可以这样写,但是如果我们想要更便捷的话,这里我们就需要选择我们的 switch case 语句:
int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); case 2: printf("星期2\n"); case 3: printf("星期3\n"); case 4: printf("星期4\n"); case 5: printf("星期5\n"); case 6: printf("星期6\n"); case 7: printf("星期天\n"); } //if (1 == day) // printf("星期1\n"); //else if (2 == day) // printf("星期2\n"); //else if (3== day) // printf("星期3n"); //… return 0; }
这样可不可以呢?我们来试一试:
明显这和我们想要的结果有点不同,那怎么修改呢?
int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期1\n"); break; case 2: printf("星期2\n"); break; case 3: printf("星期3\n"); break; case 4: printf("星期4\n"); break; case 5: printf("星期5\n"); break; case 6: printf("星期6\n"); break; case 7: printf("星期天\n"); break; } //if (1 == day) // printf("星期1\n"); //else if (2 == day) // printf("星期2\n"); //else if (3== day) // printf("星期3n"); //… return 0; }
那么各位客官接下来再看这样一段代码:
int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("工作日\n"); break; case 2: printf("工作日\n"); break; case 3: printf("工作日\n"); break; case 4: printf("工作日\n"); break; case 5: printf("工作日\n"); break; case 6: printf("休息日\n"); break; case 7: printf("休息日\n"); break; } //if (1 == day) // printf("星期1\n"); //else if (2 == day) // printf("星期2\n"); //else if (3== day) // printf("星期3n"); //… return 0; }
这段代码是可行的,但是是不是十分繁琐?
int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作日\n"); break; case 6: case 7: printf("休息日\n"); break; default: printf("输入错误\n"); break; } return 0; }
练习:
#include <stdio.h> int main() { int n = 1; int m = 2; switch (n) { case 1: m++; case 2: n++; case 3: switch (n) {//switch允许嵌套使用 case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m = %d, n = %d\n", m, n); return 0; }
循环语句
- while
- for
- do while
while循环
int main() { /*while (1) printf("haha\n");*/ //1~10 int i = 1; while (i<=10) { printf("%d", i); i++; } return 0; }
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:while中的break是用于永久终止循环的。
int main() { int ch = getchar(); putchar(ch); return 0; }
//EOF - end of file int main() { int ch = 0; while ((ch = getchar()) != EOF); { getchar(ch); } //while (scanf("%d", &ch) != EOF) //{ // printf("%d", ch); //} //return 0; }
那有什么用呢?
客官们请看:
int main() { char password[20] = { 0 }; printf("请输入密码:>"); scanf("%s", password);//123456 printf("请输入密码(Y\N):>"); int ch = getchar(); if ('Y' == ch) printf("确认成功\n"); else printf("确认失败\n"); //while ((ch = getchar()) != EOF); //{ // getchar(ch); //} //while (scanf("%d", &ch) != EOF) //{ // printf("%d", ch); //} return 0; }
我们运行代码的时候会发现没有让我们选择就输出了,为什么呢?
怎么解决?
//EOF - end of file int main() { char password[20] = { 0 }; printf("请输入密码:>"); scanf("%s", password);//123456 //方法1 //getchar();处理\n //方法2 int tmp = 0; while ((tmp = getchar()) != '\n') { ; } printf("请输入密码(Y\N):>"); int ch = getchar(); if ('Y' == ch) printf("确认成功\n"); else printf("确认失败\n"); //while ((ch = getchar()) != EOF); //{ // getchar(ch); //} //while (scanf("%d", &ch) != EOF) //{ // printf("%d", ch); //} //return 0; }
for循环
for(表达式1; 表达式2; 表达式3) 循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
int main() { int i = 0; for (i = 1; i <= 10; i++) { printf("%d ", i); } return 0; }
欲知后事如何 且听我下回分说
(江湖游历在外,还要多多仰仗各位衣食父母,方便的话点个赞,点个关注呗,谢谢你嘞,客官慢走)🌹🌹🌹