c语言的流程控制
1、 流程控制
1 #include <stdio.h> 2 int main() 3 { 4 // 人数 5 int count = 80; 6 7 if ( count >= 50 ) 8 { 9 printf("开班!!!\n"); 10 printf("准备机器!!!\n"); 11 } 12 13 return 0; 14 }
1 #include <stdio.h> 2 int main() 3 { 4 // 人数 5 int count = 40; 6 7 if ( count >= 50 ) 8 { 9 printf("开班!!!\n"); 10 printf("准备机器!!!\n"); 11 } 12 else 13 { 14 printf("不开班!!!\n"); 15 printf("不准备机器!!!\n"); 16 17 } 18 19 return 0; 20 }
1 #include <stdio.h> 2 int main() 3 { 4 int a = 5; 5 6 if (a++ > 18) // a == 6 7 { 8 printf("A\n"); 9 } 10 else if (a++ > 9) // a == 7 11 { 12 printf("B\n"); 13 } 14 else if (a++ > 5) // a == 8 15 { 16 printf("C\n"); 17 } 18 else 19 { 20 printf("D\n"); 21 } 22 23 printf("a的值是%d\n", a); 24 25 return 0; 26 }
if (a>1)
printf("A\n");
printf("B\n");
不管a取多少B都打印与if语句没关系
1 #include <stdio.h> 2 int main() 3 { 4 // 1.输入一个整数day 5 printf("输入一个整数day\n"); 6 7 // 2.接收输入 8 int day; 9 scanf("%d", &day); 10 11 // 3.判断等级 12 if (day == 1) { 13 printf("星期一\n"); 14 } else if (day == 2){ 15 printf("星期二\n"); 16 } else if (day == 3) { 17 printf("星期三\n"); 18 } else if (day == 4) { 19 printf("星期四\n"); 20 } else if (day == 5) { 21 printf("星期五\n"); 22 } else if (day == 6) { 23 printf("星期六\n"); 24 } else if (day == 7) { 25 printf("星期日\n"); 26 27 } 28 return 0; 29 }
春季:3、4、5
夏季:6、7、8
秋季:9、10、11
冬季:12、1、2
1 #include <stdio.h> 2 int main() 3 { 4 // 1.输入一个整数day 5 printf("输入一个整数month代表月份"); 6 7 // 2.接收输入 8 int month; 9 scanf("%d", &month); 10 11 // 3.判断等级 12 if (month == 3||month == 4||month == 5) { 13 printf("春季\n"); 14 } else if (month == 6||month == 7||month == 8){ 15 printf("夏季\n"); 16 } else if (month == 9||month == 10||month == 11) { 17 printf("秋季\n"); 18 } else if (month == 12||month == 1||month == 2) { 19 printf("冬季\n"); 20 } 21 return 0; 22 }
A:90~100
B:80~89
C:70~79
D:60~69
E:0~60
1 #include <stdio.h> 2 int main() 3 { 4 // 1.提示输入 5 printf("请输入分数值:\n"); 6 7 // 2.接收输入 8 int score; 9 scanf("%d", &score); 10 11 // 3.判断等级 12 if (score>=90 && score<=100) { // [90, 100] 13 printf("A\n"); 14 } else if (score>=80) { // [80, 89] 15 printf("B\n"); 16 } else if (score>=70) { // [70, 79] 17 printf("C\n"); 18 } else if (score>=60) { // [60, 69] 19 printf("D\n"); 20 } else { // (-∞, 59] 21 printf("E\n"); 22 } 23 return 0; 24 }
int a = 10;
switch (a) {
case 0:
printf("这是一个0");
break;
case 5:
printf("这是一个5");
break;
case 10:
printf("这是一个10");
break;
default:
printf("什么也不是");
break;
}
break:退出整个switch语句
如果case后面没有break,就会执行后面所有case中的语句,直到遇到break为止
如果要在case后面定义新的变量,必须用大括号{}包住
1 #include <stdio.h> 2 int main() 3 { 4 char c = '+'; 5 int a = 10; 6 int b = 20; 7 switch (c) { 8 case '+': 9 { 10 int sum = a + b; 11 printf("和是%d\n", sum); 12 break; 13 } 14 15 case '-': 16 { 17 int minus = a - b; 18 printf("差是%d\n", minus); 19 break; 20 } 21 } 22 return 0; 23 }
用switch替代if实现if中的习题
1 /* 2 输入一个整数score代表分数,根据分数输出等级(A-E)(用两种方式) 3 A:90~100 score/10 == 9、10 4 B:80~89 score/10 == 8 5 C:70~79 score/10 == 7 6 D:60~69 score/10 == 6 7 E:0~60 8 */ 9 10 #include <stdio.h> 11 12 int main() 13 { 14 int score = 86; 15 16 switch (score/10) { 17 case 10: // 100 18 case 9: // 90+ 19 printf("A\n"); 20 break; 21 case 8: // 80+ 22 printf("B\n"); 23 break; 24 case 7: // 70+ 25 printf("C\n"); 26 break; 27 case 6: // 60+ 28 printf("D\n"); 29 break; 30 default: 31 printf("E\n"); 32 break; 33 } 34 35 return 0; 36 }
1 #include <stdio.h> 2 int main() 3 { 4 // 1.先确定需要重复执行的操作 5 6 // 2.再确定约束条件 7 8 // 定义一个变量记录做的次数 9 int count = 0; 10 while (count<50) 11 { 12 ++count; 13 14 if (count%10 == 0) 15 { 16 // 直接结束这一次循环体,进入下一次循环 17 continue; 18 }else if (count == 25) 19 { 20 break; 21 } 22 23 printf("做第%d次俯卧撑\n", count); 24 } 25 26 return 0; 27 }
只有条件成立才会执行循环体,
运行原理
1.如果一开始条件就不成立,永远不会执行循环体
2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立......
3. 习题
1 #include <stdio.h> 2 int main() 3 { 4 // 定义变量保存用户输入的整数 5 int n = 0; // 一定要初始化 6 7 while (n <= 0) 8 { 9 // 1.提示输入 10 printf("请输入一个正整数:\n"); 11 12 // 2.接收输入 13 scanf("%d", &n); 14 } 15 16 // 3.计算 17 // (1 + n) * n / 2; 18 // 定义变量保存和 19 int sum = 0; 20 int number = 0; // 默认被加的数值 21 while (number < n) 22 { 23 number++; 24 sum += number; // 累加 25 } 26 27 printf("%d\n", sum); 28 return 0; 29 }
1 */ 2 #include <stdio.h> 3 int main() 4 { 5 // 1.定义变量存储用户输入的整数 6 int n = 0; 7 8 // 2.判断n是否为正整数 9 while (n <= 0) { 10 // 2.1 提示输入 11 printf("输入一个正整数:\n"); 12 13 // 2.2 让用户输入 14 scanf("%d", &n); 15 } 16 17 // 3.计算阶乘 18 int sum = 0; // 存储计算结果 19 int current = 0; // 当前要累加的数值 20 while (current < n) { 21 current++; 22 23 // 如果是偶数,就减 24 if (current % 2 == 0) { 25 sum -= current; 26 } else { // 如果是奇数,就加 27 sum += current; 28 } 29 } 30 31 // 4.输出结果 32 printf("%d\n", sum); 33 34 return 0; 35 }
第二种 for循环
1 #include <stdio.h> 2 int main() 3 { 4 int n,sum=0; 5 printf("请输入正整数:"); 6 scanf("%d",&n); 7 n++; 8 for(int i=1;i<n;i+=2) 9 { 10 sum=sum+i; 11 if(i+1!=n) 12 sum=sum-i-1; 13 14 } 15 printf("sum== %d\n",sum); 16 return 0; 17 }
记住一类题
1 /* 2 题目:计算1~100中所有3的倍数的个数 3 */ 4 5 #include <stdio.h> 6 7 int main() 8 { 9 // 记录3的倍数的个数 10 int count = 0; 11 12 // 记录当前检查的数值 13 int number = 0; 14 15 while (number < 100) 16 { 17 number++; 18 19 // 说明number是3的倍数 20 if (number%3 == 0) 21 { 22 count++; 23 } 24 } 25 26 printf("1~100内3的倍数的个数:%d\n", count); 27 }
while(条件);
最简单的死循环 while(1);
while特点:如果一开始的条件不成立,永远不会执行循环体
do while特点:不管一开始的条件是否成立,至少会执行一次循环体
最好使用while
int i=0;
while(i<0){
i++;
}
int i=0;
do{
i++;
} while(i<0);
例子
1 #include <stdio.h> 2 3 int main() 4 { 5 int i = 0; 6 7 /* 8 while (i<0) 9 { 10 i++; // 5 11 }*/ 12 13 do { 14 i++; // 5 15 } while (i<0); 16 17 printf("i=%d\n", i); 18 19 return 0; 20 }
for(语句1,条件,语句2)
{
循环体
}
语句1:一般为初始化语句
语句2:一般为增量语句(执行完循环体后再执行的语句)
For循环原理:
1) For循环一开始就会执行语句1(整个for循环只会执行一次)
2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环
3) 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)
【对比】for和while:
在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。
好友列表1
好友1
好友2
好友列表2
好友1
好友2
好友列表3
好友1
好友2
1 #include <stdio.h> 2 int main() 3 { 4 5 for (int i = 1; i<=4; i++) 6 { 7 //printf("好友列表%d\n", i + 1); 8 printf("好友列表%d\n", i); 9 10 /* 11 printf(" 好友1\n"); 12 printf(" 好友2\n"); 13 printf(" 好友3\n"); 14 printf(" 好友4\n"); 15 printf(" 好友5\n");*/ 16 17 for (int j = 1; j<=2; j++) 18 { 19 printf(" 好友%d\n", j); 20 } 21 } 22 23 return 0; 24 }
for (int i = 0; i<5; i++) int a = 10;
*****
****
***
**
*
*
1 #include <stdio.h> 2 int main() 3 { 4 // 1.定义一个变量存储用户输入的值 5 int n = 0; // 一定要初始化 6 7 // 2.判断n值合不合理 8 while (n <= 0) 9 { 10 // 2.1 提示用户输入正整数 11 printf("请输入一个正整数:\n"); 12 13 // 2.2 接收输入的数据 14 scanf("%d", &n); 15 } 16 17 // 3.输出图形 18 for (int i = 0; i<n; i++)// 有多少行 19 { 20 //printf("*****\n"); 21 for (int j = 0; j<n-i; j++) 22 { // 每一行有多少个 23 printf("*"); 24 } 25 26 printf("\n"); 27 } 28 29 return 0; 30 }
1 #include <stdio.h> 2 int main() 3 { 4 // 一共有多少行 5 for (int row = 1; row<=9; row++) 6 { 7 // 一共有多少列(其实列数==行数) 8 for(int column = 1; column<=row; column++) 9 { 10 // \t是tab键,目的是保持每列之间有相同的距离 11 printf("%dx%d=%d\t", row, column, row * column); 12 } 13 14 // 换行 15 printf("\n"); 16 } 17 }
一、选择结构
1.if
1> 结构
if (条件) {
} else if (条件2) {
} else if (条件3) {
} else {
}
2> 特点
* 同一时刻,只有一个大括号里面的代码会被执行
2.switch
1> 结构
switch (数值)
{
case 数值1:
break;
case 数值2:
break;
case 数值3:
break;
default:
break;
}
2> 特点
1> 默认情况下,只有一个case后面的代码会被执行
2> 如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止
3> 如果要在case后面定义一个新的变量,必须用大括号{}包住
二、循环结构
1.while
1> 特点:如果一开始条件不成立,永远不会执行循环体
2.do while
1> 特点:不管条件是否成立,至少会执行一次循环体
3.for
4.选择
1> 一般优先使用for循环
2> 然后再考虑while
3> 最后再考虑do while