if 条件判断语句
if 语句结构
格式:
if (表达式) { 语句; }
如果表达式成立,就执行大括号中的语句;否则跳过该 if 语句
#include <stdio.h> int main() { int num; printf("请输入一个数字:"); scanf("%d", &num); if (num > 10) { printf("该数字大于 10 "); } return 0; }
运行结果
12 符合 if 语句的条件,所以执行大括号中的语句
6 不符合 if 语句的条件,所以跳过该 if 语句
if - else 结构
格式:
if (条件) { 语句 1; } else { 语句 2; }
如果 if 语句的条件成立执行语句 1,否则执行语句 2
#include <stdio.h> int main() { int num; printf("请输入一个数字:"); scanf("%d", &num); if (num > 10) { printf("%d 大于 10 ", num); } else { printf("%d 不大于 10 ", num); } return 0; }
运行结果
if - else if - else 语句结构
格式:
if (条件 1) { 语句 1; } else if (条件 2) { 语句 2; } else if (条件 3) { 语句 3; } else { 语句 4; }
如果条件 1 成立,则执行语句 1;如果条件 2 成立,则执行语句 2;如果条件 3 成立,则执行语句 3;条件 1,2,3 都不成立,执行语句 4
#include <stdio.h> int main() { int num; printf("请输入成绩:"); scanf("%d", &num); if (num >= 85) { printf("你的成绩为A "); } else if (num < 85 && num >= 75) { printf("你的成绩为B "); } else if (num < 75 && num >= 60) { printf("你的成绩为C "); } else { printf("你的成绩为D "); } return 0; }
运行结果
switch 语句
格式:
switch (表达式) { case 常量表达式 1 : 语句 1; case 常量表达式 2 : 语句 2; case 常量表达式 3 : 语句 3; case 常量表达式 4 : 语句 4; default : 语句 5; }
程序会执行表达式的值相对应的常量表达式的语句,如果全没有的话,会执行 default 的语句 5
#include <stdio.h> int main() { int a, b; printf("请输入两个数字 1 或 2:"); scanf("%d %d", &a, &b); switch (a + b) { case 2: printf("结果为 2 "); case 3: printf("结果为 3 "); case 4: printf("结果为 4 "); default: printf("结果未知 "); } return 0; }
运行结果
程序执行表达式的值相对应的常量表达式的语句之后,继续执行了之后的语句,这并不是我们想要的结果
这需要用到 break 来改进
#include <stdio.h> int main() { int a, b; printf("请输入两个数字 1 或 2:"); scanf("%d %d", &a, &b); switch (a + b) { case 2: printf("结果为 2 ");break; case 3: printf("结果为 3 ");break; case 4: printf("结果为 4 ");break; default: printf("结果未知 ");break; } return 0; }
运行结果
while 语句
格式:
while (条件) { 语句; }
如果条件成立,则会一直执行大括号中的语句
#include <stdio.h> int main() { int i = 0, count = 0; while (i <= 100) { count = count + i; i ++; } printf("结果为 %d ", count); return 0; }
运行结果
#include <stdio.h> int main() { int count = 0; printf("请输入一行英文字符:"); while (getchar() != ' ') { count++; } printf("该行英文字符有 %d 个字符 ", count); return 0; }
运行结果
do - while 语句
格式:
do { 语句 } while (条件);
执行大括号中的语句,直到条件不成立,while 语句后有个分号
大括号中的语句至少会被执行一次
#include <stdio.h> int main() { int i = 0, sum = 0; do { sum = sum + i; i ++; } while (i <= 100); printf("结果的值为 %d ", sum); return 0; }
运行结果
for 语句
格式:
for (表达式 1; 表达式 2; 表达式 3) { 循环体 }
表达式 1 为循环初始化表达式,表达式 2 为循环条件表达式,表达式 3 为循环调整表达式
#include <stdio.h> int main() { int i; for (i = 0; i < 10; i++) { printf("Hello World! "); } return 0; }
运行结果
表达式 1、表达式 2、表达式 3 可以安装需要进行省略,但是分号不能省略
#include <stdio.h> int main() { int i = 0; for (;i < 10;) { printf("Hello World! "); i++; } return 0; }
运行结果
表达式 1、2、3 都省略的话:for (;;) 就和 while (1) 一样
表达式 1、3 可以是用逗号分隔的多个表达式
for (i = 0, j = 10; i < j; i++)
C99 运行在表达式 1 中定义变量,定义的变量的作用域只在循环中
for (int i = 0; i < 10; i++)
使用 for 循环嵌套实现九九乘法表
#include <stdio.h> int main() { int i, j; for (i = 1; i <=9; i++) { for (j = 1; j <= i; j++) { printf("%d * %d = %-2d", i, j, i * j); } putchar(' '); } return 0; }
运行结果
break 语句
结束当前循环
#include <stdio.h> int main() { int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if (j == 3) { break; } } } printf("i = %d, j = %d " ,i, j); return 0; }
运行结果
当 j 等于 3 时,j 的循环就因为 break 结束了,只剩下 i 的循环
continue 语句
跳过当前循环,继续下一次循环
#include <stdio.h> int main() { int ch; printf("请输入一个字符串:"); while ((ch = getchar()) != ' ') { if (ch == 'w') { continue; } putchar(ch); } putchar(' '); return 0; }
运行结果