目录
前言
选择结构根据某个具体条件的判断结果来执行相对应的语句,也称为判断结构或分支结构。接下来我将会依次讲解if语句和switch语句,顺便分享一下需要注意的事项和我在学习过程中的经验总结。
一.if语句
if语句在执行时先对给定的条件进行判断,再根据判断的结果执行对应的语句。在c语言中,若条件成立则为1,条件不成立为0。c语言中的if语句包括,单分支,双分支和多分支3种表现形式。
1.单分支结构
Ⅰ.一般形式:
if(表达式)语句;
Ⅱ.执行原理:
单分支结构执行语句时,先判断表达式的值,若表达式成立则执行表达式后面的语句;若表达式不成立,则跳过if后面的语句,执行if的下一条语句。
注:if表达式可以为逻辑表达式或关系表达式,也可以为任意数值型的表达式;if后面的 () 不能省略;if 后面只能跟一条语句。如果包含多条语句,必须使用 {} ;
2.双分支结构
Ⅰ.一般形式:
if(表达式)
语句1;
else
语句2;
Ⅱ.执行原理:
双分支结构的执行过程为:计算if后面的表达式,若表达式成立,则执行语句1,否则执行语句2。
注:else语句必须于if配对使用,不能单独作为一个语句来使用;条件运算符表达式都可以用if_else语句来实现;if和else是结构控制关键字,后面不能加“;”,而语句1和语句2后面的 “ ;”不能省略。
3.多分支结构
Ⅰ.一般形式:
if(表达式1) 语句1;
else if (表达式2) 语句2;
else if (表达式3) 语句3;
......
else if (表达式n) 语句n;
else 语句n+1;
Ⅱ.执行原理:
多分支结构语句执行过程:计算表达式1,结果不为0则执行语句1,否则计算表达式2;若表达式2的结果为真(非0),则执行语句2,以此类推。若n个表达式的结果都为0,则执行语句n+1。
注:一般用于计算分段函数的题目,或需要进行分段计算的题
4.if语句的嵌套
当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if 语句的嵌套结构。
Ⅰ.一般形式
if(表达式1)
if(表达式2)
语句1;
else
语句2;
else
if(表达式3)
语句3;
else
语句4;
注:else总是与它前面最近且没有和其他else配对的if配对。
二.switch语句
虽然用if else语句可以解决多分支问题,但如果分支较多,会使程序很长,可读性降低。为了专门处理这种多分支问题,提供了switch-case语句。
1.一般形式:
switch(表达式)
{
case 常量表达式1:语句1;[break;]
case 常量表达式2:语句2;[break;]
...
case 常量表达式n:语句n;[break;]
default: 语句n+1;[break;]
}
2.执行原理:
switch语句的执行过程是:计算switch后面表达式的值,将结果依次与case后面的常量表达式的值进行比较。若相等,则执行该case后面的语句。执行时,遇到break语句九退出,否则继续往下执行。若与各case后面的常量表达式的值都不相等,则执行default 后面的语句。
注:switch语句后不能加分号;表达式的值必须为整型,字符型或枚举型;case常量表达式的值必须为整型,字符型或枚举型,且互不相等;break语句可以不加,直到遇到break语句在停止;case语句可以为任意语句也可以为空。
三.经验总结和习题分享
1.经验总结
选择结构是C语言中用于控制程序流程的重要部分,主要包括`if`语句、`switch`语句等。以下是我对C语言选择结构的学习经验总结:
1. if语句
- `if`语句用于根据条件的真假来执行不同的代码块。
- 可以使用`else if`和`else`来处理多种条件。
- 注意条件表达式的使用,确保逻辑清晰。 示例:
if (condition) {
// 执行代码
} else if (another_condition) {
// 执行其他代码
} else {
// 默认执行代码
}
2. switch语句
- `switch`语句用于根据变量的值选择执行不同的代码块,通常用于处理多个可能的值。
- 每个`case`后面可以跟一个`break`语句,以防止执行后续的`case`。
- 可以使用`default`来处理所有未匹配的情况。
示例:
switch (variable) {
case value1:
// 执行代码
break;
case value2:
// 执行其他代码
break;
default:
// 默认执行代码
}
3. 嵌套选择结构:
- 可以在`if`或`switch`语句内部嵌套其他选择结构,以处理更复杂的逻辑。
- 注意代码的可读性,避免过度嵌套。
4. 逻辑运算符:
- 在`if`语句中,可以使用逻辑运算符(如`&&`、`||`)来组合多个条件。
- 理解运算符的优先级和短路特性。
5. 调试技巧:
- 在调试选择结构时,可以使用打印语句输出条件的值,以帮助理解程序的执行流程。
- 使用调试工具逐步执行代码,观察每个条件的判断结果。
通过以上总结,可以更好地理解和运用C语言中的选择结构,提高编程能力。
2.习题分享
1.判断奇偶数
题目:输入一个整数,判断该数是奇数还是偶数。
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (number % 2 == 0) {
printf("%d 是偶数。\n", number);
} else {
printf("%d 是奇数。\n", number);
}
return 0;
}
2.成绩等级
题目:输入一个学生的成绩(0-100),输出对应的等级(A、B、C、D、F)。
#include <stdio.h>
int main() {
int score;
printf("请输入成绩(0-100): ");
scanf("%d", &score);
if (score >= 90) {
printf("等级: A\n");
} else if (score >= 80) {
printf("等级: B\n");
} else if (score >= 70) {
printf("等级: C\n");
} else if (score >= 60) {
printf("等级: D\n");
} else {
printf("等级: F\n");
}
return 0;
}
3.星期几
题目:输入一个数字(1-7),输出对应的星期几。
#include <stdio.h>
int main() {
int day;
printf("请输入一个数字(1-7): ");
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;
default:
printf("输入无效,请输入1到7之间的数字。\n");
}
return 0;
}
4.计算器
题目:实现一个简单的计算器,输入两个数字和一个运算符(+、-、*、/),输出结果。
#include <stdio.h>
int main() {
double num1, num2;
char operator;
printf("请输入两个数字和一个运算符(如 +、-、*、/): ");
scanf("%lf %lf %c", &num1, &num2, &operator);
switch (operator) {
case '+':
printf("结果: %.2lf\n", num1 + num2);
break;
case '-':
printf("结果: %.2lf\n", num1 - num2);
break;
case '*':
printf("结果: %.2lf\n", num1 * num2);
break;
case '/':
if (num2 != 0) {
printf("结果: %.2lf\n", num1 / num2);
} else {
printf("错误: 除数不能为零。\n");
}
break;
default:
printf("无效的运算符。\n");
}
return 0;
}
5.闰年判断
题目:输入一个年份,判断该年是否为闰年。
#include <stdio.h>
int main() {
int year;
printf("请输入一个年份: ");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 是闰年。\n", year);
} else {
printf("%d 不是闰年。\n", year);
}
return 0;
}
6.月份天数
题目:输入一个月份(1-12),输出该月的天数(考虑闰年)。
#include <stdio.h>
int main() {
int month, year, days;
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份(1-12): ");
scanf("%d", &month);
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days = 29; // 闰年
} else {
days = 28; // 平年
}
break;
default:
printf("无效的月份。\n");
return 1; // 退出程序
}
printf("%d年%d月有%d天。\n", year, month, days);
return 0;
}
7.简单的菜单选择
题目:实现一个简单的菜单,用户可以选择不同的操作。
#include <stdio.h>
int main() {
int choice;
printf("请选择一个操作:\n");
printf("1. 打印Hello\n");
printf("2. 打印World\n");
printf("3. 退出\n");
printf("请输入你的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Hello\n");
break;
case 2:
printf("World\n");
break;
case 3:
printf("退出程序。\n");
break;
default:
printf("无效的选择。\n");
}
return 0;
}
8.BMI计算器
题目:输入体重(kg)和身高(m),计算BMI并输出相应的健康状态。
#include <stdio.h>
int main() {
float weight, height, bmi;
printf("请输入体重(kg): ");
scanf("%f", &weight);
printf("请输入身高(m): ");
scanf("%f", &height);
bmi = weight / (height * height);
printf("您的BMI为: %.2f\n", bmi);
if (bmi < 18.5) {
printf("体重过轻。\n");
} else if (bmi >= 18.5 && bmi < 24.9) {
printf("正常体重。\n");
} else if (bmi >= 25 && bmi < 29.9) {
printf("超重。\n");
} else {
printf("肥胖。\n");
}
return 0;
}
------每天不定时分享一些c语言的学习和题目以及32的项目,如果喜欢就关注一下吧,大佬们!!!!!!!!!!------