C语言填空题:函数与结构体数组排序

下载需积分: 10 | DOC格式 | 247KB | 更新于2025-01-05 | 110 浏览量 | 5 下载量 举报
1 收藏
一、C语言填空题详解 1. 题目描述: 此题目考察对C语言函数设计与调用的理解。给定的程序定义了两个函数:`f1(double x)`和`f2(double x, double y)`,其中`f1`用于计算输入的`x`的平方,`f2`用于计算两个输入的乘积。函数`fun`根据整数参数`i`的不同返回两个函数的结果。当`i`等于1时,调用`f1(x)`;否则调用`f2(x, y)`。程序的目标是实现`fun`函数,使得调用`fun(1, 5.0, 3.0)`和`fun(2, 5.0, 3.0)`后,输出`x1`、`x2`的值以及它们的乘积。 **填空答案**: - 在`__1__fun(int i, double x, double y)`中,应该填写`return f1(x);` (在`i == 1`分支下)。 - 同样,在`else`分支下,应填写`return f2(x, y);`。 代码片段: ```c double fun(int i, double x, double y) { if (i == 1) return f1(x); else return f2(x, y); } ``` 2. 第二个题目: 要求实现一个排序函数`fun`,用于对一个结构体数组`struct student`按照姓名的字典序进行升序排列。该结构体包含学号、姓名和三门课的成绩。题目没有明确指定排序算法,但通常会选择使用冒泡排序或快速排序等简单直观的方法。 **填空答案**: - 在`void fun(struct student a[], int n)`中,需要声明一个临时变量`t`来存储比较结果,填`struct student temp;`。 - `for`循环的结束条件应该是`n-1`,填`n-1`。 - 比较字符串`__3__`即姓名字段,应该填`a[i].name`。 代码片段: ```c void fun(struct student a[], int n) { struct student temp; int i, j; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (strcmp(a[i].name, a[j].name) > 0) { // 交换元素 temp = a[i]; a[i] = a[j]; a[j] = temp; } } } } ``` 总结: 这两个题目着重测试了C语言的基本编程技能,包括函数设计、参数传递、控制结构以及字符串操作。第一题考察了如何根据条件选择调用不同函数,第二题则要求实现简单的数据结构排序算法。理解并正确填充这些空白部分是掌握C语言基础的关键。

相关推荐