C语言程序的设计实验报告24Word文档下载推荐.docx
《C语言程序的设计实验报告24Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序的设计实验报告24Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。
#include<
stdio.h>
voidmain(void)
{
intk;
for(k=1;
k<
6;
k++)
printf("
k=%d\tthesumis%ld\n"
k,sum_fac(k));
}
longsum_fac(intn)
longs=0;
inti;
longfac;
for(i=1;
i<
=n;
i++)
fac*=i;
s+=fac;
returns;
2.源程序修改替换
(1)修改第1题中sum_fac函数,使其计算量最小。
(2)修改第1题中sum_fac函数,计算
。
3.跟踪调试
计算fabonacci数列前n项和的程序如下:
其中,longsum=0,*p=&
sum;
声明p为长整型指针并用&
sum取出sum的地址对p初始化。
*p表示引用p所指的变量(*p即sum)。
inti,k;
longsum=0,*p=&
scanf("
%d"
&
k);
=k;
i++){
sum+=fabonacci(i);
i=%d\tthesumis%ld\n"
i,*p);
}
longfabonacci(intn)
if(n==1||n==2)
return1;
else
returnfabonacci(n-1)+fabonacci(n-2);
单步执行程序,观察p,i,sum,n值。
(1)刚执行完scanf("
语句,p,i值是多少?
(2)从fabonacci函数返回后光条停留在哪个语句上?
(3)进入fabonacci函数,watch窗口显示的是什么?
(4)当i=3,从调用fabonacci函数到返回,n值如何变化?
4.程序设计
(1)编程让用户输入两个整数,计算两个数的最大公约数并且输出之(要求用递归函数实现求最大公约数)。
同时以单步方式执行该程序,观察递归过程。
(2)编程验证歌德巴赫猜想:
一个大于等于4的偶数都是两个素数之和。
编写一个程序证明对于在符号常量BEGIN和END之间的偶数这一猜测成立。
例如,如果BEGIN为10,END为20,程序的输出应为:
GOLDBACH'
SCONJECTURE:
Everyevennumbern>
=4isthesumoftwoprimes.
10=3+7
12=5+7
……
20=3+17
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();
源文件file2.c的容为:
voidfunc1(void)
x++;
y++;
ch++;
infile2x=%d,y=%d,chis%c\n"
头文件file.h的容为:
#include<
externintx,y;
/*外部变量的引用性说明*/
externcharch;
voidfunc1(void);
/*func1函数原型*/
4.3多源文件C程序的建立(结合第5题)
三、实验步骤及结果
(要求给出源程序和程序运行结果。
另外,根据实验容,记录编辑、编译、、调试程序的操作过程和实验现象)
(2.4容)
(修改后)
longsum_fac(intn);
intmain(void)
longfac=1;
s+=fac;
long
sum_fac(int
n);
int
main(void)
k;
for(k=1;
printf("
k=%d\tthe
sum
is
%ld\n"
return
0;
n)
static
s=0;
fac=1;
fac*=n;
s+=fac;
s;
}
floatsum_fac(intn);
k=%d\tthesumis%f\n"
floatsum_fac(intn)
floats=0;
s+=1.0/fac;
i=29
p=5
sum=0
n=3到n=2到n=1到n=3
math.h>
intGreatest_Common_divisor(intm,intn);
intm,n;
inputtwonumber\n"
);
%d%d"
m,&
Greatest_Common_divisor(m,n);
return0;
intGreatest_Common_divisor(intm,intn)
i=abs(m-n);
if((i==m)||(i==n)){
i);
else{
if(m>
n){
Greatest_Common_divisor(n,i);
Greatest_Common_divisor(m,i);
intisprime(intn)
intj,x;
for(j=2;
j<
n;
j++)
if(n%j==0)
{
x=0;
break;
}else
x=1;
return(x);
intas(intn,intm){
\n"
=4isthesumoftwoprimes\n"
for(;
n<
=m;
n+=2){
for(i=2;
=(n/2);
if((isprime(i)!
=0)&
&
(isprime(n-i)!
=0)){
%d=%d+%d\n"
n,i,n-i);
continue;
intmain()
intn,m;
n,&
m);
as(n,m);
四、实验体会
了解更多有关C语言的语法知识和循环结构以及熟练了调试过程。