实验十一函数(2 班级 姓名 指导老师 成绩 第 机房 号机器时间: 实验目的:1.进一步掌握函数的定义和调用 2.掌握函数的嵌套调用 3.了解函数的递归调用 4.重点掌握数组作函数参数 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果 实验内容 读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 include char char(char ch) if(ch>='A'&&ch<='Z) ch=c return ch main ()
实验十一 函数(2) 班级______________姓名___________指导老师_____________成绩___________ 第_____________机房___________号机器 时间:________________________ 实验目的:1. 进一步掌握函数的定义和调用。 2. 掌握函数的嵌套调用。 3. 了解函数的递归调用。 4. 重点掌握数组作函数参数。 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果。 实 验 内 容 一、读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1. # include f(int b[ ],int m,int n) { int i,s=0; for(i=m;i char cchar(char ch) { if(ch>=’A’&&ch<=‘Z') ch=ch-‘A'+‘a'; return ch; } main()
第一部分c语言程序设计上机指导 char s[ ]="ABC+abc=defDEF " i le( s[il s[i]= char(s【i]); printf("旨s\n",s) 分析结果 #include funcl(int i) unc2(int i) char st[]="hello, friend! funcl(int i) printf("s",st【i]) if(i [ int n if(a[i]<a[j]) I t=a[i]; a[i]=a[j] i a[jl=t i 1 int aa[10]={1,2,3,4,5,6,7,8,9,10},i (i=0; i<10; i++) printf("d ," aa [i]) 分析结果 行结果
第一部分 C 语言程序设计上机指导 ·59· ·59· { int i=0; char s[ ]="ABC+abc=defDEF"; while( s[i] ) { s[i]=cchar(s[i]); i++; } printf("%s\n",s); } 分析结果 运行结果 3. #include func1(int i); func2(int i); char st[]="hello,friend!"; func1(int i) { printf("%s",st[i]); if(i sort(int a[ ],int n) { int i , j , t ; for( i=0 ;i<n-1 ; i++ ) for( j=i+1; j<n ; j++) if(a[i]<a[j]) { t=a[i]; a[i]=a[j] ; a[j]=t ; } } main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d ,",aa[i]); printf('\n'); } 分析结果 运行结果
60 C语言程序设计上机指导与同步训练 #include I switch(g case o: return case 1 i long int k printf("\nk= d\n",k) 运行结果 k=34 6. #include int f(int i int i,j, s=0 if(i>2)i=3-j; e turn main( inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}} printf("d\n”,f(a) 、完成程序 要求:根据要求,分析给出的上下语句,填写程序 1.以下程序调用 findmax函数返回数组中的最大值,在下划线处应填入正确内容。 lude findmax(int a[5] int n) int s for(i=1,s=a[0];i<n;i++)
·60· C 语言程序设计上机指导与同步训练 ·60· 5. #include long f( int g) { switch(g) { case 0:return 0; case 1: case 2: return 1; } return ( f(g-1)+ f(g-2)); } main ( ) { long int k; k = f(9); printf("\nk= %d\n",k); } 分析结果 运行结果 k=34 6. #include int f(int b[ ][4]) { int i,j,s=0; for(j=0;j2) i=3-j; s+=b[i][j]; } return s; } main( ) { int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}}; printf(“%d\n”,f(a) ); } 分析结果 运行结果 二、完成程序 要求:根据要求,分析给出的上下语句,填写程序。 1. 以下程序调用 findmax 函数返回数组中的最大值,在下划线处应填入正确内容。 # include findmax(int a[5],int n) { int i; int s ; for(i=1 ,s=a[0]; i<n; i++) if ( ) s = a[i];
第一部分c语言程序设计上机指导 return(a)i1 main() intx[5]={12,21,13,6,18} printf("gd\n", findmax(x, 5)) 2. mystrlen函数的功能是计算字符串的长度,并作为函数值返回。请填空,并配写主调 函数 #include t mystrlen(char str[ ]) for(i=0 !='\0';i++); return( 3.以下程序中函数 reverse的功能是将a所指数组中的内容进行逆置,请填入正确 1容 #include reverse(int a[ ] int n) I int i,ti or(i=0;i int SunFun(int n)i ont F( int x) main() intf("The 号dln”, SunFun(10)) SunFun(int n)
第一部分 C 语言程序设计上机指导 ·61· ·61· return(a); } main() { int x[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 2. mystrlen 函数的功能是计算字符串的长度,并作为函数值返回。请填空,并配写主调 函数。 #include int mystrlen(char str[ ]) { int i; for(i=0; ____________!=‘\0';i++); return(_______); } main ( ) { _______________; ____________________; _______________________; } 3. 以下程序中函数 reverse 的功能是将 a 所指数组中的内容进行逆置,请填入正确 内容。 #include reverse(int a[ ],int n) { int i,t; for(i=0;i int SunFun(int n) ; ont F( int x) ; main() { printf("The sum=%d\n",SunFun(10)); } SunFun(int n) {
C语言程序设计上机指导与同步训练 int x,S=O for(x=li x<=n; x++) S+=F( return si 三、调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果 如何?上机调试之。 1.以下程序是将字符串中所有指定字母由小写转换成大写字母 ss(char s[ ] char t) i int i=0; while(s【i]) if(s[i]=t)s[i]=t-"a'+'A'; I char strl[100]-abcddfefdbd",c='d printf("s\n”,stx1) 正确 运行结果 错误 错误所在 2.函数 sstrcmp(的功能是对两个字符串进行比较。当s数组中字符串和t数组中字符 串相等时,返回值为0;当s数组中字符串大于t数组中字符串时,返回值大于0:当s数 组中字符串小于t数组中字符串时,返回值小于0(功能等同于库函数 strcmp0)。 #include int sstrcmp(char s[ ], char t[]) whi1e(s[i]&&t[]&&s[i]==t[]); return s[i]-t[j main() char s1[50],s2[50]; scanf("Bs%s",sl, s2) x=sstrcmp(sl, s2) printf("\n器d\n",x);
·62· C 语言程序设计上机指导与同步训练 ·62· int x,s=0; for(x=1;x int sstrcmp(char s[ ],char t[]) { int i=0 , j=0 ; while(s[i]&&t[j]&& s[i]== t[j] ) ; return s[i]-t[j]; } main() { int x; char s1[50],s2[50]; scanf("%s%s",s1,s2); x= sstrcmp(s1,s2); printf("\n%d\n",x); }
第一部分c语言程序设计上机指导 错误 错误所在 3.以下程序通过调用子函数,实现将a数组中的两元素值交换;b数组中两元素值不交换。 [int t t=c[o];c[o]=c[1];c[]=t swap2(int co, int cl) t=c0;c0=c1;c1=t inta[2]={3,5},b[2]={3,5} swap2(&b[0],&b[1]) printf(“d影a影ddn",a[0],a[1],b[0],b[1]) 正确 运行结果 4.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10 岁,其余学生一个比一个大2岁,求第10位学生的年龄。 printf(” Age is器d\n”,age(n) int age(int n) return(c 正确 L运行结果 错误所在
第一部分 C 语言程序设计上机指导 ·63· ·63· 正确 运行结果: 错误 错误所在: 应改为: 3. 以下程序通过调用子函数,实现将 a 数组中的两元素值交换;b 数组中两元素值不交换。 swap1(int c[ ]) { int t; t=c[0];c[0]=c[1];c[1]=t; } swap2(int c0,int c1) { int t; t=c0;c0=c1;c1=t; } main( ) { int a[2]={3,5},b[2]={3,5}; swap1(a[0]) ; swap2(&b[0],&b[1]); printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]); } 正确 运行结果: 错误 错误所在: 应改为: 4. 以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为 10 岁,其余学生一个比一个大 2 岁,求第 10 位学生的年龄。 main() { int age( int n) ; int n =10; printf (“ Age is %d\n” , age (n); }; int age(int n); { int c; c = age (n-1)+2 ; return ( c ) ; } 正确 运行结果: 错误 错误所在: 应改为:
C语言程序设计上机指导与同步训练 四、写程序 1.函数 delete的作用是删除有序数组a中的指定元素x,主调函数中调用语句 m= delete(a,n,x);其中n为删除前数组元素的个数,请写出删除 delete函数内容 2.编写一个函数Sum,计算任一输入的整数的各位数字之和,在主函数中输入该整数 并输出各位数字之和。 3.编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 4.输入3种产品的4个月的销量,用函数求每种商品的平均销量,并输出
·64· C 语言程序设计上机指导与同步训练 ·64· 四、写程序 1. 函数 delete 的作用是删除有序数组 a 中的指定元素 x ,主调函数中调用语句 m=delete(a , n , x ); 其中 n 为删除前数组元素的个数,请写出删除 delete 函数内容。 2. 编写一个函数 Sum,计算任一输入的整数的各位数字之和,在主函数中输入该整数, 并输出各位数字之和。 3. 编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 4. 输入 3 种产品的 4 个月的销量,用函数求每种商品的平均销量,并输出