任务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)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$