(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是( B )。 int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 B. 0,11 C. 1,11 D. 0,12
(7) 若有以下说明,则数值为 4 的表达式是( D )。
int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ; A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c]
(8) 设有定义:char s[12] = \则printf( \的输出是( A )。 A. 6 B. 7 C. 11 D. 12
(9) 设有定义:char s[12] = \则printf(\的输出是( B )。 A. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( A )。
A. char a[ ] = \ B. int a[5] ={0,1,2,3,4,5}; C. char a=\(11) 合法的数组定义是( B )。
A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4}; C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5,}; (12) 下列语句中,正确的是 ( D )。
A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'}; C. char a[3][ ]={'a', \
(13) 下列定义的字符数组中,输出 printf(\的输出是( C )。 static str[3][20] ={ \A. basic B. foxpro C. windows D. 输出语句出错
(14) 下列各语句定义了数组,其中哪一个是不正确的( C )。
A. char a[3][10]={\ B. int x[2][2]={1,2,3,4};
C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6}; (15) 数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( B )。 A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3]
2. 填空题
(1) C 语言中,数组的各元素必须具有相同的 类型 ,元素的下标下限为 0 ,下标必须是正整数、0、或者 常量 。但在程序执行过程中,不检查元素下标是否 越界 。
(2) C 语言中,数组在内存中占一片 连续 的存储区,由 数组名 代表它的首地址。数组名是一个 常量,不能对它进行赋值运算。
(3) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = 0 ,a[1][2] = 6 。 (4) 设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]值为 2 ,a[1][1] 值为 0 ,a[2][1]的值为 0 。
(5) 如定义语句为 char a[ ]= \,语句 printf(\的输出结果为 windows2000 。
(6) 输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。 #include 13 } (7) 以下程序以每行 10个数据的形式输出 a 数组,请填空。 void main( ) { int a[50],i; printf(\输入50个整数:\ for(i=0; i<50; i++) scanf( \ for(i=1; i<=50; i++) { if( i==0 ) printf( \ else printf( \ } } (8) 下面程序的功能是输出数组 s 中最大元素的下标,请填空。 void main( ) { int k, p; int s[] = {1, -9, 7, 2, -10, 3}; for(p=0,k=p; p<6; p++) if(s[p] > s[k]) k = p ; printf(\} 3. 阅读程序,分析程序的功能。 (1) (2) #include 14 (3) #include char a[10][80], c[80]; int i, j, k; for(i=0; i<10; i++) gets(a[i]); for(i=0; i<9; i++) { k=i; for(j=i+1; j<10; j++) if(strcmp(a[j],a[k])<0) (4) 阅读程序,写出运行结果。 #include if(a[i]==b[j]) break; if(j<6) printf(\ } printf(\} 分析:按数组a中元素顺序输出与数组b中元素相同的数。 输出:4,25,27,16 (5) 阅读程序,写出运行结果。 #include char a[8],temp; int j,k; for(j=0;j<7;j++) a[j]='a'+j; a[7]='\\0'; for(j=0;j<3;j++) { temp=a[6]; for(k=6;k>0;k--) a[k]=a[k-1]; a[0]=temp; printf(\ } k=j; if(k!=i) { strcpy(c,a[i]) ; strcpy(a[i], a[k]); strcpy(a[k],c); } // 字符串交换 } for(i=0; i<10; i++) puts(a[i]); } 分析:输入10个字符串,用选择排序算法将10个字符串按从小到大顺序排列并输出。 } 分析:将字符串的最后的3个元素移到字符串首位。输出:efgabcd 15 (6) 阅读下列程序,写出程序运行的输出结果。 #include char str1[ ]=\ for(int i=0;i<4;i++) { printf(\ str1[i]=' '; str1[strlen(str1)-1]='\\0'; } } 输出:******* ***** *** * 第8章 指针习题 1. 单项选择题 (1) 指针 pstr所指字符串的长度为 D 。char *pstr=\A. 15 B. 14 C. 13 D. 12 (2) 对于 char *pstr;,以下正确的是 B 。 A. *pstr=\(3) 以下程序段的输出结果为 B 。 char astr[5]=\ char *pstr=astr; printf(\ A. 1 B. 2 C. ASCII码值为 1 的字符 D. ASCII 码值为 2 的字符 (4) 下述程序段的输出结果为 D 。 char astr[]=\ char *pstr=&astr[5]; while(--pstr>=astr) putchar(*pstr); putchar('\\n'); A. abc B. cba C. abcde D. edcba (5) 若有定义 int a=1,*b,c;,以下不正确的是 A 。 A. b=a B. b=&a C. b=&a,c=*b D. c=a (6) 以下程序段的运行结果为 C 。 int num[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2]; pnum++; ++pnum; printf(\ A. 3 B. 4 C. 5 D. 6
相关推荐: