C语言编程:求圆面积与函数计算题目解析

需积分: 9 110 下载量 65 浏览量 更新于2024-08-02 3 收藏 1.62MB DOC 举报
"09年南开100套题(C语言)" 这些题目是针对二级C语言考试的上机模拟题,旨在帮助考生熟悉圆面积计算和序列求和的编程实现。首先,我们来详细解析第一套题目。 题目要求编写一个函数计算圆面积的一半,其中函数`fun`接收半径`r`作为参数,并返回`πr²/2`。在提供的代码中,`fun`函数缺失了计算圆面积的核心部分。根据圆面积公式,填空1处应填写`r*r`,使得函数完整计算圆面积的一半。主函数`main`中,`scanf`用于从用户那里获取半径值,填空2处应放置`&x`,因为`scanf`需要变量的地址来存储输入值。填空3处,将半径值`x`传递给`fun`函数进行计算。因此,完整的代码如下: ```c #include<stdio.h> double fun(double r) { return 3.14159 * r * r / 2.0; } void main() { double x; printf("Enter x:"); scanf("%lf", &x); printf("s=%lf\n", fun(x)); } ``` 题目还涉及了`scanf`和`printf`函数的使用以及函数调用的基本概念。`scanf`用于从标准输入读取数据,`printf`用于向标准输出打印数据。在`scanf`中,`%lf`是用于读取双精度浮点数的格式控制,而`&`是地址运算符,确保数据被存入对应的变量中。同样,`printf`中的`%lf`用于输出双精度浮点数。 第二套题目要求计算序列的和,序列由函数`f(x)`定义,当`x`等于0或2时返回0,否则返回`(x+1)/(x-2)`。函数`fun`的错误在于没有正确处理边界条件。为了计算S,我们需要对`f(x)`从`-n`到`n`求和。修正后的代码如下: ```c #include<stdlib.h> #include<conio.h> #include<stdio.h> #include<math.h> double f(double x) { if (x == 0.0 || x == 2.0) return 0.0; else if (x < 0.0) return (x - 1) / (x - 2); else return (x + 1) / (x - 2); } int main() { int n; double sum = 0.0; printf("Enter n:"); scanf("%d", &n); for (int i = -n; i <= n; i++) { sum += f(i); } printf("The sum is: %.6lf\n", sum); return 0; } ``` 在这个修复的版本中,我们增加了`main`函数中计算序列和的循环,以及处理用户输入的`n`值。循环遍历从`-n`到`n`的所有整数,对每个整数调用`f(x)`并将结果累加到`sum`中。最后,使用`printf`输出序列的和,保留6位小数以提高精度。 这两套题目覆盖了C语言中的基础计算、函数调用、输入输出以及条件判断等关键知识点,是准备C语言考试的典型练习。