机试题1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时, 程序输出: x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000 【知识点详解】 1. 函数调用与返回值: 在C语言中,函数是一种可重用的代码块,可以通过函数名来调用执行。在给定的试题中,`fun` 函数根据输入的整数 `i` 返回不同的函数值。`fun` 函数内部使用了条件判断语句 `if...else` 来决定调用哪个函数。当 `i` 等于1时,函数应该调用 `f1`,即 `return f1(x)`;当 `i` 不等于1时,函数应调用 `f2`,即 `return f2(x, y)`。因此,填空处应填写如下: ```c double fun(int i, double x, double y){ if (i==1) return f1(x); // 正确填写:f1(x) else return f2(x, y); // 正确填写:f2(x, y) } ``` 2. 字符串比较与结构体数组排序: C语言中的字符串比较通常使用 `strcmp` 函数,它会比较两个字符串的字节序列,直到找到不同字符或者遇到结束符为止。在本例中,我们需要对结构体数组 `student` 按照姓名进行升序排序。`strcmp` 函数接收两个字符串参数,并返回一个整数值,表示它们的相对顺序。因此,在 `fun` 函数中,我们比较 `a[i].name` 和 `a[j].name`: ```c void fun(struct student a[], int n){ int t; // 用于交换元素的临时变量 for (i=0; i<n; i++) // 遍历整个数组 for (j=i+1; j<n; j++) // 对相邻元素进行比较 if (strcmp(a[i].name, a[j].name) > 0) // 使用strcmp比较姓名 { t = a[i]; // 保存当前元素 a[i] = a[j]; // 将较小的元素放到前面 a[j] = t; // 将较大的元素放到后面 } } ``` 3. 计算平均值与筛选大于平均值的数: 计算数组的平均值,需要将所有元素加起来然后除以元素的个数。大于平均值的数需要另外存储,这里可以使用另一个数组 `y`。假设原数组名为 `x`,元素个数为 `N`,则计算平均值的函数可能如下: ```c void calc_average_and_above(double x[], double y[], int N, double *avg){ double sum = 0; for (int k = 0; k < N; k++) sum += x[k]; *avg = sum / N; int count = 0; for (int k = 0; k < N; k++) if (x[k] > *avg) y[count++] = x[k]; } ``` 在这个例子中,`calc_average_and_above` 函数接受原数组 `x`,结果数组 `y`,数组长度 `N`,以及一个指向平均值的指针 `avg`。它首先计算平均值,然后遍历数组 `x`,将大于平均值的元素添加到 `y` 中。 总结,本题主要涉及C语言的函数调用、字符串比较、结构体数组操作以及计算平均值和筛选数据等知识点。理解这些概念对于编写C语言程序至关重要。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助