实验7 函数
一、 实验目的
1、掌握定义函数的方法;
2、掌握函数实参与形参的对应关系以及“值传递”、“地址传递”的方式;
3、掌握函数的嵌套调用和递归调用的方法;
4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。
二、实验内容和步骤
1、 改错
上机调试下面的程序,记录系统给出的出错信息,并指出出错原因. main() { int,y;
printf(\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
/************found************/ for (____(1)____;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( ____(2)____ ) s += i;
printf(\}
(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
long int s=0; for (i=0;i if ( arr[i]%3!=0&&arr[i]%5!=0 ) /************found************/ ____(1)____; return (s); } main() { int a[12]={1,8,5,10,6,18,7,2,4,12,9,11}; clrscr(); /************found************/ printf(\ } (3)程序实现的功能是:将字符串倒序存放并输出。 例如,当字符串为\输出:\ (注意: 以下给出部分源程序请在/*******begin********/ 与 /********end*********/ 之间填入你编写的若干语句。请勿改动其它位置的任何内容。) #include /***********begin***********/ /************end************/ } main() { char str1[80]=\ clrscr(); printf(\ fun(str1); printf(\ nono(str1); } nono(char str1[]) {FILE *f; f=fopen(\ fprintf(f,\ fclose(f); } (4)统计字符串中的所有空格(或指定字符)的个数并输出。 例如,当字符串为\输出:Result is: 4 (注意: 以下给出部分源程序请在/*******begin********/ 与 /********end*********/ 之间填入你编写的若干语句。请勿改动其它位置的任何内容。) #include /***********begin***********/ /************end************/ } main() { char str1[80]=\ int count; clrscr(); printf(\ count=fun(str1); printf(\ nono(count); } nono(int count) {FILE *f; f=fopen(\ fprintf(f,\ fclose(f); } 3、注意:以下所有函数都需验证,即编写主函数调用所编