实验7 函数
实验目的
1、掌握定义函数的方法;
2、掌握函数实参与形参的对应关系以及“值传递”、“地址传递”的方式;
3、掌握函数的嵌套调用和递归调用的方法;
4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
二、实验内容和步骤
改错
上机调试下面的程序,记录系统给出的出错信息,并指出出错原因.ain()
{
int,y;
printf("%d\n",sum(x+y));
int sum(a,b)
{
int a,b;
return(a+b);
}
}
2、程序填空
(1)求两个正整数m,n之间的非素数之和(包含m和n)。
例如:如果m=2,n=20,则程序的输出应为:Sum is: 132。
(程序有两个空(1)、(2)需要补充完整。请将程序中的____(1)____和____(2)____删除后,在相应的位置填入正确答案并调试直到得到正确结果为止。
注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构!)
#include
#include
#include
prime( int m )
{ int i,k,j;
k=sqrt(m);
/************found************/
for (j=2;j <= k; j++)
if (m % j == 0)
break;
if( j<=k ) return (0);
else return (1);
}
main()
{ int m=2,n=20,i,j,k,s;
clrscr();
s = 0;
for ( i=m; i<=n; i++)
/************found************/
if( prime(i)==0 )
s += i;
printf("Sum is: %d\n",s);
}
(2)求一维数组a中既不能被3整除也不能被5整除的元素之和。
例如:如果数组a中的元素如下:1,8,5,10,6,18,7,2,4,12,9,11,则程序的输出结果应为:
The result is : 33。
(程序有两个空(1)、(2)需要补充完整。请将程序中的____(1)____和____(2)____删除后,在相应的位置填入正确答案并调试直到得到正确结果为止。
注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构!)
#include
#include
#include
long int fun( a , n )
int a[12] , n;
{int i;
long int s=0;
for (i=0;i
if ( a[i]%3!=0&&a[i]%5!=0 )
/************found************/
s=s+a[i];
return (s);
}
main()
{ int a[12]={1,8,5,10,6,18,7,2,4,12,9,11};
clrscr();
/************found************/
printf("The result is : %ld\n",fun( a , 12 ));
}
(3)程序实现的功能是:将字符串倒序存放并输出。
例如,当字符串为"This Is a c Program"
输出:"margorP c a sI sihT"
(注意: 以下给出部分源程序请在/*******begin********/ 与 /********end*********/
之间填入你编写的若干语句。请勿改动其它位置的任何内容。)
#include
#include
void fun(char str1[])
{
/***********begin***********/
int i;char t;
for(i=0;i<=9;i++)
{t=str1[i];str1[i]=str1[18-i];str1[18-i]=t;}
/************end************/
}
main()
{ char str1[80]="This Is a c Program";
clrscr();
printf("String is: %s\n",str1);