计算机等级考试二级C真题参考答案及解析.docx
- 文档编号:15305978
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:42
- 大小:47.39KB
计算机等级考试二级C真题参考答案及解析.docx
《计算机等级考试二级C真题参考答案及解析.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级C真题参考答案及解析.docx(42页珍藏版)》请在冰点文库上搜索。
计算机等级考试二级C真题参考答案及解析
计算机等级考试二级C真题参考答案及解析
1、以下选项中可作为C语言合法常量的是______。
A)-80. B)-080 C)-8e1.0 D)-80.0e【答案】A【解析】本题考点为数值常量的表示。
在C语言中,以0开头的整型常量为八进制数,其有效数字符号为0~7,故选项B错误。
在以指数形式表示实型常量时,e后面的指数只能是整数,且必须含有指数,故选项C、D错误。
2、以下不能定义为用户标识符的是______。
A)Main B)_0 C)_int D)sizeof【答案】D解析】本题考点是C语言中标识符的命名规则。
C语言中的标识符包括变量名、符号常量名、函数名、数组名、结构名、类型名、文件名等,C语言中规定标识符只能由字母、数字和下划线三种符号组成,并且标识符的首字符必须是字母或下划线,C语言中的关键字如语句、数据类型名等不允许作为用户定义的标识符。
3、以下选项中,不能作为合法常量的是______。
参见第1题解析。
A)1.234e04 B)1.234e0.4C)1.234e+4 D)1.234e0【答案】B【解析】
4、数字字符0的ASCII值为48,若有以下程序:
main(){ char a='1',b='2';printf("%c,",b++);
printf("%d\n",b-a);}程序运行后的输出结果是______。
A)3,2 B)50,2 C)2,2 D)2,50【答案】C【解析】本题考点为字符型数据的运算。
字符型数据的实质是字符的ASCII编码,因此字符型数据可以作为一个整数进行运算,参加运算的数据为字符对应的ASCII码。
因为b='2',故执行b++后b='3',但因在语句printf("%c,",b++);中b++为后增量,输出字符仍为'2',而b-a='3'-'1'=2,本题正确答案为C。
5、有以下程序:
main(){ intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是______。
A)12353514 B)12353513 C)12343514 D)12343513【答案】A【解析】本题考点为自增运算符。
自增运算符分为前增量和后增量两种情况,在前增量中,先将变量增值,再取其值;而在后增量中是先取变量值再增值。
在输出语句printf("%d%d",m++,++n);中因m为后增量,n为前增量,故输出结果为1235,该语句执行后m=13,n=35。
再执行第2条输出语printf("%d%d\n",n++,++m)时,因n为后增量,m为前增量,则输出结果为3514,故本题正确答案为12353514,6、有定义语句:
int b;char c[10];,则正确的输入语句是______。
A)scanf("%d%s",&b,&c);B)scanf("%d%s",&b,c);C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c);【答案】B【解析】本题考点为输入函数scanf。
在scanf的输入变量表中,必须使用变量的地址,由于数组名称就是数组的指针(即第一个元素的地址),所以在输入数组时应直接使用数组名,无须使用地址运算符&。
7、有以下程序:
main(){ int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A)m=123n=456p=789 B)m=123 n=456 p=789
C)m=123,n=456,p=789 D)123 456 789【答案】A【解析】本题考点为输入函数scanf。
在scanf函数的输入格式描述中,除了数据说明符%d、%i、%f、%s等之外,其他符号必须在输入时原样输入,
8、有以下程序:
main(){int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是______。
A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3【答案】D【解析】本题考点为自增运算符和逻辑表达式求解。
在逻辑表达式的求解过程中,如果表达式已经有确定的结果值,则不会继续求解后面的表达式。
在本题的逻辑表达式中,因++j==3||k++==3中++j==3为真,则不会求解k++==3,即不会执行k++操作,故变量k仍保持原来的值。
程序运行后的输出结果是233,9、若整型变量a、b、c、d中的值依次为:
1、4、3、2,则条件表达式a
a:
c c: d的值______。 A)1 B)2 C)3 D)4【答案】A【解析】本题考点为? 号运算符。 ? 运算符相当于执行一个条件判断,? 号运算的语法为: 表达式1? 表达式2: 表达式3当表达式1取值为真时,整个? 号表达式的值为表达式2的值,否则为表达式3的值。 在本题表达a a: c c: d相当于a a: (c c: d),因a 10、有以下程序: main(){intp[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【答案】B【解析】本题考点为数组和自增运算符。 注意到循环语句为while(i++<7) ,即在判断了循环条件是否成立之后i值即会加1,因此在第1次循环时循环体语句 if(p[i]%2) j+=p[i];判断处理的数组元素是p[1],第2次循环时循环体语句 判断处理的数组元素是p[2],以此类推。 根据条件语句 if(p[i]%2) j+=p[i];可知程序只将取值为奇数的数组元素累加到变量j中,因此j=p[2]+p[4]+p[6]=13+15+17=45。 本题正确答案为B。 11、以下能正确定义一维数组的选项是______。 A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5}; C)char a={'A','B','C'}; D)int a[5]="0123"; 【答案】B【解析】本题考点为一维数组定义。 选项A中数组a只有5个元素,但使用了6个数对其进行初始化,故选项A错误。 选项C中定义的变量a不是数组,故选项C错误。 选项D中定义的数组a是一个整型数组,不能使用字符串对其初始化。 因此本题正确答案为B。 12、已有定义: chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。 A)数组a和b的长度相同 B)a数组长度小于b数组长度 C)a数组长度大于b数组长度 D)上述说法都不对【答案】C【解析】本题考点为字符数组与字符串的区别。 在使用一个字符串对字符数组初始化时,系统将自动为数组多分配一个存储单元,用于存储字符串结束符’\0’。 因此数组a有4个元素,数组b只有3个元素。 本题正确答案为C。 13、有以下程序: main(){int a=1,b;for(b=1;b<=10;b++) {if(a>=8) break;if(a%2==1) {a+=5; continue;} a-=3;}printf("%d\n",b);}程序运行后的输出结果是______。 A)3 B)4 C)5 D)6【答案】B【解析】本题考点为选择结构和循环结构。 在循环结构中,如果执行到break语句,将中止循环,转而执行循环后面的其他语句;如果执行到continue语句,则结束本次循环,提前进入下一次循环。 本题程序中,在变量b的值从1~10的循环过程中,如果a>=8则结束循环;如果a值为奇数,则将a加5,否则将a减3,则程序的执行过程为: 当b=1时,由于a=1,故a=a+5=6;当b=2时,由于a=6,故a=a-3=3;当b=3时,由于a=3,故a=a+5=8;当b=4时,由于a=8,故循环break;此时b的值为4。 14、有以下程序: main() {intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i++){for(j=1;j<=i;j++) printf("%c",''); for(j= ;j<4;j++)printf("%4d",num[i][j]);printf("\n");}} 若要按以下形式输出数组右上半三角: 1 2 3 4 6 7 8 11 12 则在程序下划线处应填入的是______。 16 A)i-1 B)i C)i+1 D)4-I【答案】B【解析】本题考点为二维数组。 根据最外层循环语for(i=0;i<4;i++)和输出语printf("\n");可知程序的输出结果包含四行数据。 在第i次循环中,首先将执行for(j=1;j<=i;j++)printf("%c",'');输出i个空格符,然后输出二维数组num第i行中的后4-i个元素,故空白处应填i。 15、以下程序运行时若从键盘输入: 10 20 30<回车>。 输出结果是 。 #include scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);}【答案】10 30 0【解析】在输入函数scanf中,格式描述符*的含义表示该输入项读入后不赋予相应的变量,即跳过该输入值。 例如scanf("%d%*d%d",&a,&b);当输入为123时,把1赋值给变量a,2被跳过,3赋值给变量b。 在本题中输入值10赋值给变量i,输入值20被跳过,输入值30被赋值给变量j,变量k仍保持初始值0。 16、以下程序运行后的输出结果是 。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机等级考试 二级 参考答案 解析