任务25:数组作为函数参数 《编程语言-C语言》45分钟专题训练

| 2份
| 35页
| 88人阅读
| 2人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第25卷: 数组作为函数参数 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.对于使用一维数组名作函数实参,以下说法中正确的是( ) A.实参数组必须说明大小 B.实参数组类型与形参数组类型可以不匹配 C.形参数组无需声明数组大小 D.实参数组名与形参数组名必须一致 2.下列有关数组名作为函数参数的叙述中,不正确的一项是( ) A.实参向形参传递的是数组的起始地址 B.实参向形参传递的是首个元素的地址 C.函数体不可以用sizeof()运算符测试形参数组的大小 D.形参和实参之间的数据传递是单项值传递,所以在函数体修改形参数组元素不会影响实参数组 3.以下函数首部中正确定义二维数组参数的是( ) A.int fun(int a[4][ ]) B.int fun(int a[4][5]) C.int fun(int a[ ][ ]) D.int fun(int a[[ ]]) 4.若有以下函数定义,则返回值处括号内不可填写的内容是( ) int fun(int p) {int a=0,b[2]={0}; return (【 】);} A.a B.b[1] C.p D.b 5.avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是( ) A.int avg(int a[10],int n); B.int avg(int a,int n); C.int avg(int a[ ],int n); D.int avg(int a[2][5],int n); 6.以下程序的主函数中调用了在其前面定义的函数fun,则以下选项中正确的fun函数首部是( ) #include <stdio.h> …… main() {double a[15],k; k=fun(a); ……} A.double fun(double a[15]) B.double fun(int a[15]) C.double fun(double a) D.int fun(int a[ ]) 7.下列函数的功能是( ) int fun(char s[ ],char t[ ]) {int i=-1; while(++i,s[i]==t[i]&&s[i]!='\0'); return (s[i]=='\0'&&t[i]=='\0');} A.比较字符数组s和字符数组t的长度 B.比较字符数组s和字符数组t的大小 C.比较字符数组s和字符数组t是否相等 D.将字符数组t赋给字符数组s 8.函数del的作用是删除已按升序排列的数组a中的指定元素x。设有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请为第【1】空选择填入合适的内容。( ) int del(int a[ ],int n,int x) { int p,i; p=0; while(【1】) p=p+1; for(i=p-1;i<n;i++) 【2】; n=n-1; return n;} A.x>a[p]&&p<n B.x>=a[p]||p<n C.x>a[p]||p<n D.x>=a[p]&&p<n 9. 函数del的作用是删除已按升序排列的数组a中的指定元素x。设有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请为第【2】空选择填入合适的内容。( ) int del(int a[ ],int n,int x) { int p,i; p=0; while(【1】) p=p+1; for(i=p-1;i<n;i++) 【2】; n=n-1; return n;} A.a[i]=a[i+1] B.a[i]=a[i-1] C.a[i]=a[i] D.a[i+1]=a[i] 10.a是一个2×4的整型数组,且各元素均已赋值。函数max_ value可求出其中的最大元素值 max,并将此值返回主调函数。今有函数调用语句 max=max_value(a);请为第【1】空选择填入合适的内容。( ) int max_value(int arr[][4]) {int i,j,max; max=【1】; for(i=0;i<2;i++) for(j=0;j<4;j++) if(【2】) max=arr[i][j]; return(max);} A.arr[0] B.arr[0][1] C.arr[1][0] D.arr[0][0] 11. a是一个2×4的整型数组,且各元素均已赋值。函数max_ value可求出其中的最大元素值 max,并将此值返回主调函数。今有函数调用语句 max=max_value(a);请为第【2】空选择填入合适的内容。( ) int max_value(int arr[][4]) {int i,j,max; max=【1】; for(i=0;i<2;i++) for(j=0;j<4;j++) if(【2】) max=arr[i][j]; return(max);} A.arr[i][j]<max B.arr[i][j]>max C.arr[i][j]!=max D.arr[j][i]>max 12.执行以下程序段的输出结果是( ) int f(int b[ ],int m,int n) {int i,s=0; for(i=m;i<n;i=i+2) s=s+b[i]; return s;} main() {int x ,a[ ]={9,8,7,6,5,4,3,2,1,0}; x=f(a,3,7); printf("%d",x); getch();} A.10 B.15 C.25 D.30 13.执行以下程序段的输出结果是( ) int f(int b[ ][4]) {int i,j,s=0; for(j=0;j<4;j++) {i=j; if(i>2)i=3-j; s+=b[i][j];} return s;} main() {int a[4][4]={{1,2,3,4},{0,1,2,3},{1,3,5,7},{2,4,6,8}}; printf("%d",f(a)); getch();} A.11 B.12 C.16 D.18 14.执行以下程序段的输出结果是( ) void sort(int a[ ]); main( ) { int a[5]={-5,10,-7,3,7},i,j,t; sort(a); for(i=0;i<3;i++) printf("%d ",a[i]); getch();} void sort(int a[ ]) { int i,j,t; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;}} A.-7,3,5,7,10 B.-7,-5,3,7,10 C.-7,-5,3,7 D.-7 -5 3 15.执行以下程序段的输出结果是( ) int func(int a[ ][3]); main( ) { int a[3][3]={2,4,5,6,8,9,11,15,17}; int sum; sum=func(a); printf("sum= %d ",sum); getch();} int func(int a[ ][3]) { int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j) sum=sum+a[i][j];} return(sum);} A.sum=6 B.sum=27 C.sum=25 D.sum=12 16.执行以下程序段的输出结果是( ) void f(int a[ ]) {int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++;}} main( ) { int a[ ]={1,5,10,9,11,7}; f(a+1);getch();} A.5 10 9 B.10 9 7 C.1 5 9 7 D.5 9 7 17.执行以下程序段的输出结果是( ) main() {float fun(float x[]); float ave,a[3]={7.1,2.5,4.3}; ave=fun(a); printf("ave=%.2f",ave);getch();} float fun(float x[]) {int j; float aver=1; for (j=0;j<3;j++) aver=x[j]*aver; return (aver);} A.ave=76.333333 B.ave=76 C.ave=76.3 D.ave=76.33 18.执行以下程序段的输出结果是( ) void f(int b[ ]) {int i; for(i=2;i<6;i++)b[i]*=2;} main() {int a[ ]={1,2,3,4,5,6,1,2,3,4},i; f(a); for(i=0;i<10;i++) printf("%d,",a[i]);getch();} A. 2,4,6,8,10,12,2,4,6,8, B. 2,4,6,8,10,12,1,2,3,4, C.1,2,6,8,10,12,2,4,6,8, D.1,2,6,8,10,12,1,2,3,4, 19.执行以下程序段的输出结果是( ) int f(int b[],int n) {int i,r=1; for (i=0;i<=n;i++) r=r*b[i]; return (r);} main() {int x,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,4); printf("%d ",x);getch();} A.121 B.110 C.112 D.120 20.执行以下程序段的输出结果是( ) void func(int b[ ]) {int j; for(j=0;j<4;j++) b[j]=j;} main( ) {int a[4], i; func(a); for(i=0; i<4; i++) printf("%2d",a[i]);getch();} A.0 1 2 3 B.1 2 3 4 C.2 3 4 D.0 1 2 3 4 21.执行以下程序段的输出结果是( ) void exch(int t[ ]) {t[0]=t[5];} main() {int x[10]={1,2,3,4,5,6,7,8,9,10},i=0; while(i<=4) {exch(&x[i]); i++;} for(i=0;i<5;i++) printf("%d ",x[i]); printf(" ");getch();} A.6 7 8 9 10 B.1 3 5 7 9 C.1 2 3 4 5 D.2 4 6 8 10 22.执行以下程序段的输出结果是( ) int f(int b[],int n) { int i,r;r=1; for(i=0;i<=n;i++) r=r*b[i]; return r;} main() { int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d ",x);getch();} A.23 B.24 C.45 D.25 23.执行以下程序段的输出结果是( ) void sum(int a[]) { a[0]=a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum (&a[3]); printf("%d ",a[3]);getch();} A.8 B.3 C.4 D.9 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f1(int a,int b) {int t; t=a;a=b;b=t;} main() {int c[10]={1,2,3,4,5,6,7,8,9},i; for(i=0;i<9;i++) f1(c[i],c[i+1]); for(i=0;i<9;i++) printf("%d ",c[i]); getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(char c[]) {int i=0; while(c[i]) {if(c[i]>='a'&&c[i]<='z') c[i]=c[i]-('a'-'A'); i++;}} main() {char s[81]; gets(s); fun(s); puts(s); getch();} 运行时输入:I am a student<回车> 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(char s[]) {int i=0; while(s[i]) {if(s[i]%2) printf("%c",s[i]); i++;}} main() {char a[ ]="ABCD"; fun(a); printf(" "); getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f(int a[ ][4],int b[ ]) {int i; for(i=0;i<4;i++) b[i]=a[i][i];} main() {int x[ ][4]={{1,2,3},{4,5,6},{7,8,9},{10,11,12,13}}; int y[4],i; f(x,y); for(i=0;i<4;i++) printf("%d ",y[i]); printf(" "); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<8;i++) sum=sum+array[i]; aver=sum/8; return(aver);} main( ) { float score[8]={89,67.5,78,91,56,82.5,65,70},aver; int i; aver=average (score); printf ("average score is %5.2f ",aver);getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void invert(int s[ ],int i,int j); main( ) { int a[6]={11,22,33,44,55,66},i; invert(a,0,5); for(i=0;i<6;i++) printf("%d,",a[i]); printf(" ");getch();} void invert(int s[ ],int i,int j) { int t; if(i<j) { invert(s,i+1,j-1); t=s[i];s[i]=s[j];s[j]=t;}} 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f(int a[6][6],int n) {int i,j,k; j=n/2+1;a[1][j]=1; i=1; for(k=2;k<=n*n;k++) { i=i-1;j=j+1; if((i<1)&&(j>n)) {i=i+2;j=j-1;} else {if(i<1)i=n; if(j>n) j=1;} if(a[i][j]==0) a[i][j]=k; else {i=i+2;j=j-1;a[i][j]=k;}}} main() {int a[6][6]={0},i,j,flag=0; f(a,5); for(i=0;i<6;i++) {for(j=0;j<6;j++) if(a[i][j]!=0){printf("%4d",a[i][j]);flag++;} if(flag%5==0) printf(" ");} getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是,子函数内采用冒泡法对n个数由小到大进行排序,在主函数中输入n的值及n个数,然后自定义函数,输出排序结果。程序中共有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 {int j,n,a[50]; L5 void sort(int a[ ],int n) L6 printf("请输入元素个数n:"); L7 scanf("%d",&n); L8 printf("请输入n个元素的值:"); L9 for(j=0;j<n;j++) L10 scanf("%d",&a[j]); L11 sort(a,n); L12 for(j=0;j<n;j++) L13 printf("%d\t",a[j]); L14 getch();} L15 void sort(int a[ ],int n) L16 {int i,j,temp; L17 for(i=1;i<=n-1;i++) L18 {for(j=0;j<n-1;j++) L19 if(a[j]<a[j+1]) L20 {temp=a[j]; L21 a[j]=a[j+1]; L22 a[j+1]=temp;}}} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.以下程序中函数f()的功能是:把数组s中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符放到第1个奇数位置,下标为偶数的字符不动。例如,设字符串为:abcdefgh ,则执行结果是:ahcbedgf 。请填空。 #include <stdio.h> #include<conio.h> void f(char s[ ]) {int i,n,k; char c; n=0; for(i=0;s[i]!='\0';i++) n++; if(n%2==0) k=【1】; else k=n-2; c=【2】; for(i=k-2;i>=1;i=【3】) s[i+2]=s[i]; s[1]=【4】;} main() {char s[20]="abcdefgh"; f(s); printf("结果为:%s",s); getch();} 33.以下程序中函数f()的功能是:删除字符数组中比指定字符小的字符,指定字符从键盘输入,结果仍然保存在原数组中。请填空。 #include <stdio.h> #include<conio.h> void f(char s[ ],char ch) {int i=0,j=0; while(s[i]) {if(【1】) i++; else {【2】; i++;} }【3】;} main() {char c,s[80]; printf("请输入s数组中各元素的值:"); gets(s); printf("请输入指定字符:"); scanf("%c",&c); 【4】; puts(s); getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第25卷: 数组作为函数参数 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.对于使用一维数组名作函数实参,以下说法中正确的是( ) A.实参数组必须说明大小 B.实参数组类型与形参数组类型可以不匹配 C.形参数组无需声明数组大小 D.实参数组名与形参数组名必须一致 【答案】C 2.下列有关数组名作为函数参数的叙述中,不正确的一项是( ) A.实参向形参传递的是数组的起始地址 B.实参向形参传递的是首个元素的地址 C.函数体不可以用sizeof()运算符测试形参数组的大小 D.形参和实参之间的数据传递是单项值传递,所以在函数体修改形参数组元素不会影响实参数组 【答案】D 3.以下函数首部中正确定义二维数组参数的是( ) A.int fun(int a[4][ ]) B.int fun(int a[4][5]) C.int fun(int a[ ][ ]) D.int fun(int a[[ ]]) 【答案】B 4.若有以下函数定义,则返回值处括号内不可填写的内容是( ) int fun(int p) {int a=0,b[2]={0}; return (【 】);} A.a B.b[1] C.p D.b 【答案】D 5.avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是( ) A.int avg(int a[10],int n); B.int avg(int a,int n); C.int avg(int a[ ],int n); D.int avg(int a[2][5],int n); 【答案】B 6.以下程序的主函数中调用了在其前面定义的函数fun,则以下选项中正确的fun函数首部是( ) #include <stdio.h> …… main() {double a[15],k; k=fun(a); ……} A.double fun(double a[15]) B.double fun(int a[15]) C.double fun(double a) D.int fun(int a[ ]) 【答案】A 7.下列函数的功能是( ) int fun(char s[ ],char t[ ]) {int i=-1; while(++i,s[i]==t[i]&&s[i]!='\0'); return (s[i]=='\0'&&t[i]=='\0');} A.比较字符数组s和字符数组t的长度 B.比较字符数组s和字符数组t的大小 C.比较字符数组s和字符数组t是否相等 D.将字符数组t赋给字符数组s 【答案】C 8.函数del的作用是删除已按升序排列的数组a中的指定元素x。设有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请为第【1】空选择填入合适的内容。( ) int del(int a[ ],int n,int x) { int p,i; p=0; while(【1】) p=p+1; for(i=p-1;i<n;i++) 【2】; n=n-1; return n;} A.x>a[p]&&p<n B.x>=a[p]||p<n C.x>a[p]||p<n D.x>=a[p]&&p<n 【答案】D 9. 函数del的作用是删除已按升序排列的数组a中的指定元素x。设有调用语句n=del(a,n,x);其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请为第【2】空选择填入合适的内容。( ) int del(int a[ ],int n,int x) { int p,i; p=0; while(【1】) p=p+1; for(i=p-1;i<n;i++) 【2】; n=n-1; return n;} A.a[i]=a[i+1] B.a[i]=a[i-1] C.a[i]=a[i] D.a[i+1]=a[i] 【答案】A 10.a是一个2×4的整型数组,且各元素均已赋值。函数max_ value可求出其中的最大元素值 max,并将此值返回主调函数。今有函数调用语句 max=max_value(a);请为第【1】空选择填入合适的内容。( ) int max_value(int arr[][4]) {int i,j,max; max=【1】; for(i=0;i<2;i++) for(j=0;j<4;j++) if(【2】) max=arr[i][j]; return(max);} A.arr[0] B.arr[0][1] C.arr[1][0] D.arr[0][0] 【答案】D 11. a是一个2×4的整型数组,且各元素均已赋值。函数max_ value可求出其中的最大元素值 max,并将此值返回主调函数。今有函数调用语句 max=max_value(a);请为第【2】空选择填入合适的内容。( ) int max_value(int arr[][4]) {int i,j,max; max=【1】; for(i=0;i<2;i++) for(j=0;j<4;j++) if(【2】) max=arr[i][j]; return(max);} A.arr[i][j]<max B.arr[i][j]>max C.arr[i][j]!=max D.arr[j][i]>max 【答案】B 12.执行以下程序段的输出结果是( ) int f(int b[ ],int m,int n) {int i,s=0; for(i=m;i<n;i=i+2) s=s+b[i]; return s;} main() {int x ,a[ ]={9,8,7,6,5,4,3,2,1,0}; x=f(a,3,7); printf("%d",x); getch();} A.10 B.15 C.25 D.30 【答案】A 13.执行以下程序段的输出结果是( ) int f(int b[ ][4]) {int i,j,s=0; for(j=0;j<4;j++) {i=j; if(i>2)i=3-j; s+=b[i][j];} return s;} main() {int a[4][4]={{1,2,3,4},{0,1,2,3},{1,3,5,7},{2,4,6,8}}; printf("%d",f(a)); getch();} A.11 B.12 C.16 D.18 【答案】A 14.执行以下程序段的输出结果是( ) void sort(int a[ ]); main( ) { int a[5]={-5,10,-7,3,7},i,j,t; sort(a); for(i=0;i<3;i++) printf("%d ",a[i]); getch();} void sort(int a[ ]) { int i,j,t; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;}} A.-7,3,5,7,10 B.-7,-5,3,7,10 C.-7,-5,3,7 D.-7 -5 3 【答案】D 15.执行以下程序段的输出结果是( ) int func(int a[ ][3]); main( ) { int a[3][3]={2,4,5,6,8,9,11,15,17}; int sum; sum=func(a); printf("sum= %d ",sum); getch();} int func(int a[ ][3]) { int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j) sum=sum+a[i][j];} return(sum);} A.sum=6 B.sum=27 C.sum=25 D.sum=12 【答案】A 16.执行以下程序段的输出结果是( ) void f(int a[ ]) {int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++;}} main( ) { int a[ ]={1,5,10,9,11,7}; f(a+1);getch();} A.5 10 9 B.10 9 7 C.1 5 9 7 D.5 9 7 【答案】A 17.执行以下程序段的输出结果是( ) main() {float fun(float x[]); float ave,a[3]={7.1,2.5,4.3}; ave=fun(a); printf("ave=%.2f",ave);getch();} float fun(float x[]) {int j; float aver=1; for (j=0;j<3;j++) aver=x[j]*aver; return (aver);} A.ave=76.333333 B.ave=76 C.ave=76.3 D.ave=76.33 【答案】D 18.执行以下程序段的输出结果是( ) void f(int b[ ]) {int i; for(i=2;i<6;i++)b[i]*=2;} main() {int a[ ]={1,2,3,4,5,6,1,2,3,4},i; f(a); for(i=0;i<10;i++) printf("%d,",a[i]);getch();} A. 2,4,6,8,10,12,2,4,6,8, B. 2,4,6,8,10,12,1,2,3,4, C.1,2,6,8,10,12,2,4,6,8, D.1,2,6,8,10,12,1,2,3,4, 【答案】D 19.执行以下程序段的输出结果是( ) int f(int b[],int n) {int i,r=1; for (i=0;i<=n;i++) r=r*b[i]; return (r);} main() {int x,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,4); printf("%d ",x);getch();} A.121 B.110 C.112 D.120 【答案】D 20.执行以下程序段的输出结果是( ) void func(int b[ ]) {int j; for(j=0;j<4;j++) b[j]=j;} main( ) {int a[4], i; func(a); for(i=0; i<4; i++) printf("%2d",a[i]);getch();} A.0 1 2 3 B.1 2 3 4 C.2 3 4 D.0 1 2 3 4 【答案】A 21.执行以下程序段的输出结果是( ) void exch(int t[ ]) {t[0]=t[5];} main() {int x[10]={1,2,3,4,5,6,7,8,9,10},i=0; while(i<=4) {exch(&x[i]); i++;} for(i=0;i<5;i++) printf("%d ",x[i]); printf(" ");getch();} A.6 7 8 9 10 B.1 3 5 7 9 C.1 2 3 4 5 D.2 4 6 8 10 【答案】A 22.执行以下程序段的输出结果是( ) int f(int b[],int n) { int i,r;r=1; for(i=0;i<=n;i++) r=r*b[i]; return r;} main() { int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d ",x);getch();} A.23 B.24 C.45 D.25 【答案】B 23.执行以下程序段的输出结果是( ) void sum(int a[]) { a[0]=a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum (&a[3]); printf("%d ",a[3]);getch();} A.8 B.3 C.4 D.9 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f1(int a,int b) {int t; t=a;a=b;b=t;} main() {int c[10]={1,2,3,4,5,6,7,8,9},i; for(i=0;i<9;i++) f1(c[i],c[i+1]); for(i=0;i<9;i++) printf("%d ",c[i]); getch();} 【答案】1 2 3 4 5 6 7 8 9 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(char c[]) {int i=0; while(c[i]) {if(c[i]>='a'&&c[i]<='z') c[i]=c[i]-('a'-'A'); i++;}} main() {char s[81]; gets(s); fun(s); puts(s); getch();} 运行时输入:I am a student<回车> 【答案】I AM A STUDENT 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(char s[]) {int i=0; while(s[i]) {if(s[i]%2) printf("%c",s[i]); i++;}} main() {char a[ ]="ABCD"; fun(a); printf(" "); getch();} 【答案】AC 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f(int a[ ][4],int b[ ]) {int i; for(i=0;i<4;i++) b[i]=a[i][i];} main() {int x[ ][4]={{1,2,3},{4,5,6},{7,8,9},{10,11,12,13}}; int y[4],i; f(x,y); for(i=0;i<4;i++) printf("%d ",y[i]); printf(" "); getch();} 【答案】1 5 9 13 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<8;i++) sum=sum+array[i]; aver=sum/8; return(aver);} main( ) { float score[8]={89,67.5,78,91,56,82.5,65,70},aver; int i; aver=average (score); printf ("average score is %5.2f ",aver);getch();} 【答案】average score is 74.88 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void invert(int s[ ],int i,int j); main( ) { int a[6]={11,22,33,44,55,66},i; invert(a,0,5); for(i=0;i<6;i++) printf("%d,",a[i]); printf(" ");getch();} void invert(int s[ ],int i,int j) { int t; if(i<j) { invert(s,i+1,j-1); t=s[i];s[i]=s[j];s[j]=t;}} 【答案】66,55,44,33,22,11, 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void f(int a[6][6],int n) {int i,j,k; j=n/2+1;a[1][j]=1; i=1; for(k=2;k<=n*n;k++) { i=i-1;j=j+1; if((i<1)&&(j>n)) {i=i+2;j=j-1;} else {if(i<1)i=n; if(j>n) j=1;} if(a[i][j]==0) a[i][j]=k; else {i=i+2;j=j-1;a[i][j]=k;}}} main() {int a[6][6]={0},i,j,flag=0; f(a,5); for(i=0;i<6;i++) {for(j=0;j<6;j++) if(a[i][j]!=0){printf("%4d",a[i][j]);flag++;} if(flag%5==0) printf(" ");} getch();} 【答案】 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是,子函数内采用冒泡法对n个数由小到大进行排序,在主函数中输入n的值及n个数,然后自定义函数,输出排序结果。程序中共有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 {int j,n,a[50]; L5 void sort(int a[ ],int n) L6 printf("请输入元素个数n:"); L7 scanf("%d",&n); L8 printf("请输入n个元素的值:"); L9 for(j=0;j<n;j++) L10 scanf("%d",&a[j]); L11 sort(a,n); L12 for(j=0;j<n;j++) L13 printf("%d\t",a[j]); L14 getch();} L15 void sort(int a[ ],int n) L16 {int i,j,temp; L17 for(i=1;i<=n-1;i++) L18 {for(j=0;j<n-1;j++) L19 if(a[j]<a[j+1]) L20 {temp=a[j]; L21 a[j]=a[j+1]; L22 a[j+1]=temp;}}} 答案 L5 void sort(int a[ ],int n); L18 {for(j=0;j<n-i;j++) L19 if(a[j]>a[j+1]) 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.以下程序中函数f()的功能是:把数组s中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符放到第1个奇数位置,下标为偶数的字符不动。例如,设字符串为:abcdefgh ,则执行结果是:ahcbedgf 。请填空。 #include <stdio.h> #include<conio.h> void f(char s[ ]) {int i,n,k; char c; n=0; for(i=0;s[i]!='\0';i++) n++; if(n%2==0) k=【1】; else k=n-2; c=【2】; for(i=k-2;i>=1;i=【3】) s[i+2]=s[i]; s[1]=【4】;} main() {char s[20]="abcdefgh"; f(s); printf("结果为:%s",s); getch();} 答案:①n-1 ②s[k] ③i-2 ④c 33.以下程序中函数f()的功能是:删除字符数组中比指定字符小的字符,指定字符从键盘输入,结果仍然保存在原数组中。请填空。 #include <stdio.h> #include<conio.h> void f(char s[ ],char ch) {int i=0,j=0; while(s[i]) {if(【1】) i++; else {【2】; i++;} }【3】;} main() {char c,s[80]; printf("请输入s数组中各元素的值:"); gets(s); printf("请输入指定字符:"); scanf("%c",&c); 【4】; puts(s); getch();} 答案:①s[i]<ch ②s[j++]=s[i] ③s[j]='\0'或s[j]=0 ④f(s,c) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务25:数组作为函数参数  《编程语言-C语言》45分钟专题训练-第1页
1
任务25:数组作为函数参数  《编程语言-C语言》45分钟专题训练-第2页
2
任务25:数组作为函数参数  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。