C语言程序设计实验报告3Word文档格式.docx

上传人:b****5 文档编号:19674093 上传时间:2023-01-08 格式:DOCX 页数:19 大小:910.15KB
下载 相关 举报
C语言程序设计实验报告3Word文档格式.docx_第1页
第1页 / 共19页
C语言程序设计实验报告3Word文档格式.docx_第2页
第2页 / 共19页
C语言程序设计实验报告3Word文档格式.docx_第3页
第3页 / 共19页
C语言程序设计实验报告3Word文档格式.docx_第4页
第4页 / 共19页
C语言程序设计实验报告3Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验报告3Word文档格式.docx

《C语言程序设计实验报告3Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验报告3Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验报告3Word文档格式.docx

8return0;

9longsum_fac(intn)

10{

11longs=0;

12inti;

13longfac;

14for(i=1;

i<

=n;

i++)

15fac*=i;

16s+=fac;

17returns;

18}

解答:

(1)错误修改

1)未声明函数sum_fac(intn)的情况下,就调用函数。

2)第8行中,return0;

语句应放在主函数中。

3)第15,16行,应该被括号括起来,否则程序意义不是计算阶乘的和。

(2)修改错误后的程序为

#include<

longsum_fac(intn);

intmain(void)

{

intk;

longsum_fac(intn);

for(k=1;

printf("

return0;

}

longsum_fac(intn)

longs=0;

inti;

longfac=1;

for(i=1;

{

fac*=i;

s+=fac;

}

returns;

(3)运行结果

图13.2.1程序运行截图

3.2.2源程序修改替换

(1)修改第1题中sum_fac函数,使其计算量最小。

1)将long设为静态局部变量,当退出函数时,long的值被保存在内存中,再次调用函数时,不用再对long初始化,静态局部变量的值具有记忆性。

替换后的程序如下所示:

#include<

intk;

staticlongs=0;

2)运行截图及说明

图23.2.2

(1)程序运行截图

(2)修改第1题中sum_fac函数,计算

1)第1题计算的是阶乘的和,而现在需要计算阶乘的倒数的和。

只需将s+=fac替换为s+=1.0/fac即可。

doublesum_fac(intn);

k=%d\tthesumis%lf\n"

}

doublesum_fac(intn)

doubles=0;

s+=1.0/fac;

图33.2.2

(2)程序运行截图

3.2.3跟踪调试

计算fabonacci数列前n项和的程序如下:

其中,longsum=0,*p=&

sum;

声明p为长整型指针并用&

sum取出sum的地址对p初始化。

*p表示引用p所指的变量(*p即sum)。

;

longfabonacci(intn);

inti,k;

longsum=0,*p=&

scanf("

%d"

&

k);

=k;

i++){

sum+=fabonacci(i);

i=%d\tthesumis%ld\n"

i,*p);

return0;

longfabonacci(intn)

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

return1;

else

returnfabonacci(n-1)+fabonacci(n-2);

单步执行程序,观察p,i,sum,n值。

(1)刚执行完scanf("

语句,p,i值是多少?

p=(longint)0x28ff00i=60

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

光条停留在语句printf("

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

输入k=6时,i与sum的值的变化。

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

3.2.4程序设计

(1)编程让用户输入两个整数,计算两个数的最大公约数并且输出之(要求用递归函数实现求最大公约数)。

同时以单步方式执行该程序,观察递归过程。

1)解题思路

1.输入两个整数x,y。

2.判断x与y的大小,若x<

y,将x与y对换。

3.如果x%y=0,输出y。

4.否则,yueshu(y,x%y)。

2)程序清单。

intmain()

intx,y;

请输入两个不为0的整数:

"

);

%d%d"

x,&

y);

这两个整数的最大公约数是%d"

yueshu(x,y));

intyueshu(intx,inty)

intz;

if(x<

y){

z=x;

x=y;

y=z;

if(x%y==0)

returny;

returnyueshu(y,x%y);

3)测试。

测试用例

输入的两个整数

应输出的理论结果

用例1

2478

6

用例2

9828

14

图43.2.4

(1)用例1程序运行截图

图53.2.4

(1)用例2程序运行截图

(2)编程验证歌德巴赫猜想:

一个大于等于4的偶数都是两个素数之和。

1.先输入一个大于等于4的偶数z,n的起始值为0。

2.将z分为相等两部分,x1为z/2+n,另一部分为z-x1。

3.先判断x1是不是质数,如果不是,则n+1,直到n=z/2。

4.如果x1是质数,再判断x2是不是质数。

5.如果是质数,输出x1,x2。

6.n+1,直到n=z/2。

回到第2步。

2)程序清单:

#include<

intx1,x2,z,n,i,k;

请输入一个大于等于4的偶数:

z);

for(n=0;

n<

z/2;

n++){

x1=z/2+n;

for(i=2;

if(x1%i==0)break;

if(i==z/2){

x2=z-x1;

for(k=2;

x2;

k++){

if(x2%k==0)break;

if(k==x2)

该偶数是质数%d和质数%d之和\n"

x1,x2);

}

}

输入的偶数的值

应输出的理论结果

8

5,3

用例3

38

7,711,3

19,1931,3

用例4

44

31,1337,741,3

用例5

86

43,4367,1979,783,3

图63.2.4

(2)用例1程序运行截图

图73.2.4

(2)用例2程序运行截图

图83.2.4

(2)用例3程序运行截图

图93.2.4

(2)用例4程序运行截图

图103.2.4

(2)用例5程序运行截图

(3)编写一个程序证明对于在符号常量BEGIN和END之间的偶数这一猜测成立。

例如,如果BEGIN为10,END为20,程序的输出应为:

GOLDBACH'

SCONJECTURE:

Everyevennumbern>

=4isthesumoftwoprimes.

10=3+7

12=5+7

……

20=3+17

1)解题思路:

1.输入符号常量BEGIN和END。

2.定义偶数z为BEGIN+j,j的初始值为0。

3.判断j是否小于END-BEGIN。

4.若小于END-BEGIN,将z分为相等两部分,x1为z/2+n,另一部分为z-x1,n的初始值为0。

5.先判断x1是不是质数,如果不是,则n+1,直到n=z/2。

6.如果x1是质数,再判断x2是不是质数。

7.如果是质数,输出x1,x2。

8.j=j+2,回到第3步。

2)程序清单:

intx1,x2,z,n,i,k,j;

intBEGIN,END;

BEGIN,&

END);

\n"

=4isthesumoftwoprimes.\n"

for(z=BEGIN;

z<

=END;

z=z+2){

for(n=1;

if(k==x2)

%d=%d+%d\n"

z,x2,x1);

图113.2.4(3)用例1程序运行截图

图123.2.4(3)用例2程序运行截图

3.2.5选做题

假设一个C程序由file1.c、file2.c两个源文件和一个file.h头文件组成,file1.c、file2.c和file.h的内容分别如下,试编辑该多文件C程序,并编译和链接。

然后运行生成的可执行文件。

源文件file1.c的内容为:

#include"

file.h"

intx,y;

/*外部变量的定义性说明*/

charch;

x=10;

y=20;

ch=getchar();

infile1x=%d,y=%d,chis%c\n"

x,y,ch);

func1();

return0;

源文件file2.c的内容为:

voidfunc1(void)

x++;

y++;

ch++;

infile2x=%d,y=%d,chis%c\n"

头文件file.h的内容为:

externintx,y;

/*外部变量的引用性说明*/

externcharch;

voidfunc1(void);

/*func1函数原型*/

1)程序清单:

2)运行结果:

图133.2.5程序运行截图

图143.2.5程序运行截图

3.3实验小结

在编写程序时,一定要十分小心,尤其在循环语句的编写中,要注意循环继续和终止的条件。

如果出现错误,要仔细的调试,一步一步的来,不能急躁。

在编写程序时,尽量使程序的计算量要小,这需要掌握好变量的种类运用。

通过这次实验,我对程序调试的熟练度大大增加,了解了多文件程序的编译与链接。

并且了解一些新的算法思想。

这使我的思维角度大大拓宽。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1