实验六答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六函数与编译预处理答案

一、断点的设置和取消、单步执行跟踪进入函数和跳出函数方法

练习

2、调试练习:

要求:模仿示例调试以下程序,直到输出正确结果,源程序名为error6_2.c

程序功能:利用函数调用求“1!+2!+3!+4!+...+10!”的值(参见实验教材72页程序填空题第(1)小题)

源程序(有错误的程序——不是语法错误,而是算法错误或逻辑错误):

改正错误后的源程序:

void main()

{

long s=0,i;

long mm(int k);

for(i=1;i<=10;i++)

s=s+mm(i);

printf("1!+2!+3!+...+10!=%ld\n",s);

}

long mm(int k)

{

long t=1, j;

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

t=t*j;

return (t);

}

3、综合调试、改错练习:

以下程序有多处错误,请综合运用前面所学过的所有知识和VC++的调试手段,改正程序的各种错误,使其运行出正确的结果。程序的功能是:利用函数调用求任意两个整数的和。

改正错误后的源程序:

main()

{

int sum(int a,int b);

int x,y;

scanf("%d,%d",&x,&y);

printf("x=%d,y=%d\n",x,y);

printf("%d+%d=%d\n",x,y, sum(x,y));

}

int sum(int a, int b)

{

return (a+b);

}

二、编程练习

利用VC++编写程序,并调试、运行,直到输出正确结果。编程练习1:

注意:

这里提供了以填空的形式出现源程序参考清单,目的是给同学们一个思路。最好不要将此源程序清单复制到VC++中,否则会出现多处语法错误。同学们可以据此思路来填写有关语句,从而完成程序。在调试程序时,一定要运用前面学过的方法。

下面函数是实现求[1,3000]能被17或23整除的整数的个数。请将程序补充完整,并调试运行,直到输出正确结果。(源文件名为blank6_1.c)

完成填空后的源程序:

#include

int f(int m, int n)

{

int i, count=0;

for(i=m; i<=n; i++)

if(i%17==0||i%23==0)

count++;

return count;

}

main()

{int m, n ;

scanf("%d%d", &m, &n);

printf("count=%d\n", f(m, n));

}

编程练习2:

(1)编写一函数接受主调函数实参n(这里n==5),并输出如下图形。n的值通过键盘输入,并由主函数中的语句来由实现。程序以文件名print_1.c保存。

0***0

*0*0*

**0**

*0*0*

0***0

源程序:

#include

void printg(int);/* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/ main ( )

{

int a;

printf("please input a number:\n");

scanf("%d", &a);

printg(a); /* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/

}

void printg(int n)

{int i,j;

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

{

for(j=1;j<=n;j++)

if(i==j||i+j==n+1)

printf("0");

else

printf("*");

printf("\n");

}

}

(2)写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。源程序以文件名primefun.c保存。

源程序1:

prime(int n)

{int i,j;

for(i=2;i

{

j=n%i;

if(j==0)

{

printf("%d不是素数\n",n);

break;

}

}

if(i==n)

printf("%d是素数\n",n );

}

main()

{int n;

printf("请输入一个大于2的正整数:\n");

label: scanf("%d",&n);

if(n<=2) {printf("输入数据错误,请重新输入:\n");goto label;} prime(n);

}

源程序2:

int prime(int n)

{int i,j,flag;

for(i=2;i

{

j=n%i;

if(j==0)

{

flag=0;

break;

}

}

if(i==n)

flag=1;

return flag;

}

main()

{int n,f;

printf("请输入一个大于2的正整数:\n");

label: scanf("%d",&n);

if(n<=2) {printf("输入数据错误,请重新输入:\n");goto label;} f=prime(n);

if(f==1)

printf("%d是素数\n",n );

else

printf("%d不是素数\n",n );

}

相关文档
最新文档