![]() ![]() |
|
二级C语言教程章节测试9.一维数组与指针(一) | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:07:51 文章录入:杜斌 责任编辑:杜斌 | |
|
|
(1)有以下程序 main() { int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2; printf("%d\n", *p + *q); } 程序运行后的输出结果是_____。 A)16 B)10 C)8 D)6 (2)有以下程序 main() { int a[]={2,4,6,8,10}, y=0, x, *p; p=&a[1]; for(x= 1; x<3; x++) y += p[x]; printf("%d\n",y); } 程序运行后的输出结果是_____。 A)10 B)11 C)14 D)15 (3)有以下程序 void 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+2, 5); for (i=0; i<10; i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是_____。 A)1,2,3,4,5,6,7,8,9,10, B)1,2,7,6,3,4,5,8,9,10, C)1,2,7,6,5,4,3,8,9,10, D)1,2,9,8,7,6,5,4,3,10, (4)有以下程序 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[2]); printf("%d\n", a[2]); } 程序运行后的输出结果是_____。 A)6 B)7 C)5 D)8 (5)有以下程序 void swap1(int c0[], int c1[]) { int t ; t=c0[0]; c0[0]=c1[0]; c1[0]=t; } void 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, a+1); swap2(&b[0], &b[1]); printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]); } 程序运行后的输出结果是_____。 A)3 5 5 3 B)5 3 3 5 C)3 5 3 5 D)5 3 5 3 (6)有以下程序 main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是_____。 A)42 B)45 C)56 D)60 (7)有以下程序 void f(int *x,int *y) { int t; t=*x;*x=*y;*y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) { f(p,q); p++; q--; } for(i=0;i<8;i++) printf("%d,",a[i]); } 程序运行后的输出结果是 A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4, C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1, (8)以下叙述中错误的是 _____。 A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变 C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D)可以通过赋初值的方式确定数组元素的个数 (9)有以下程序 #define N 20 fun(int a[],int n,int m) { int i,j; for(i=m;i>=n;i--) a[i+1]=a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf("%d",a[i]); } 程序运行后的输出结果是_____。 A)10234 B)12344 C)12334 D)12234
(10)有以下程序 prt(int *m,int n) { int i; for(i=0;i<n;i++) m[i]++; } main() { int a[]={1,2,3,4,5},i; prt(a,5); for(i=0;i<5;i++) printf("%d,",a[i]); } 程序运行后的输出结果是_____。 A)1,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1, (11)有以下程序 main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p<a+10;p++) printf("%d,",*p); } 程序运行后的输出结果是_____。 A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1, C)0,1,2,3,4,5,6,7,8,9, D)1,1,1,1,1,1,1,1,1,,1, (12) 有以下程序 int f(int a) { return a%2; } main() { int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf("%d\n",d); } 程序运行后的输出结果是_____。 A) 9 B) 11 C) 19 D) 21 (13) 设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是_____。 A) for(i=0;i<6;i++) printf("%2d",*(p++)); B) for(i=0;i<6;i++) printf("%2d",*(p+i)); C) for(i=0;i<6;i++) printf("%2d",*p++); D) for(i=0;i<6;i++) printf("%2d",(*p)++); (14) 有以下程序 #include <stdio.h> main() {int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 程序运行后的输出结果是_____。 A) 运行后报错 B) 6 6 C) 6 11 D) 5 10 (15) 已有定义:int i,a[10],*p;,则合法的赋值语句是_____。 A) p=100; B) p=a[5]; C) p=a[2]+2; D) p=a+2; (16) 有以下程序 main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;j--) if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for (i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for (i=0;i<8;i++) printf("%d",x[i]); printf("\n"); } 程序运行后的输出结果是_____。 A) 75310246 B) 01234567 C) 76310462 D) 13570246 (17) 有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; b中的值是_____。 A) 5 B) 6 C) 8 D) 9 (18) 有以下程序 void swap1(int c[]) { int t; t=c[0];c[0]=c[1];c[1]=t; } void 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) ; swap2(b[0],b[1]); printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]); } 其输出结果是_____。 A) 5 3 5 3 B) 5 3 3 5 C) 3 5 3 5 D) 3 5 5 3 (19) 有以下程序 void sum(int *A) { a[0]=a[1];} main( ) { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=2;i>=0;i--) &nb sp; sum(&aa[i]); printf(“%d\n”,aa[0]); } 执行后的输出结果是_____。 A) 4 B) 3 C) 2 D) 1 (20) 有以下程序 void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i+=2) for(j=i+2;j<n;j+=2) 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,10); for(i=0;i<10;i++) printf(“%d”,aa[i]); printf(“\n”); } 其输出结果是_____。 A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1, C) 9,2,7,4,5,6,3,8,1,10, D) 1,10,3,8,5,6,7,4,9,2,
(21) 以下能正确定义一维数组的选项是_____。 A) int num []; B) #define N 100 Int num [N]; C) int num[0..100]; D) int N=100; int num[N]; (22) 有以下程序 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i];i++;} printf("%d\n",k); } 执行后输出结果是_____。 A) 58 B) 56 C) 45 D) 24 (23) 有以下程序 main() { int x[8]={8,7,6,5,0,0},*s; s=x+3 printf("%d\n",s[2]); } 执行后输出结果是_____。 A) 随机值 B) 0 C) 5 D) 6 (24) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int x[N]) { int i=0; while(i<N) scanf("%d", ); } 在下划线处应填入的是_____。 A) x+i B)&x[i+1] C)x+(i++) D)&x[++i] (25) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序 void 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=o;i<10;i++) print(“%d,”,aa[i]); printf(‘\n”); } 程序运行后的输出结果是_____。 A)1,2,3,4,5,6,7,8,9,10 B) 10,9,8,7,6,5,4,3,2,1, C) 1,2,3,8,7.6.5.4.9,10 D) 1,2,10,9,8,7,6,5,4,3 (26) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。 void reverse(int a[ ],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); for(i=6;i<10;i++) s+=b[i]; printf(“%d\n”,s); } 程序运行后的输出结果是_____。 A) 22 B) 10 C) 34 D) 30 (27) 以下程序调用findmax函数返回数组中的最大值 findmax(int *a,int n) { int *p,*s; for(p=a,s=a; p-a<n; p++) if ( ) s=p; return(*s); } main() { int x[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 在下划线处应填入的是_____。 A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s (28) 若有定义:int aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是_____。 A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1 (29) 以下程序的输出结果是_____。 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[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf("%d\n",x); } A) 10 B) 18 C) 8 D) 15 (30) 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是_____。 A) 3 B) 6 C) 10 D) 20
(31) 以下程序的输出结果是_____。 main() { int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(“%d%d%d”,a[2],a[5],a[8]); } A) 258 B) 741 C) 852 D) 369 (32) 下列程序的输出结果是_____。 A) 非法 B)a[4]的地址 C)5 D)3 main() { char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(“%d”,*--p); } (33) 下面程序的输出结果是_____。 A) 0 B) 1 C) 10 D) 9 main() { int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p; p=a; printf(“%d\n”,*p+9); } (34) 当调用函数时,实参是一个数组名,则向函数传送的是_____。 A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 (35) 以下程序的输出结果是_____。 A) 20 B) 21 C) 22 D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf(“%d\n”,k); } (36) 以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) { int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]<a[p])__________; return(p); } 在下划线处应填入的是_____。 A) i=p B) a[p]=a[i] C) p=j D) p=i (37) 有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是_____。 A) *P+9 B) *(P+8) C) *P+=9 D) P+8 (38) 有如下程序 main0 { int n[5]={0,0,0},i,k=2; for(i=0;i<k;i++) n[i]=n[i]+1; printf(“%d\n”,n[k]); } 该程序的输出结果是_____。 A) 不确定的值 B) 2 C) 1 D) 0 (39) 执行下面的程序段后,变量k中的值为_____。 A) 不定值 B) 33 C) 30 D) 10 int k=3, s[2]; s[0]=k; k=s[1]*10; (40) 若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用上_____。 A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]
(41) 下列程序执行后的输出结果是_____。 A) 6 B) 7 C) 8 D) 9 void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d \n,b[0]); } (42) 若有以下调用语句,则不正确的fun函数的首部是_____。 A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int a) main() { … int a[50],n; … fun(n, &a[9]); … } (43) 以下程序的输出结果是_____。 A)6 B) 6789 C) '6' D) 789 main( ) { char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i; i=8; p=a+I; printf("%s\n",p-3); } (44) 以下程序的运行结果是_____。 A) 运行后报错 B) 6 6 C) 6 12 D) 5 5 #include "stdio.h" main( ) { int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,}; int *p=a+5, *q=NULL; * q=*(p+5); printf("%d %d \n",*p,*q); } (45) 下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是_____。 A) p>a B) *p>a[0] C) *p>*a[0] D) *p[0]> *a[0] main( ) { int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I; for(i=o;i<10;i++,p++) if(________) *a=*p; printf("%d",*a); } (46) 以下程序运行后,输出结果是_____。 A) 10000 B) 10010 C) 00110 D) 10100 main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++ y=y/2; } while(y>=1) for(j=i-1;j>=0;j--) printf("%d",a[j]; printf("\n"); } (47) 设有如下定义: int arr[]={6,7,8,9,10}; int * ptr; 则下列程序段的输出结果为_____。 ptr=arr; * (ptr+2)+=2; printf ("%d,%d\n",*ptr,*(ptr+2)); A) 8,10 B) 6,8 C) 7,9 D) 6,10 (48) 以下程序的输出结果是_____。 main() { int i,k,a[10],p[3]: K=5; for (i=0;i<10;i++) a[i]=i; for (i=0;i<3;i++) p[i]=a[i*(i+1)]; for (i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); } A) 20 B) 21 C) 22 D)23 (49) 若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是_____。 A) *p B) a[10] C) *a D) a[p-a] (50) 若有以下的定义: int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a; 则值为3的表式是_____。 A) p+=2, *(p++) B) p+=2,*++p C) p+=3, *kp++ D) p+=2,++*p
(51) 若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为6的表达式是_____。 A) *p+6 B) *(p+6) C) *p+=5 D) p+5 (52) 下面程序输出数组中的最大值,由s指针指向该元素. main() { int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; flr(p=a, s=a; p-a<10; p++) if(---?---)s=p; printf("The max:%d",*s): } 则在if语句中的判断表达式应该是_____。 A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s (53) 要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。不能正确执行的函数是_____。 A)funa(int *a,int n,int x ) B)funb(int *a,int n,int x) { *a=x; {int k; while(a[n]!=x)n--; for(k=1;k<=n;k++) return n; if(a[k]==x)return k; } return 0; } C)func(int a[],int n,int x ) D) fund(int a[],int n,int x ) { int *k; { int k=0; a[0]=x;k=a+n; do while(*k!=x) k--; k++; return k-n; while((k<n+1)&&(a[k]!=x)); } if(a[k]==x)return k; else return 0; } (54) 下列程序的输出结果是_____。 main( ) { int a[5]={2,4,6,8,10},*P,* *k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",* *k); } A) 4 4 B) 2 2 C) 2 4 D) 4 6 (55) 阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i〈3;i++〉 n[i]=0; k=2; for (i=0;i〈k;i++〉 for (j=0;j〈k;j++〉 n[j]=n[i]+1; printf("%d\n",n[1]); } 下述程序运行后输出结果是_____。 A) 2 B) 1 C) 0 D) 3 (56) 执行以下程序后,y的值是_____。 main ( ) { int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y + = * (p + x); printf("%d\n",y); } A) 17 B) 18 C) 19 D) 20 (57) 下面程序的输出是_____。 A) 3 B) 4 C) 1 D) 2 main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));} (58) 请读程序: #include<stdio.h> f(in b[], int n) { int i, r; r=1; for(i=0; i<=n; i++) r=r*b[i]; return r; } main() { int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3); printf("%d\n",x); } 上面程序的输出结果是_____。 A) 720 B) 120 C) 24 D) 6 (59) 请选出以下程序的输出结果 #include<stdio.h> fun(s, n1, n2) int *s, n1, n2; { int i, j, t; i=n1; j=n2; while(i<j) { t= *(s+i); *(s+i)= *(s+j); *(s+j)=t; i++; j--; } } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9); for(i=0; i<10; i++) printf("%d", *(a+i)); printf("\n"); } A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5 C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4 (60) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。 # include <stdio.h> findmax ( s , t , k ) int *s , t , *k; { int p; for(p=0,*k=p;p<t;p + + ) if ( s[p] > s[*k] )_________; } main() { int a[10] , i , k ; for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]); findmax ( a,10,&k ); printf ( "%d,%d\n" , k , a[k] ); } A) k=p B) *k=p-s C) k=p-s D) *k=p
二、填空题: (1) 以下程序运行后的输出结果是 【1】 。 main() { int p[7]={11,13,14,15,16,17,18}; int i=0,j=0; while(i<7 && p[i]%2==1) j+=p[i++]; printf("%d\n",j); } (2) 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() { int i,a[20],sum,count; sum=count=0; for(i=0;i<20;i++) scanf("%d", 【2】 ); fro(i=0;i<20;i++) { if(a>0) { count++; sum+= 【3】 ; } } printf("sum=%d,count=%d\n",sum,count); (3) 以下程序运行后的输出结果是 【4】 main() { int i, n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(“%d”,n[i]); } } (4) 若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a[ ]) { int i; for(i=1; i<=10; i++) 【5】=i; for(i=0; i<5; i++) 【6】=a[i]; } (5) 以下程序的输出结果是 【7】 。 main() { int arr[ ]={30,25,20,15,10,5}, *p=arr; p++; printf(“%d\n”,*(p+3)); } (6) 若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 [8] 。 int w[10]={23,54,10,33,47,98,72,80,61}, *p=w; (7) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main( ) { float x[1000], sum=0.0, ave, a; int n=0, i; printf("Enter mark:\n");scanf("%f",&a); while(a>=0.0&& n<1000) { sum+ 【9】 ; x[n]= 【10】 ; n++; scanf("%f",&a); } ave= 【11】 ; printf("Output:\n"); printf("ave=%f\n",ave); for (I=0;I<n;I++) if 【12】 printf (“%f\n”,x[I]); } (8) 下面程序输出的结果是 【13】 #define MAX 3 int a [MAX]; main() { fun1( ); fun2( a ); printf("\n");} fun1( ) { int k, t=0; for (k=0; k<MAX; K++,t++) a[k]=t+t; } fun2(int b[]) { int k; for(k=0; k<NAX; k++) printf("%d", *(b+K)); } (9) 以下程序输出的是 【14】 main( ) { int a[10]={19,23,44,17,37,28,49,36}, *p; p=a; printf("%d\n",(p+=3)[3]); } (10) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空. fun(int b[ ],int n, int *x) { int k, r=0; for(k=0;k<n;k++) r= 【15】 【16】 =r;
(11) 若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【17】 。 int a[10]={19,23,44,17,37,28,49,36},*p; p=a; (12) 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。 fun(int x,int b[]) { int k=0,r; do { r=x% 【18】; b[k++]=r; x/=【19】; } while(x); } (13) 下面程序通过函数average计算数组中各元素的平均值,请填空. float average(int * pa,int n) { int i; float avg=0.0; for(i=0;i<n;i++) avg=avg+【20】; avg=【21】; return avg; } main() { int i,a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf("mean=%f\n",mean);} (14) 下面程序的输出是 【22】 。 main() { int a[]={ 2,4,6}, *prt=&a[0], x=8,y,z; for(y=0; y<3; y++) z=(*(prt+y)<x)? *(ptr+y):x; printf("%d\n", z);} (15) 下面程序的输出是 【23】 。 main() { int arr[10],i,k=0; for( i=0; i<10; i++) arr[i]=i; for( i=1; i<4; i++) k+=arr[i]=i; printf( '%d\n", k);} (16) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。 findmax( int s[], int t) { int k, p; for( p=0, k=p; p<t; p++) if( s[p]>s[k]) 【24】 。 return k; } (17) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。 #include <stdio.h> #include <ctype.h> main( ) { int num[26],i; char c; for(i=0; i<26; i++) num[i]=0; while( 【25】 !='#') /*统计从终端输入的大写字母个数*/ if( isupper(c)) num[c-65]+=1; for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/ if(num[i]) printf("%c:%d\n,i 【26】 , num[i]); } (18) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。 #include <stdio.h> main() { int i,a[10],*p=a,sum=0; printf("Enter 10 num:\n"); for(i=0;i<10;i + + ) scanf("%d",&a[i]); for(i=0;i<10;i + + ) if(isprime(*(p+ 【27】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); } printf("\nThe sum=%d\n",sum); } isprime(x) int x; { int i; for(i=2;i<=x/2;i + + ) if(x%i = = 0) return (0); 【28】 ; }
答案: 一、选择题 1) B 2) C 3) C 4) A 5) D 6) B 7) D 8) C 9) C 10) B 11) A 12) A 13) D 14) A 15) D 16) A 17) D 18) B 19) A 20) C 21) B 22) D 23) B 24) C 25) C 26) A 27) B 28) C 29) A 30) D 31) C 32) C 33) C 34) B 35) B 36) D 37) B 38) D 39) A 40) D 41) A 42) C 43) B 44) A 45) B 46) B 47) D 48) B 49) B 50) A 51) C 52) B 53) C 54) C 55) D 56) C 57) A 58) B 59) C 60) D 二、填空题 (1)24 (2)&a[i] (3)a[i] (4) 1 3 7 15 (5)a[i-1] (6)a[9-i] (7)10 (8)p[5] (9)=a (10)a (11)sum/n (12) x[i]<ave (13)024 (14)49 (15)r+b[k]或b[k]或*(b+k)+r (16)*x (17)p=p+7 (18)2 (19)2 (20)*(pa+i)或 pa[i] (21)avg/n 或avg/(float)n 或 avg/(double)n (22)6 (23)12 (24)k=p (25)(c=getchar()) (26)+65 或 +'A' (27)I (28)return 1 |
|
![]() ![]() |