《C程序设计基础练习题4及答案.docx》由会员分享,可在线阅读,更多相关《C程序设计基础练习题4及答案.docx(9页珍藏版)》请在第壹文秘上搜索。
1、一、单选题1、以下数组定义中,错误的是()。A.inta3=2,3,4;B.inta=l,2,3;C.inta5=lz2,3;D.inta5,b;正确答案:A解析:A、数组长度为3,但赋了4个初值2、设有定义inta10=0;则说法正确的是()。A.数组初始化错误,初值个数少于数组元素个数B.数组a有10个元素,各元素的值为0C.数组a有1个元素,其值为0D.数组a有10个元素,其中a0的值为0,其他元素的值不确定正确答案:B解析:B、当定义的同时,给数组赋了初值,但初值个数小于数组长度时,剩余的数组元素全赋为03、执行下面的初始化语句,()保存的不是字符串。A.charstr6=,S,r,i
2、n,g,;B.charstr=S;t,r,i,z,n,g,0;C.charstr10=S,t,r,in,g,0,;D.charstr10=String;正确答案:A解析:A、Str数组长度为6,6个元素值都不是0)没有成为字符串B,0,的ASClI码是0,初始化为。或0是一样的。4、设有以下定义,则数组Sl和s2()ocharsl=Sz,t,rin,g);chars2=String;A.长度不同,但内容相同B.长度相同,内容也相同C.长度相同,但内容不同D.长度不同,内容也不同正确答案:D解析:D、s2比Sl多一个0T长度多15、设已定义charstr6=,abOcdO,;执行语句printf
3、(%s,str)后,输出结果为()。A.ab0cd0B.aC.abD.abcd正确答案:C解析:C、s输出时,遇到0就结束6、引用数组元素时,数组元素下标不可以是()。A.整型变量B.字符串C.算术表达式D.字符常量正确答案:B解析:D、编译器会将字符常量转为对应的ASQl码值,比如,array9相当于array977、已定义字符数组Sl和s2,以下错误的输入语句是()。A.scanf(%s%s,sl,s2);B.gets(slzs2);C.gets(sl);gets(s2);D.scanf(%s%sz&sl,&s2);正确答案:B解析:B、gets函数只有一个参数,一次只读入一个字符串。8、
4、下面()是错误的数组定义。A.float15-5;B.inta10;C.intb10+10;D.inta2*i;正确答案:D解析:D、没有确定数组长度一般定义时,长度必须是常量或常量表达式。虽然有的编译器支持C99的变长数组,允许定义时,长度为变量,但前提是,定义前,变量必须有值。9、设有定义inta3;下面数组元素的赋值中,错误的是()。A.a0=2;B.a3=3;C.a2=100;D.al=l;正确答案:B解析:B、下标越界,长度为3,则下标为0-210、定义intb6;下面()可以输出数组的所有元素的值。A.printf(%d,b);B.for(i=0;i6;i+)printf(%d),
5、bi);C.printf(%d,b5);D.for(i=l;i=6;i+)printf(%dzbi);正确答案:B解析:C、只能输出第6个元素的值D、i不能等于6,下标越界1、若已经定义structstuinta;intb;student;,则下列输入语句中正确的是()。A.scanf(%d,&student.a);B.scanf(%dz8student);C.scanf(%d,Sstu.a);D.scanf(%d,&a);正确答案:A解析:C、StU是结构体类型名,不是变量名12、设已经定义UniC)nuchara;intb;vu;在VC中存储Char型数据需要1个字节,存储int型数据需要
6、4个字节,则存储变量VU需要()个字节。A.8B.4C.5D.1正确答案:B解析:B、共用体的存储空间,就是成员的最大存储空间。13、若已经定义typedefstructstuinta,b;student;,则下列叙述中正确的是()。A.student是结构体变量B.stu是结构体变量Ca和b是结构体变量D.student是结构体类型正确答案:D解析:A、最前面用了typedef,则在创建结构体的同时,给它取别名student是结构体的别名,即StU的别名,是类型名B、Stu是结构体的名称C、a,b是结构体的内部成员,是int型变量二、填空题1、有长度为10的一维整型数组a,由键盘输入它的值(
7、10个不等的数),求a数组中最小元素的值及其在数组中的位置。输入样例:169562324756813635输出样例:最小元素是6,是第7个元素注意:a0是数组中的第1个元素。请完善程序。(有2个空,答案一行写一个,不要添加多余的空格)#includeintmain()(intiza10,min,k;/k存储位置for(i=0;i10;i+)scanf(%d,&ai);min=a0;/假设第1个数为最小数k=l;k保存最小数的位置,此时为1for(i=l;i10;i+)(if(ai)min=ai;/min更新为较小数k更新为较小数的位置)Printf(最小元素是%d,是第d个元素”,min,k)
8、;)提示:求数组元素的最小值可以参考本周附加例题解析“求最值及其位置”中的数组方法例题,注意位置序号与本例的区别正确答案:mink=i+l;2、定义行星枚举类型,枚举常量从1开始编号,请填写下面的空格(不要添加多余的空格)enumPIanetfMercury=,Venus,Earth,Mars,Jupiter;SaturnzUranus,Neptune正确答案:1解析:枚举常量默认从。开始编号,要从1开始编号,必须将第一个常量设置为13、定义一个新的字符类型别名CHAR,请填写空白处(注意不要添加多余的空格)typedefCHAR;正确答案:char解析:按typedef的格式应填写字符类型关
9、键字,字符类型的关键字是char,4、已知若干个学生的成绩,每个学生四门课程,要求输出其中有不及格成绩的学生编号。学生编号由。开始计算。有多门不及格的学生编号只输出一次。请根据题意,填写程序空白处。(有2个空,答案一行写一个,不要添加多余的空格)#includemain()(intscore4=60z70,80,90,56,70,45,90,70,75,48,18;inti,j;intflag;设标志,flag为0,表示未输出该学生编号;flag为1,表示已输出该学生编号for(i=0;i3;i+)(flag=0;for(j=0;j4;j+)if(60&flag=)printf(%dtzi);flag=1;)正确答案:SCOreij0解析:当scoreiU60时,表示第i个学生的第j门课不及格,要输出该生而该生可能多门课不及格,题目只允许输出一次,因此,条件增加fIag=O,flag值为0时,表示还未输出过该学生