全国计算机等级考试二级C语言真题题库22016年3月(总分100,做题时间120分钟)一、选择题(每小题1分,共40分)1.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。Aseanf(”%s”Ptrtitle);Bscanf(”%s”,rec.title);Cscanf(’’%s”,(*pu).title);Dscanf(”%s”,ptr->title);答案:A符号“_>”是指针特用的,符号“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。选项B,Fee.title代表数组title,同理选项C正确。答案为A选项。2.有以下程序:执行时输入:aBeDefG##<回车>,则输出结果是()。AAbCdEFgBABCDEFGCBCDEFGHDbedefgh答案:C循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。putchar(++C),表示将字符变量C加1后输出。因此,输入aBcDefG##,得到的结果是BCDEFGH。故答案为c选项。3.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。Aextem和staticBauto和staticCregister和staticDregister和excerl答案:Aauto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字通常会被省,因为所有的变量默认就是aut0的。register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。4.设有定义:intx,Y,z;,且各变量已赋正整数值,则以下能正确表示代数式的C语言表达式是()。A…1.…0/x。/y,/zB1/x*Y*zC1/(x*Y*z)D1/x/y/(double)z答案:A代数表达式1/(X•Y•z)是小数,转为cf语言的表达式必须是小数。A选项由于l.0为浮点数,计算结1果自动转换为浮点数,故A选项正确。选项B,C,D的表达式均为0。答案为A选项。5.若有定义:doublex;,则表达式IX=0,x+10,x+十的值是()。A11.0B10.0C0.0D1.0答案:Cc语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k++表示先运算,后自■:曹置自增运算:++k表示先自加,后运算。因此,表达式l;O,I+10。x++的计算过程为首先赋值x=0,然后将x加l0,包是并不对x进行赋值,最后计算x++,并,根据后置自增运算的计算结果,即为x=0.0。故答案为C选项。6.有以下程序:执行时输入:0<回车>后,则输出结果是()。A5,B0,0,0,0,0,C0,1,2,3,4,D0,1,答案:C”anf(”%c”,&c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。故答案为C选项。7.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。程序运行后,不能得到正确结果,出现问题的语句是()。Asum+=1/i;Bwhile(i<50);Csum.=1.0;Di++;答案:A选项A中,8111111+=1/i;i为整型,因此l/i是整型类型,当1/i有小数时,小数部分会被截断。因此l/i结果始终为0,导致结果出错,应改为8111m+=1.0/i。因此答案为A选项。8.下列处理中与队列有关的是()。A操作系统中的作业调度B执行程序...