1.选择控制语句

1、 if 语句
形式:
1) if(条件表达式) {
//复合语句,若干条语句的集合
语句 1;
语句 2;
}
如果条件成立执行大括号里的所有语句,不成立的话大括号里的语句不执行。

  1. #include<stdio.h>
  2. int main() {
  3. int a=10;
  4. if(a>5) {
  5. printf("a>5\n");
  6. }
  7. return 0;
  8. }
  9. //a>5

2) if(条件表达式) {
}else {
}
if else 语句的作用是,如果 if 的条件成立,执行 if 后面{}内的语句,否则执行 else 后的语句

  1. #include<stdio.h>
  2. int main() {
  3. int a=10;
  4. if(a>5) {
  5. printf("a>5\n");
  6. }else {
  7. printf("a<=5\n");
  8. }return 0;
  9. }
  10. //a>5

3) if(条件表达式 1) {
……………
}else if(条件表达式 2) {
………………
}else if(条件表达式 3) {
……………
}else {
………………
}
在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句, 下边的就不再判断了,各个条件判断是互斥的。

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. char ch; float score = 0;
  5. printf("请输入学生分数:\n");
  6. scanf("%f", &score);
  7. if (score < 0 || score >100) {
  8. printf("你所输入的信息有错\n");
  9. return 0;
  10. }else if (score < 60) {
  11. ch = 'E';
  12. }else if (score < 70) {
  13. ch = 'D';
  14. }else if (score < 80) {
  15. ch = 'C';
  16. }else if (score < 90) {
  17. ch = 'B';
  18. }else {
  19. ch = 'A';
  20. }
  21. printf("成绩评定为:%c\n", ch);
  22. return 0;
  23. }

2、 switch 语句
switch(表达式)//表达式只能是字符型或整型的(short int int long int)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:语句3;break;
}
注意:break 的使用

  1. #include <stdio.h>
  2. int main(int argc, char *argv[]) {
  3. int n;
  4. printf("请输入一个 1~7 的数\n");
  5. scanf_s("%d",&n);
  6. switch(n) {
  7. case 1:
  8. printf("星期一\n");
  9. break;
  10. case 2:
  11. printf("星期二\n");
  12. break;
  13. case 3:
  14. printf("星期三\n");
  15. break;
  16. case 4:
  17. printf("星期四\n");
  18. break;
  19. case 5:
  20. printf("星期五\n");
  21. break;
  22. case 6:
  23. printf("星期六\n");
  24. break;
  25. case 7:
  26. printf("星期天\n");
  27. break;
  28. default: printf("您的输入有误,请输入 1~7 的数\n"); break;
  29. }
  30. return 0;
  31. }

2. 循环控制语句

1、 for 循环
for(表达式 1;表达式 2;表达式 3) {
//复合语句,循环体
}
第一次进入循环的时候执行表达式 1,表达式 1 只干一次, 表达式 2,是循环的条件,只有表达式 2 为真了,才执行循环体,也就是说 每次进入循环体之前要判断表达式 2 是否为真。 每次执行完循环体后,首先执行表达式 3。

  1. #include <stdio.h>
  2. int main(void) {
  3. int i;
  4. int sum=0;
  5. for(i=1;i<=100;i++) {
  6. sum = sum+i;
  7. }
  8. printf("sum=%d\n",sum);
  9. return 0;
  10. }

image.png

  1. #include <stdio.h>
  2. int main(int argc, char *argv[]) {
  3. int i,j;
  4. for(i=1;i<=9;i++) {
  5. for(j=1;j<=i;j++) {
  6. printf("%d*%d=%d ",j,i,j*i);
  7. }
  8. printf("\n");
  9. }
  10. return 0;
  11. }

while 循环
1) 形式 1:
while(条件表达式) {
//循环体,复合语句
}
进入 while 循环的时候,首先会判断条件表达式是否为真,为真进入循环体,否则退出循环

  1. #include <stdio.h>
  2. int main(void) {
  3. int i=1;
  4. int sum=0;
  5. while(i<=100) {
  6. sum = sum+i;
  7. i++;
  8. }
  9. printf("sum=%d\n",sum);
  10. return 0;
  11. }

形式 2 : do
do{
//循环体
}while(条件表达式);
先执行循环体里的代码,然后去判断条件表达式是否为真,为真再次执行循环体,否则退出循环 。

  1. #include <stdio.h>
  2. int main(void) {
  3. int i=1;
  4. int sum=0;
  5. do {
  6. sum = sum+i;
  7. i++;
  8. }while(i<=100);
  9. printf("sum=%d\n",sum);
  10. return 0;
  11. }

形式 1 和形式 2 的区别是,形式 1 先判断在执行循环体,形式 2 先执行循环体,再判断

break 跳出循环
continue 结束本次循环,进入下一次循环

  1. #include <stdio.h>
  2. int main(void) {
  3. int i;
  4. int sum=0;
  5. for(i=1;i<=100;i++) {
  6. if(i==10)
  7. break;//将 break 修改成 continue 看效果
  8. sum = sum+i;
  9. }
  10. printf("sum=%d\n",sum);
  11. return 0;
  12. }

return 返回函数的意思。结束 return 所在的函数,
在普通函数中,返回到被调用处,在 main 函数中的话,结束程序

3、 goto

  1. #include <stdio.h>
  2. int main(int argc, char *argv[]) {
  3. printf("test000000000000000000\n");
  4. printf("test1111111111111111\n");
  5. goto tmp; printf("test222222222222222222\n");
  6. printf("test3333333333333333\n");
  7. printf("test444444444444444444444\n");
  8. printf("test55555555555555555555\n");
  9. tmp:printf("test66666666666666666\n");
  10. return 0;
  11. }