C语言编程:字符串连接与数组平均值计算

4星 · 超过85%的资源 需积分: 3 66 下载量 50 浏览量 更新于2024-07-31 4 收藏 75KB DOC 举报
"这是一个关于2011年3月计算机二级C语言上机考试的题库,其中包含了两个填空题目,分别涉及字符串拼接和数组平均值计算的问题。" 第一题解析: 题目要求编写一个函数`fun()`,该函数接收两个字符串`str1`和`str2`作为参数,然后将`str2`拼接到`str1`的末尾。在提供的代码中,`void fun(char* str1, char* str2)`是待填充的函数。在解答过程中: 1. `while(【1】)`:这部分的目的是计算`str1`的长度。应填入`*(p1+i) != '\0'`,当`p1`指向的字符不是字符串结束标志'\0'时,继续执行循环,直到找到'\0'为止。 2. `for(;【2】; i++)`:这个for循环用于将`str2`的字符逐个复制到`str1`的末尾。`【2】`的条件应该是`*p2 != '\0'`,表示在`p2`未到达`str2`的结束标志之前,继续复制。 3. `*(p1+i)=【3】;`:这部分要将`str2`当前指针位置的字符赋值给`str1`的新位置。所以应填入`*p2`,这样可以将`p2`指向的字符复制到`p1+i`的位置。然后,`*p2++`会使得`p2`指向下一位字符,以便下一次循环。 完整后的代码段如下: ```c void fun(char* str1, char* str2) { int i = 0; char* p1 = str1; char* p2 = str2; while (*(p1 + i) != '\0') i++; for (; *p2 != '\0'; i++) *(p1 + i) = *p2++; *(p1 + i) = '\0'; } ``` 第二题解析: 题目要求编写一个函数`fun()`,计算一维数组`x[N]`的平均值,并四舍五入保留两位小数。函数的原型可能类似于`double fun(double x[], int N)`。解答如下: 1. 首先,初始化一个变量`sum`来存储数组元素的总和,然后遍历数组,将每个元素累加到`sum`。 2. 计算平均值`avg`,即`sum`除以数组长度`N`。 3. 使用`printf`或其他方法将结果格式化为保留两位小数的浮点数。可以使用`%.2lf`格式说明符来实现这一需求。 示例代码可能如下: ```c double fun(double x[], int N) { double sum = 0.0; for (int i = 0; i < N; i++) sum += x[i]; double avg = sum / N; return avg; } // 在main函数中调用 double array_avg = fun(x, 10); printf("avg = %.2lf\n", array_avg); ``` 这两个题目涵盖了C语言的基础知识,包括字符串操作、指针的使用以及数组的处理,这些都是C语言学习者必须掌握的关键概念。