华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(6)

2020-04-03 13:02

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

(2)

(3)

(4)

2.3 实验体会

源程序改错中,依赖于平时良好的输入习惯,在输入过程中已经可以检查出大多数语法错误,或者拼写错误。接下来再检查一下逻辑是否有误,无误则进行多组数据的编译检验,确认最终无误。

源程序修改与替换题锻炼我们举一反三触类旁通的能力,在平时写程序时就应该思考对于一个问题有没有多钟解决方案,使用不同的逻辑结构多种尝试寻求最优解。

程序设计题则是自主的设计实践,在练习中获得进一步提升,增强对于所学知识的熟练度和理解程度,锻炼能力。

21

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

3函数与程序结构实验

2.1实验目的

(1)熟悉和掌握函数的定义、声明,函数调用与参数传递方法,以及函数返回值类型的 定义和返回值使用。

(2)熟悉和掌握不同存储类型变量的使用。 (3)熟悉多文件编译技术。 (4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。

2.2实验内容及要求

2.2.1. 源程序改错

下面是计算s = 1!+2!+3!+?+n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子源程序进行调试修改,使之能够正确完成指定任务。

程序代码:

#include int main(void) {

int k;

for(k=1;k<6;k++)

printf(\

}

return 0;

longsum_fac(int n) {

long s = 0; int i; long fac;

for(i=1; i<=n; i++) fac *= i;

s += fac; return s; }

【分析及改正】本程序共存在3处错误,分析如下:

(1)} return 0;

错误原因:return返回值应该在main函数内部 改正:return 0;} (2)long fac;

错误原因:fac未赋予初始值,会导致接下来计算错误。 改正:long fac=1; (3)s += fac;

错误原因:语句s += fac;不在函数for内部,逻辑出错。 改正:for(i=1;i<=n;i++){ fac*=i; s+=fac; }

22

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

2.2.2 源程序修改替换

(1)修改上术源程序中的sum_fac函数,使其计算量最小。 (2)修改上述源程序中的sum_fac函数,计算s =1+1/(2!)+1/(3!)+??+1/(n!)

【分析】(1)利用static变量类型对循环进行化简,保留上一个值,避免

多次重复循环。流程图如下:

(2)相比较于源程序,变动之处在于求的是阶乘的倒数和,则在循环中多一步求倒数的过程,并对倒数求和。流程图如下:

【程序】(1)

#include long sum_fac(); int main() {

int k;

23

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

for(k=1;k<6;k++)

printf(\ return 0; }

static long s=0,fac=1; long sum_fac(int n) {

fac*=n; s+=fac; return s; }

(2)

#include float sum_fac(); int main() {

int k;

for(k=1;k<6;k++)

printf(\ return 0; }

float sum_fac(int n) {

long fac=1; int i;

float x,s=0;

for(i=1;i<=n;i++){ fac*=i; x=1.0/fac; s+=x; }

return s; }

【测试】(1)程序运行结果如下,程序正确。

(2)程序运行结果如下,程序正确。

24

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

2.2.3跟踪调试

下面是计算fabonacci数列前n项和的源程序,现要求单步执行该程序,并观察p,i,sum,n的值,即:

(1)刚执行完“scanf(”%d”,&k);”语句时,p,i值是多少?

(2)从fabonacci函数返回后,光条停留在哪个语句上?

(3)进入fabonacci函数时,watches窗口显示的是什么?

等图像。

(4)当i=3时,从调用fabonacci函数到返回,n值如何变化?

n=1到n不存在;n=1到n=2到n不存在;n=1到n=2到n=3到n不存在。 【源程序】

#include long fabonacci(int); int main() {

int i,k;

long sum=0,*p=∑ scanf(\ for(i=1;i<=k;i++){

sum+=fabonacci(i);

printf(\ }

return 0; }

long fabonacci(int n){

if(n==1||n==2)return 1;

25


华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财务案例思考题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: