第6章 数组
一、选择题
1、以下错误的定义语句是(C) A) int x[][3]={{0},{1},{1,2,3}};
B) int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; C) int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D) int x[][3]={1,2,3,4};
2、若有定义:int a[2][3];以下选项中对a数组元素正确引用的是(D) A) a[2][!1] B) a[2][3] C) a[0][3] D) a[1>2][!1] 3、以下能正确定义一维数组的选项是(B)。
A) int num(5*2); B)int num[5*2]; C) int long[10]; 4、以下能正确定义一维数组的选项是(B)。 A) int num[];
B) #define N 100 ?int num[N];
C) int num[0..100];
D) int N=100; ? int num[N];
5、以下选项中正确的语句组是(D)
A) char s[];s=”BOOK!” B) char *s; s={“BOOK!”};C) char s[10]; s=”BOOK!” D) char *s; s=”BOOK!”; 6、若以下说明,则数值为4的表达式是(D)。 int a[12]={1,2,3,4,5,6,7,8,9,10}; char c=?a?,d,g;
A) a[g-c] B) a[4] C) a[?d?-?c?] D) a[?d?-c] 7、以下程序的输出结果是(C)。 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
8、有以下程序,程序运行后的输出结果是(D)。 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);
1
D) int num(10); }
A)60 B)61 C)62 D)63 9、有如下程序 main( )
{ int n[5]={0,0,0},i,k=2; for(i=0;i 该程序的输出结果是(D)。 A) 不确定的值 B) 2 C) 1 D) 0 10、以下程序的输出结果是(A)。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(\} A) 0650 B) 1470 C) 5430 D) 输出值不定 11、有以下程序,执行后输出结果是(C)。 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) printf(\} A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9 12、以下程序的输出结果是(A)。 A) 18 B) 19 C) 20 D) 21 main() { int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j]; printf(“%d\\n”,s); } 13、以下程序的输出结果是(C)。 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(\} A) 1,5,9, B) 1,4,7, C) 3,5,7, D)3,6,9, 14、有以下程序,执行后输出的结果是(D)。 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; 2 while(i<7&&p[i]%2) {k=k+p[i]; i++; } printf(\ } A) 58 B) 56 C) 45 D) 24 15、有以下程序 main() { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++) c[s[i]]++; for(i=1;i<5;i++) printf(\ printf(\} 程序的运行结果是(C) A) 1 2 3 4 B) 2 3 4 4 C)4 3 3 2 D) 1 1 2 3 16、有以下程序 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(\} 程序运行后的输出结果是(B) A)42 B)45 C)56 D)60 17、当执行下列程序时,如果输入ABC,则输出结果是(A)。 main() { char ss[10]=”12345”; gets(ss);strcat(ss,”6789”); printf(“%s\\n”,ss); } A)ABC6789 B)ABC67 C)12345ABC6 D)ABC45678 18、有以下程序,程序运行后的输出结果是(A)。 main() { char arr[2][4]; strcpy(arr[0],\ strcpy(arr[1],\ arr[0][3]='&'; printf(\ } A)you&me B)you C)me D)err 19、有以下程序,程序运行后的输出结果是(A)。 3 main() { int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; 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]; } printf(“sum=%d”,sum); } A)sum=26 B)sum=1 C)sum=6 D)sum=25 20、有以下程序,程序运行后的输出结果是(A)。 main() {char s[10]=”12134211”; int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) { switch(s[k]) { case ?1?:i=0;break; case ?2?:i=1;break; case ?3?:i=2;break; case ?4?:i=3;break; } v[i]++; } for(k=0;k<4;k++) printf(“%d”,v[k]); } A)4 2 1 1 B)0 0 0 8 C)4 6 7 8 D)8 8 8 8 21、以下程序的输出结果是(B)。 main() { char st[20]=\ printf(\} A) 9 9 B) 5 20 C) 13 20 D) 20 20 22、以下程序的输出结果是(D)。 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) 4 for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf(\} A) 3 B) 2 C) 7 D) 4 23、以下程序的输出结果是(B) main() { char cf[3][5]={\ printf(\} A) \ B) \ C) \ D) \ 24、若有定义语句:char s[10]=”1234567\\0\\0”;则strlen(s)的值是(A) A) 7 B) 8 C) 9 D) 10 25、有以下程序 void fun(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,0},i; for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printf(\ printf(\} 程序的运行结果是(A) A) 1,2,3,4,5,6,7,8,9,0, B)2,1,4,3,6,5,8,7,0,9, C) 0,9,8,7,6,5,4,3,2,1, D)0,1,2,3,4,5,6,7,8,9, 26、有以下程序 void f(char p[][10], int n ) /* 字符串从小到大排序 */ { char t[10]; int i,j; for(i=0;i if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); } main() { char p[5][10]={\ f(p,5); printf(\}程序运行后的输出结果是(D) A) 2 B) 4 C) 6 D) 3 27、有以下程序 5 } main(){ } char p[20]={'a','b','c','d'},q[]=\strcat(p,r); strcpy(p+strlen(q),q); printf(\ 程序运行后的输出结果是(C) A)9 B)6 C)20 D)7 28、有以下程序 #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(\ } 程序运行后的输出结果是 (C)。 A)10234 B)12344 C)12334 D)12234 29、有以下程序 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,2,4,5},{3,6,9,12},{3,2,1,0}}; printf(\} 执行后的输出结果是(D)。 A) 12 B) 11 C) 18 D) 16 30、有以下程序 void swap1(int c[]) { int t; 6 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(\} 其输出结果是(B)。 A) 5 3 5 3 B) 5 3 3 5 C) 3 5 3 5 D) 3 5 5 3 二、程序阅读题 1、有以下程序 main() { char s[]=\s[0]+=2; printf(\} 执行后的结果是 99 。 2、有以下程序 main() { int x[3][2]={0},i; for(i=0;i<3;i++) scanf(\ printf(\} 若运行时输入:246<回车>,则输出结果为 204 。 3、有以下程序 main() { int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]); } 程序的执行后的输出结果是 357 。 4、以下程序的输出结果是 30 。 main() { int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1]; printf(“%d\\n”,s); } 5、有以下程序 7 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(\ } 程序运行后的输出结果是 6 。 6、以下程序的输出结果是 abc 。 main() { char s[]=\ s[3]='\\0'; printf(\} 7、下列程序的输出结果是 CDABC 。 main( ) { char b[30]; strcpy(&b[0],”CH”); strcpy(&b[1],”DEF”); strcpy(&b[2],”ABC”); printf(“%s \\n”,b); } 8、有以下程序 main() { char p[]={'a', 'b', 'c'}, q[]=\ printf(\}; 程序运行后的输出结果是 3 4 。 9、有以下程序 void fun(int *s,int nl,int n2) { int i,j,t; i=nl; j=n2; while(i main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9); fun(a,0,9); 8 for(k=0;k<10;k++)printf(“%d”,a[k]); printf(“\\n”); } 程序运行的结果是 5678901234 10、以下程序运行后的输出结果是 abcbcc main() { char ch[]=\for(i=0;i<3;i++) strcpy(x[i],ch); for(i=0;i<3;i++) printf(\printf(\} 三、程序填空题 1、以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。 main() { int x[10],a[9],i; for (i=0;i<10;i++) scanf(“%d”,&x[i]); for( i=1 ;i<10;i++) a[i-1]=x[i]+ x[i-1] ; for(i=0;i<9;i++) printf(“%d”,a[i]); printf(“\\n”); } 2、若已定义: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++) a[i-1] =i; for(i=0; i<5; i++) a[4-i] =a[i]; } 3、程序的功能是使一个字符串按逆序存放,请填空。 main( ) { char str[]={“abcdefghijl”},m; int i,j; for(i=0,j=strlen(str);i< j/2 ;i++,j--) {m=str[i]; str[i]= str[9-i] ; str[j-1]=m; } printf(“%s\\n”,str); 9 } 4、用冒泡法对10个数据进行排序,请填空,让程序能正确运行。 main() { int a[11],i,j,t; printf(“input 10 numbers:\\n”); for(i=1;i<11;i++) scanf(“%d”,&a[i]); for(j=1;j<10;j++) for( i=1;i<10-j;i++ ) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } printf(“the sorted numbers:\\n”); for(i=1; i<10 ; i++) printf(“%d”,a[i]); } 5、矩阵转置,请填空,让程序能正确运行。 main() { int a[2][3]={1,2,3,4,5,6}; int b[3][2],i,j; printf(“array a:\\n”); for(i=0;i<=1;i++) { for(j=0;j<=2;j++) { _b[j][i] =a[i][j]; printf(“]”,a[i][j]);} printf(“\\n”); } printf(“array b:\\n” ); for(i=0;i<=2;i++) { for (j=0;j<=1;j++) printf(“]”,b[i][j]); __ printf(“\\n”); _ } } 6、函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下 1 10 1 1 1 2 1 1 3 3 1 1 4 6 4 1. 其构成规律是: (1) 第0列元素和主对角线元素均为1 (2) 其余元素为其左上方和正上方元素之和 (3) 数据的个数每行递增1 请将程序补充完整。 #define N 6 void yanghui(int x[N][N]) { int i,j; x[0][0]=1; for(i=1;i { x[i][0]= x[i][i] =1; for(j=1;j x[i][j]= x[i-1][j-1]+x[i-1][j] ; } } 7、程序的功能是:例如输入字符串:abc123edf456gh,执行程序后输出:123456,即将字符串中的数字字符输出。请填空。 main() { char s[80], d[80]; int i,j; gets(s); for(i=j=0;s[i]!='\\0';i++) if( s[i]>=’0’&&s[i]<=’9’ ) { d[j]=s[i]; j++; } d[j]='\\0'; puts(d); } 8、若有定义语句: char s[100],d[100]; int j=0, i=0;且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) while(s[i]){ d[j]= s[i++] ; j++;} d[j]=0; 9、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。 main() { char s[80], d[80]; int i,j; gets(s); for(i=j=0;s[i]!='\\0';i++) ?if( s[i]>=’0’&&s[i]<=’9’ ) { d[j]=s[i]; j++; } d[j]='\\0'; puts(d); } 10、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。 11 请填空。 main() { char a[]=\ int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k; j=j+2 ) if( _a[i]>a[j]_ ) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf(\} 四、程序编程题 (1) 编程实现:给定大小为10的int型一维数组a,要求先输入10个数存入a中,再分别输出该数组中值为奇数的元素个数和值为偶数的元素个数。 (2) 从键盘输入一个数,查找该数在一个给定的数组中出现的次数,并打印出现的位置(即下标)。 (3) 有一个整型数组 a[10] ,它的初值分别是: 6 , 5 , 9 , 3 , 8 , 1 , 0 , 4 , 2 和 7 。要求编写程序,将数组的值按升序排列。 (4) 删除字符串中出现的数字。比如:输入字符串 “ a1b2c333d56ef ” , 处理完后输出为“abcdef” 12 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第6章 数组(答案)在线全文阅读。
相关推荐: