编程题:计算圆面积与序列和

需积分: 9 5 下载量 61 浏览量 更新于2024-11-18 收藏 1.62MB DOC 举报
"09年南开100套题" 这篇资源主要包含了两道编程题,涉及的知识点主要是C语言的基础编程概念,包括数学运算、函数定义与调用、输入输出处理以及条件分支语句。 第一道题是计算半径为r的圆面积的程序。题目要求计算的是半径的一半乘以圆周率π再乘以半径,即πr²/2。在给定的程序中,已经给出了`double fun(double r)`函数,用于计算圆面积。其中,填空部分要求填写正确的内容: 1. 填空1: 计算圆面积的公式为πr²,因此需要填入`r*r`。 2. 填空2: `scanf()`函数用于从用户那里接收输入,它的正确使用形式是`scanf("%lf", &变量)`,所以这里应该填入`&x`,获取用户输入的半径值。 3. 填空3: 在`main`函数中调用`fun`函数,传入半径值x,所以填入`x`。 该题考察了对圆面积计算公式的理解,`scanf`和`printf`函数的使用,以及函数参数传递的原理。 第二道题要求编写一个函数`f(double x)`,计算S=f(-n)+...+f(0)+...+f(n)的和,其中f(x)的定义是一个分段函数。根据给出的例子,当n为5时,函数值应为10.407143。在给定的程序中,`f(double x)`函数的实现有误。问题出在条件分支语句上,应当修复如下: ```c double f(double x) { if (x == 0.0) return 1.0 / 3.0; // 当x等于0时,根据f(x)的定义返回1/3 else if (x == 2.0) return 1.0 / 3.0; // 当x等于2时,也返回1/3,因为f(x)的定义中x=2时值为1/3 else if (x < 0.0) return (x - 1) / (x - 2); // 对于x小于0的情况 else // x > 0 return (x + 1) / (x - 2); // 对于x大于0的情况 } ``` 此处的修复主要针对条件判断语句的排列和逻辑,确保函数`f(double x)`能够正确计算给定x值时的函数值。 两道题目均涉及到C语言的基本语法和数学计算,是初学者巩固基础知识的好练习。对于C语言学习者来说,理解和修正这些程序错误有助于提高编程能力和对程序执行逻辑的理解。