🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 选择结构-if基本概念 ## if第一种形式 - 表示如果表达式为真,执行语句块1,否则不执行。 ``` if(表达式) { 语句块1 } 后续语句; ``` 示例: ``` if(age > 18) { printf("开网卡"); } ``` ## if第二种形式 - 当条件表达式为真的时候会执行if后面的第一条语句 >注意点:在以后开发中尽量不要写使用该格式 ``` if (条件表达式) 语句1; ``` 示例: ``` if(age > 18) printf("开网卡"); ``` ## if第三种形式 - 如果表达式为真,则执行语句块1,否则执行语句块2 ``` if(表达式) { 语句块1 }else{ 语句块2 } 后续语句; ``` - 示例: ``` if(age > 18) { printf("开网卡"); }else{ printf("喊你妈来"); } ``` ## if第四种形式 - 如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断 表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。 ``` if(表达式1) { 语句块1 }else if(表达式2){ 语句块2 }else if(表达式3){ 语句块3 }else{ 语句块4 } 后续语句; ``` - 示例: ``` if(age>18) { printf("给网卡"); }else if(age>25){ printf("给名片"); }else if(age>40){ printf("给房卡"); }else{ printf("给好人卡"); } ``` - 特点: + 1.这么多大括号中只有一个大括号中的内容会被执行 + 2.当执行到后面条件的时候证明前面的条件不满足 ## if嵌套 - if语句可以嵌套使用 ``` int num = 8; if (num > 5) { if(num<10) { printf("一个5~10之间的数") } } ``` ## 选择结构-if练习 ### 判断奇偶数 - 从键盘输入一个整数,判断其是否是偶数,如果是偶数就输出YES,否则输出NO; ``` // 1.提示输入信息 printf("输入一个整数\n"); // 2.接收输入信息 int value; scanf("%d", &value); // 3.判断是否能被2整除 if (value%2 == 0) { // 输出偶数 printf("yes"); }else{ printf("no"); } ``` ### 输出对应星期 - 接收用户输入的1~7的整数,根据用户输入的整数,输出对应的星期几 ``` // 1.提示用户输入星期几 printf("请输入星期几(1~7)\n"); // 2.接收用户输入的星期数 int day; scanf("%d",&day); // 3.输出对应的星期 --》1.用屌丝做法 每天一个if --》2.用高帅富做法 if else if if(day == 1) { printf("星期1\n"); } else if(day == 2) { printf("星期2\n"); } else{ printf("地球不属于你\n"); } ``` --- ### 输出对应季节 - 接收用户输入的一个整数month代表月份,根据月份输出对应的季节 ``` // 1.提示用户输入月份 printf("请输入月份(\n"); // 2.接收用户输入的星期数 int month; scanf("%d",&month); // 3.输出对应的月份 if (month >=3 && month <=5) { printf("春季\n"); }else if (month >=6 && month <=8) { printf("夏季\n"); }else if (month >=9 && month <=11) { printf("秋季\n"); }else if(month == 12 || month == 1 || month == 2) { printf("春季\n"); }else { printf("地球不属于你\n"); } ``` ``` if(month >12 || month <1){ printf("地球不属于你\n"); } else if(month >=3 && month <=5) { printf("春季\n"); } else if(month >=6 && month <=8) { printf("夏季\n"); } else if(month >=9 && month <=11) { printf("秋季\n"); } else { printf("冬季\n"); } ``` ### 获取两个数最值 - 键盘输入两个整数,判断大小后输出较大的那个数 ``` int num1, num2; printf("输入两个整数并用逗号隔开\n"); scanf("%d,%d", &num1, &num2); if (num1 > num2) { printf("%d\n",num1); }else{ printf("%d\n",num2); } printf("%d\n",num1 > num2 ? num1 : num2); 三元运算符好处:可以简化if else代码 弊端 :因为是一个运算符所以运算完必要要有一个结果。 简单用三元 复杂用if(阅读性好) ``` ### 获取三个数最值 - 从键盘输入3个整数,判断大小后输出较大的那个数 - 方式1 ``` int num1, num2, num3; printf("输入3个整数并用逗号隔开\n"); scanf("%d,%d,%d", &num1, &num2, &num3); // 方式1 int max; if (num1 > num2) { max = num1; }else{ max = num2; } if (max < num3) { max = num3; } printf("%d\n",max); ``` - 方式2 ``` int max1 = num1 > num2 ? num1 : num2; int max = max1 > num3 ? max1 : num3; printf("%d\n",max); ``` - 方式3 ``` if (num1 >= num2 && num1 >= num3) { printf("%d\n",num1); }else if (num2 >= num1 && num2 >= num3) { printf("%d\n",num2); }else if (num3 >= num1 && num3 >= num2) { printf("%d\n",num3); } ``` - 方式4(先写不省略括号) ``` if (number1 > number2) { // 代表number1当前最大 if (number1 > number3) { max = number1; // number1是最大 }else { max = number3; // number3是最大 } }else if (number2 > number3) // 因为if条件不满足, 所以此时此刻number2是最大的 { // 代表number2当前最大 max = number2; }else // 因为上面两个条件都不满足, 所以此时number3最大 { max = number3; } printf("max = %i\n", max); ``` ### 排序 - 从键盘输入3个整数,排序后输出 - 方式1 ``` int a, b, c; printf("输入3个整数并用逗号隔开\n"); scanf("%d,%d,%d", &a, &b, &c); // 方式1 写出所有方式 if (a >= b && b >=c) { printf("%d > %d > %d\n", a, b, c); }else if (a >= c && c >= b) { printf("%d > %d > %d\n", a, c, b); }else if (b >= a && a >= c) { printf("%d > %d > %d\n", b, a, c); }else if (b >= c && c >= a) { printf("%d > %d > %d\n", b, c, a); }else if (c >= a && a >= b) { printf("%d > %d > %d\n", c, a, b); }else if (c >= b && b >= a) { printf("%d > %d > %d\n", c, b, a); } ``` - 方式2 ``` int a, b, c; printf("输入3个整数并用逗号隔开\n"); scanf("%d,%d,%d", &a, &b, &c); // 方式2(选择排序,画图讲解) int temp; if (a < b) { temp = a; a = b; b = temp; } if (a < c) { temp = a; a = c; c = temp; } if ( b < c) { temp = b; b = c; c = temp; } printf("%d > %d > %d\n", a, b, c); ``` ## 选择结构-if注意点 ### if语句的使用注意点 - “;” 空语句 + if(条件) 可以直接写分号 “;” 表示什么也不干 ``` if(10 > 2); { printf("10 > 2"); // 输出结果: 10 > 2 } ``` - 任何数值都有真假性 + if(1)、if(-1) 表示永真 if(0) 表示为永假 ``` if (0) { printf("123\n"); } ``` - 判断变量与常量问题 + 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面 ``` // if(a = 0) // 错误写法, 但不会报错 if (0 == a) { printf("a的值是0\n"); }else{ printf("a的值不是0\n"); } ``` - 变量作用域问题 ``` if (age > 10) { printf("已经懂事了\n"); int num = 1000; } printf("num = %d\n",num); ``` - 作用域混乱 + 想在if后面定义变量必须写{} ``` if (0) int a = 10; // 这句会报错 printf("a = %d\n", a); ``` - 省略大括号问题 + if else是一个整体, else匹配if的时候匹配离它最近的一个if ``` if(0) if(1) printf("A\n"); else printf("B\n"); else if (1) printf("C\n"); else printf("D\n"); ```