
1. 选择结构的基本概念
选择结构是程序设计中的三种基本结构之一(顺序、选择、循环),用于根据条件判断决定程序的执行路径。
2. if语句
2.1 基本if语句
if (条件表达式) {
// 条件为真时执行的语句
}示例:
#include <stdio.h>
int main() {
int score = 85;
if (score >= 60) {
printf("恭喜,你及格了!\n");
}
return 0;
}2.2 if-else语句
if (条件表达式) {
// 条件为真时执行的语句
} else {
// 条件为假时执行的语句
}示例:
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num % 2 == 0) {
printf("%d是偶数\n", num);
} else {
printf("%d是奇数\n", num);
}
return 0;
}2.3 if-else if-else语句
if (条件1) {
// 条件1为真时执行
} else if (条件2) {
// 条件2为真时执行
} else if (条件3) {
// 条件3为真时执行
} else {
// 所有条件都为假时执行
}示例:成绩等级判断
#include <stdio.h>
int main() {
int score;
printf("请输入成绩(0-100):");
scanf("%d", &score);
if (score >= 90) {
printf("优秀\n");
} else if (score >= 80) {
printf("良好\n");
} else if (score >= 70) {
printf("中等\n");
} else if (score >= 60) {
printf("及格\n");
} else {
printf("不及格\n");
}
return 0;
}3. switch语句
3.1 基本语法
switch (表达式) {
case 常量1:
// 语句
break;
case 常量2:
// 语句
break;
// ...
default:
// 语句
}3.2 示例:星期判断
#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("输入错误!\n");
}
return 0;
}3.3 注意事项
· switch后面的表达式必须是整型或字符型 · case后面必须是常量表达式 · break语句用于跳出switch结构 · default是可选的 4. 条件运算符(三目运算符)
表达式1 ? 表达式2 : 表达式3示例:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max = (a > b) ? a : b;
printf("较大的数是:%d\n", max);
return 0;
}5. 经典题目讲解
题目1:判断闰年
要求: 输入年份,判断是否为闰年
#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;
}题目2:解一元二次方程
要求: 输入a,b,c,解方程ax²+bx+c=0
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double delta, x1, x2;
printf("请输入一元二次方程的系数(a,b,c):");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("这不是一元二次方程!\n");
} else {
delta = b * b - 4 * a * c;
if (delta > 0) {
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不相等的实根:\n");
printf("x1 = %.2f, x2 = %.2f\n", x1, x2);
} else if (delta == 0) {
x1 = -b / (2 * a);
printf("方程有两个相等的实根:\n");
printf("x1 = x2 = %.2f\n", x1);
} else {
double realPart = -b / (2 * a);
double imagPart = sqrt(-delta) / (2 * a);
printf("方程有两个共轭复根:\n");
printf("x1 = %.2f + %.2fi\n", realPart, imagPart);
printf("x2 = %.2f - %.2fi\n", realPart, imagPart);
}
}
return 0;
}题目3:计算器程序
要求: 实现简单的四则运算计算器
#include <stdio.h>
int main() {
char operator;
double num1, num2, result;
printf("请输入运算符(+, -, *, /):");
scanf("%c", &operator);
printf("请输入两个操作数:");
scanf("%lf %lf", &num1, &num2);
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
printf("错误:除数不能为零!\n");
return 1;
}
break;
default:
printf("错误:无效的运算符!\n");
return 1;
}
printf("%.2f %c %.2f = %.2f\n", num1, operator, num2, result);
return 0;
}题目4:成绩转换
要求: 将百分制成绩转换为等级制
#include <stdio.h>
int main() {
int score;
char grade;
printf("请输入百分制成绩:");
scanf("%d", &score);
if (score < 0 || score > 100) {
printf("输入成绩无效!\n");
return 1;
}
switch (score / 10) {
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'E';
}
printf("成绩等级:%c\n", grade);
return 0;
}6. 编程练习题目
1. 判断三角形类型:输入三角形三边,判断是等边、等腰还是普通三角形 2. 日期判断:输入年月日,判断日期是否合法 3. 个人所得税计算:根据收入计算应缴个人所得税 4. 简单菜单程序:使用switch实现一个功能菜单 5. 字符分类:输入一个字符,判断它是字母、数字还是其他字符
7. 注意事项
通过系统学习选择结构,你可以编写出能够根据不同条件执行不同操作的智能程序,这是编程中的重要基础。