← 2024 · MPS芯源 · 数字FPGA设计(成都) 笔试
推荐答案
测试一下
题目
请使用 C 语言,完成如下程序设计(20分):
A. 编写函数 func_a,将输入的 3 个整数,按从大到小的顺序打印(printf)出来。
B. 编写函数 func_b,返回值为输入的 10 个整数的最大值。
参考答案与知识点
参考答案
func_a 实现三个整数从大到小排序并打印。可借助临时变量通过比较交换:若 a < b 则交换;若 a < c 则交换;若 b < c 则交换。之后按 a, b, c 顺序 printf("%d %d %d", a, b, c)。注意使用整型参数(如 int a, int b, int c)并确保顺序为降序。func_b 实现返回十个整数最大值。可用数组接收参数(如 int arr[10]),假设第一个元素为最大值,遍历比较更新,最后返回 max。注意数组下标范围 0~9,循环从 i=1 开始。示例代码:
void func_a(int a, int b, int c) {
int tmp;
if (a < b) { tmp = a; a = b; b = tmp; }
if (a < c) { tmp = a; a = c; c = tmp; }
if (b < c) { tmp = b; b = c; c = tmp; }
printf("%d %d %d", a, b, c);
}
int func_b(int arr[10]) {
int max = arr[0];
for (int i = 1; i < 10; i++)
if (arr[i] > max) max = arr[i];
return max;
}
易错点:1) 排序仅用三个比较即可,无需冗余;2) printf 格式不要漏换行或空格;3) 函数返回值类型与 return 一致;4) 数组参数传递时需注意大小,或使用指针;5) 边界条件如数组长度不小于 1。
涉及知识点
- C语言函数定义与参数传递
- 条件判断和交换算法
- 数组遍历与最大值记录
- printf格式化输出
- 变量作用域与返回值