C语言程序设计:数组单元测试与答案.docx
一、单项选择题1、以下数组定义中不正确的选项是:A. double score 3 4;B.define N 20char pricesN;int student10*3;C. int k=8;float distancek;正确答案:D解析:在数组定义中,不能以整型变量k来说明数组长度。2、以下程序的输出结果是:ttinclude <stdio.h>int main()(int a5 = 1, 2, 3);printf ( "%d" , a3);)A. 43B. 0D.不确定值正确答案:C24B. 4812正确答案:B解析:int型占用4个字节,所以共占用4*2*3=24个字节19、要求定义包含8个int类型元素的一维数组,以下错误的定义语 句是:A. int al+7 = 0;B.ttdefine N 3int a2*N+2;int a = 0, 1, 2, 3, 4, 5, 6, 7);C. int N=8; int aN;正确答案:D解析:不能用整型变量做为数组的长度20、实现字符串长度测量的函数是:A. strcpyB.strcmpC. strlenstrcat正确答案:c解析:B、字符串比拟函数C、字符串长度测量函数D、字符串 连接函数解析:此例采用了局部初始化,没有初始化的数组元素取值为0,注 意数组元素下标从0开始,所以a3的值为0。3、C语言中引用数组元素时,下标表达式的类型为:A.双精度型B.整型C.单精度型D.指针型正确答案:B解析:定义数组时,数组才度只能使用用整型常量4、假设有定义:int a口定二1,2, 3, 4, 5, 6, 7, 8, 9;,那么数组 a 第一维的大小是:A. 41B. 32正确答案:C解析:第二维长度为3,共初始化了 9个元素,所以有9/3=3行,故第一维大小为3。5、假设有定义:int a =3,4, 5, 6, 7,8,9, 10);,那么值为 5 的表达式是:A. aa3_aa4B. aa5a5正确答案:A解析:由题可知a4的值为5而a3的值为4,所以可以将4用a3 替换,所以aa3的值为56、假设二维数组a有m列,那么在前的元素个数为:A. i*m+j+lj*m+iB. i*m+j-li*m+j正确答案:D解析:因为数组的行,列标均从0开始,所以元素所在行的 前i行(即。,1, 2, i-1)共有i*m个元素,在第i行还有j个元素(即第0, 1, jT列),所以前总共有i*m+j个 元素7、下面是对数组s的初始化,其中不正确的选项是:A. char s5 = ,a' , ' b' , ' c' ;B. char s5 = “abc" ;C. char s5= "abcdef” ;D. char s5=;正确答案:c解析:字符串abcdef需要占用7个字节的内存空间,包括最后的字符串结束标记,数组S的空间不够存放。8、判断字符串si是否等于字符串s2,应当使用:A. if (sis2)if(sl=s2)B. if (strcpy (si, s2)if (strcmp(si, s2) 0)正确答案:D解析:对于字符串的比拟只能采用strcmp函数,函数返回0表示两个字符串相同,不能使用关系运算符二9、定义了二维数组 以1武33:1,2,3,4,5,6,7;那么数组元素a2的值是:A. 47B. 56正确答案:B解析:数组a的9个值分别为第0行:120第1行:340第2行:567所以a22为710、定义了一维数组int能够正确从键盘输入10个整数赋给数组元素的程序是:A. for(i=0;i<10;i+)B. for(i=l;i<=10;i+)C. for(i=0;i<10;i+)D. for(i=l;i<=10;i+)正确答案:C给数组元素的程序是:E. for(i=0;i<10;i+)F. for(i=l;i<=10;i+)G. for(i=0;i<10;i+)H. for(i=l;i<=10;i+)正确答案:Cscanf( "%d" , ai);scanf( "%d” , &ai)scanf( "%d” , &ai);scanf( "%d" , ai);解析:A、scanf函数的输入列表应为&ai B、循环下标错误,应该从0到9 C、这是正确答案,下标从0开始,到9结束,scanf函数的输入列表为第i个元素ai的地址&ai D、下标错误,应从。到9,输入列表应为地址&ai11、以下程序的输出结果是: int main()int a3 3 = 1, 2, 3, 4, 5, 6, 7, 8, 9;int sum=0, i, j ;for (i=0;i<3;i+)for(j=0;j<3;j+)if(i=j) sum=sum+ai j;printf(,sum);A.没有正确答案。B.sum=18C.sum=15D.sum=12正确答案:c解析:数组相当于存储了如下的矩阵:123456789程序的功能是求主对角线上3个元素的和,即1+5+9=1512、以下程序的输出结果是:#include <string. h>ttinclude <stdio.h>int main()(char s 20 = "Apple" , "Banana" , " Pear" ;char str20;if(strcmp (s0,sl)>0)strcpy(str, s0);elsestrcpy(str,sl);if(strcmp(s2, str)>0)strcpy(str,s2);puts(str);A. AppleB.没有正确答案BananaC. Pear正确答案:D解析:根据比拟规那么,B'的ASCII码大于'A'的ASCII码,P的ASCII码大于'B'的ASCH码,所以最大的字符串为“Pear”13、假设有定义:double a3 4;数组a在内存中占用()个字节A. 9648B. 2428正确答案:A解析:double类型占用8个字节,数组a包含3*4=12个元素,所以总共占用8*12=96个字节14、假设有定义:int a3 4;那么对数组a元素的非法引用是:A. a0 3*1B.a0 4C. al+lOD.a2 3正确答案:B解析:引用数组a的元素时,列标只能取0, 1, 2, 3,不能取415、假设有定义:char a="Hello” ;数组a在内存中占用() 个字节。A.不确定6B. 57正确答案:B解析:" Hello的长度为5,在内存中占用6个字节,因为结束标志 ''0'占用一个字节.16、定义有一维字符数组char str 80;那么与语句gets (str);功能完全相同的语句是:A. scanf ( "%s",str);gets(&str);B. scanf (,&str);gets(&str0)正确答案:D解析:A、这条语句对于输入包含空格、TAB键的无法正确处理,会提前结束。D、数组名是数组的首地址,即str0的地址,所以 str可以用&str 0替换。17、以下程序的输出结果是:#include <stdio. h>ttinclude <string. h>int main()char si 20= "abc”,s220= "abd” ;int k;k二strcmp(si, s2);printf( "%dn",k);A. 1B.-1C. 20正确答案:B解析:根据strcmp函数的功能,从第0个元素开始,一对一比拟, 直到出现不同元素时停止,并返回两个字符的ASCII码的差值, 'c'-'d'结果为18、假设有定义:int a23;那么数组a在内存中占用()个字节A. 6