### C语言练习题精选知识点解析
#### 一、基本输入输出与算术运算
**题目1**: 从键盘上输入两个整数,求出它们的和。
- **知识点**: 输入输出函数 `scanf` 和 `printf` 的使用;基本算术运算符 `+` 的用法。
- **代码详解**:
```c
int x, y, s; // 定义变量
scanf("%d", &x); // 输入第一个整数
scanf("%d", &y); // 输入第二个整数
s = x + y; // 计算两数之和
printf("s=%d", s); // 输出结果
```
#### 二、浮点数运算与格式化输出
**题目2**: 已知三角形的底和高,求出三角形的面积。
- **知识点**: 浮点数的定义与运算;格式化输出 `printf` 的使用。
- **代码详解**:
```c
float s; // 定义浮点数变量
s = x * y / 2.0; // 使用浮点数除法计算面积
printf("s=%f", s); // 输出结果
```
#### 三、用户输入与数据类型转换
**题目3**: 从键盘上输入三角形的底和高,求出三角形的面积。
- **知识点**: 用户输入的处理;数据类型转换(`int` 转 `float`)。
- **代码详解**:
```c
int x, y;
float s;
scanf("%d", &x); // 输入底
scanf("%d", &y); // 输入高
s = (float)x * y / 2.0; // 计算面积
printf("s=%f", s); // 输出结果
```
#### 四、数学函数库与公式应用
**题目4**: 已知三角形的三边长,求出三角形的面积。
- **知识点**: 导入数学库 `#include <math.h>`;使用数学函数 `sqrt` 计算平方根;半周长公式的应用。
- **代码详解**:
```c
float p, s;
p = (a + b + c) / 2.0; // 计算半周长
s = sqrt(p * (p - a) * (p - b) * (p - c)); // 应用海伦公式
printf("s=%f", s); // 输出结果
```
#### 五、求解一元二次方程
**题目5**: 已知二元一次方程的三个系数,求方程的一个根。
- **知识点**: 导入数学库 `#include <math.h>`;使用数学函数 `sqrt` 计算平方根;一元二次方程根的计算公式。
- **代码详解**:
```c
float root;
root = (-b - sqrt(pow(b, 2) - 4 * a * c)) / (2.0 * a); // 求根公式
printf("root=%f", root); // 输出结果
```
#### 六、条件语句与符号函数
**题目6**: 编程实现符号函数。当 `x < 0`,则 `sgn(x) = -1`;当 `x > 0`,则 `sgn(x) = +1`;当 `x = 0`,则 `sgn(x) = 0`。
- **知识点**: 条件语句 `if` 的使用;条件运算符 `? :` 的使用。
- **代码详解**:
```c
float x;
int y;
scanf("%f", &x); // 输入 x
y = (x > 0) ? 1 : (x == 0) ? 0 : -1; // 条件运算符实现
printf("x=%f, sgn(x)=%d", x, y); // 输出结果
```
#### 七、使用 `switch` 实现多分支选择
**题目7**: 从键盘上输入数字星期,在屏幕上显示英文星期。
- **知识点**: `switch` 语句的使用;字符串输出。
- **代码详解**:
```c
float x;
scanf("%f", &x); // 输入数字星期
switch ((int)x) {
case 0: printf("Sunday.\n"); break;
case 1: printf("Monday.\n"); break;
case 2: printf("Tuesday.\n"); break;
case 3: printf("Wednesday.\n"); break;
case 4: printf("Thursday.\n"); break;
case 5: printf("Friday.\n"); break;
case 6: printf("Saturday.\n"); break;
default: printf("不存在这个星期!\n");
}
```
#### 八、逻辑判断与表达式
**题目8**: 从键盘输入三角形的三边长,判断出这三边能否构成三角形。
- **知识点**: 逻辑运算符的使用;复合条件表达式的构建。
- **代码详解**:
```c
int a, b, c;
scanf("%d", &a); // 输入第一条边
scanf("%d", &b); // 输入第二条边
scanf("%d", &c); // 输入第三条边
if ((a + b > c) && (a + c > b) && (b + c > a)) {
printf("这三边能构成三角形!");
} else {
printf("这三边不能构成三角形!");
}
```
#### 九、排序算法基础
**题目9**: 从键盘输入三个整数,将这三个数按从大到小的顺序排列起来。
- **知识点**: 排序算法的基础实现;使用临时变量进行值交换。
- **代码详解**:
```c
int a, b, c, temp;
scanf("%d", &a); // 输入第一个数
scanf("%d", &b); // 输入第二个数
scanf("%d", &c); // 输入第三个数
if (a > b) {
if (a > c) {
if (b > c) {
printf("这三数从大到小的顺序为:%d,%d,%d", a, b, c);
} else {
printf("这三数从大到小的顺序为:%d,%d,%d", a, c, b);
}
} else {
printf("这三数从大到小的顺序为:%d,%d,%d", c, a, b);
}
} else {
if (b > c) {
if (a > c) {
printf("这三数从大到小的顺序为:%d,%d,%d", b, a, c);
} else {
printf("这三数从大到小的顺序为:%d,%d,%d", b, c, a);
}
} else {
printf("这三数从大到小的顺序为:%d,%d,%d", c, b, a);
}
}
```
以上是针对“C语言练习题精选”所涉及的主要知识点及代码解析,这些练习有助于理解C语言的基本语法和控制结构,并通过实际操作来提高编程能力。