<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("二级C语言,最新章节,练习题") PageTitle=stripHTML("二级C语言最新章节练习题(6)") ArticleIntro=stripHTML("") Articlecontent=stripHTML("一、选择题  1下面关于“EOF”的叙述,正确的是  A.EOF的值等于0  B.EOF是在库函数文件中定义的符号常量  C.文本文件和二进制文件都可以用EOF…") ModuleName = stripHTML("edu") InfoID = stripHTML("216607") ChannelShortName=stripHTML("培训") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("edu") %> 二级C语言最新章节练习题(6) - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 培训 >> 计算机等级考试 >> 计算机等级考试二级 >> 正文

[组图]二级C语言最新章节练习题(6)

2015/11/10 作者:不详 来源: 网络收集
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

  一、选择题

  1下面关于“EOF”的叙述,正确的是

  A.EOF的值等于0

  B.EOF是在库函数文件中定义的符号常量

  C.文本文件和二进制文件都可以用EOF作为文件结束标志

  D.对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF

  参考答案:B

  参考解析:在c语言中,或更精确地说成c标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

  2有以下程序

  

  若运行时从键盘上输入OPEN THE DOOR<回车>,程序的输出结果是

  A.0PEN THE DOORB.oPEN tHE dOORC.open the doorD.Open The Door

  参考答案:C

  参考解析:字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。首先使指针变量P指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。fun函数的功能是,将字符串中的大写字母变小写字母。将处理结果返回主函数,主函数通过putehar()字符输出函数进行输出。因此C选项正确。

  3为了建立如图所示的存储结构(即每个结点含两个

  

  A.link next;B.struct link*next;C.link*next;D.struet link next;

  参考答案:B

  参考解析:本题主要考查链表中结点的概念,属于基础知识,其中指针域应该是指向下个结点,所以答案为B。

  4若有以下程序

  

  则程序的输出结果是

  A.10B.11C.13D.15

  参考答案:B

  参考解析:break语句的作用是终止正在执行的switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出。题干中第一次循环n值为0,执行default语句后的s+=4,s的值变为4,执行case1语句后的s+=1,s的值变为5,遇到break语句跳出switch语句,进人第二次循环。第二次循环时n的值为1。执行case1后的s+=1,s的值变为6。遇到break语句跳出switch语句.进入第三次循环。第三次循环时n的值为2,执行case2后的s+=2,s的值变为8,遇到break语句跳出switch语句,进入第四次循环。第四次循环时n的值为3,执行case3后的s+=3,s的值变为11。再判断循环条件为假,退出循环打印s的值11。

  5有以下程序

  

  

  程序的输出结果是

  A.0B.6C.7D.8

  参考答案:B

  参考解析:本题主要考查了函数定义及调用,以及while循环语句,执行fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为B。

  6有以下程序

  

  

  程序的输出结果是

  A.9B.14C.10D.15

  参考答案:D

  参考解析:考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun(1))))=15。所以答案为D选项。

  7以下叙述中正确的是

  A.结构体数组名不能作为实参传给函数

  B.结构体变量的地址不能作为实参传给函数

  C.结构体中可以含有指向本结构体的指针成员

  D.即使是同类型的结构体变量,也不能进行整体赋值

  参考答案:C

  参考解析:本题考查结构体变量作为函数参数,结构体变量的地址可以作为参数传给函数,结构体数组名就是一个地址,可以传给函数,如果是同类型的结构体变量,可以整体赋值。

  8若有以下程序

  

  

  则程序的输出结果是

  A.5,3,3,5,5B.3,5,5,3,5C.3,5,3,5,5D.5,3,5,3,5

  参考答案:D

  参考解析:在主函数中分别给整型变量i、j和指针型变量P,q赋初值,并声明指针变量r;调用f函数,并将实参变量P和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t的值互换,并且将指针S的地址返回主函数。最后输出i,j,*P,* q,*r的值,即5,3,5,3,5。因此D选项正确。

  9以下叙述中正确的是

  A.在c语言中,逻辑真值和假值分别对应1和0

  B.关系运算符两边的运算对象可以是

  C语言中任意合法的表达式C.对于浮点变量x和y,表达式:x==y是非法的,会出编译错误

  D.分支结构是根据算术表达式的结果来判断流程走向的

  参考答案:B

  参考解析:A选项中,在c语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。

  10有如下程序

  

  

  程序运行后的输出结果是

  A.min=0,max=21B.min=1,max=20C.min=1,max=19D.min=0,max=6

  参考答案:A

  参考解析:本题首先在main函数定义一个数组array,然后定义了一个结构变量rain_max,min_max使用函数get_min_max的返回值初始化,函数get_min_max的功能就是将数组中的最小值和最大值取出来后分别赋值给结构变量min_max中的first,second两个整形变量,数组长度为6个单位,初始化4个数据,剩下2个默认为0,因此答案为A选项。

  11有以下程序

  

  程序运行后的输出结果是

  A.8,17B.7,16C.8,8D.7,17

  参考答案:A

  参考解析:本题考查静态局部变量,本题中先执行fun(4,1)得到返回值为8,此时静态局部变量m为8,i为3,那么再次执行fun(4,1)得到的值为17,所以选项A正确。

  12有以下程序

  

  程序运行后的输出结果是

  A.4B.8C.9D.6

  参考答案:B

  参考解析:本题考查宏定义,宏定义只是做个简单的替换,执行NUM=(N+l+1)*N+1/2=8,选项B正确。

  13有以下程序

  

  程序运行后的输出结果是

  A.1B.6C.7D.0

  参考答案:C

  参考解析:本题考查字符串作为函数参数以及while语句,本题中传人字符串0ABCDEF,然后执行fun后,就得到了该字符串中字符的个数,不包括结尾符,该字符串有7个字符,所以答案为C。

  14设有定义:int a[10]={0,1,2,3,4,5,6,7,8,91,}*P=a,i;,若0≤i≤9,则对a数组元素的引用错误的是

  A.a[10]B.*&a[i])C.P[i]D.a[P-a]

  参考答案:A

  参考解析:长度为n的数组其各个元素的下标应该是从0到n-1,因此,长度为10的数组a,第10个元素为a[9],而不是a[10],答案为A选项。

  15若有以下程序

  

  则程序的输出结果是

  A.6.12,12B.6,4,3C.6,4,6D.9,4,9

  参考答案:C

  参考解析:首先在主函数中给整型变量k赋值为3,调用sp函数,将变量k的地址作为实参传递给形参指针变量a;在sp函数中,*a=*a*2;即结果为6由于指针变量a指的地址k,所以k值此时也变成6,通过prinff()函数输出。整型变量b的地址赋给指针变量a,再执行*a=*a*2;。即结果为4,通过pfinff()函数输出。返回主函数,输出k的值6。因此C选项正确。

  16有以下程序

  

  程序运行后的输出结果是

  A.abcdeB.ABCDEC.edcbaD.EDCBA

  参考答案:B

  参考解析:本题考查数组名作为函数参数,执行f函数时,传进去的a指针被重新指向了b,所以原本a数组的地址内容不变,所以输出结果为ABCDE,答案为8选项。

  17有以下程序

  

  程序运行后的输出结果是

  A.24B.23C.17D.22

  参考答案:C

  参考解析:本题主要考查函数作为形参时的使用,由x=8ss(funa,9,3);可得到x=9+3=12,而后直接传人函数funb.x=x+8-3=12+5=17。因此C选项正确。

  18有以下程序

  

  

  A.9284B.9824C.6982D.6385

  参考答案:D

  参考解析:本题中首先是将二维字符数组c赋值指针数组P,然后遍历P找到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为6385。

  19设有定义语句:

  

  则以下叙述正确的是

  A.aa[0]存放了字符串“abcd“的首地址

  B.aa数组的两个元素只能存放含有4个字符的一维数组的首地址

  C.aa数组的值分别是字符串”abcd”和”ABCD”

  D.fla是指针变量,它指向含有两个元素的字符型数组

  参考答案:A

  参考解析:

  本题中定义了一个指针数组,数组中存放的是字符指针,aa数组的两个元素分别包含了5个字符,所以可以存放5个字符的一维数组的首地址,所以B选项错误。aa数组的值是指向那两个字符串的字符指针,而不是那两个字符串,所以C选项错误。Eta本身是一个指向两个字符指针的指针,所以D选项错误。

  20有如下定义

  

  若文件已正确打开,且数组x的10个元素均已赋值,以下将数组元素写到文件中的语句错误的是

  

  参考答案:A

  参考解析:fwrite()函数用法是fwrite(void$buffer,intsize,int n,FILE*fp),其中buffer为要输出的数据的首地址,A选项中,因为n=1,即每次写入1个结构体数据,x是数组的首地址,因此,每次写入的数据都是数组的首个结构体元素,没有将整个数组写入文件中去,答案为A选项。

  21若有以下程序

  

  则程序的输出结果是

  A.abedB.ABEJC.abejD.ABCD

  参考答案:C

  参考解析:

  若有以下程序:该题目首先初始化变量a和b,通过for循环语句使a取值为0、1、2、3,f函数的功能是将a*a+'a'的值返回给b,即b为a…b e j。最后通过字符输出函数putchar()将b输出。因此C选项正确。

  22有以下程序

  

  程序运行后的输出结果是

  A.17B.19C.18D.20

  参考答案:B

  参考解析:本题通过语句P=&a[1]将指针变量P指向了存储单元a[1],即使得p[O]的值为4。然后通过3次for循环,x=0时,*(P+x)=* P=a[1]=4所以y=1+4=5;x=1时,*(P+x)=*(P+1)=a[2]=6,所以y=5+6=11;x=2 时,*(P+X)=*(P+2)=a[3]=8,所以y=11+8=19。因此B选项正确。

  23有以下程序

  

  则程序的输出结果是

  A.3,5,5,3,5

  B.3,5,3,5,5

  C.5,3,5,3,5

  D.5,3,3,5,5

  参考答案:B

  参考解析:在主函数中分别给整型变量i、j和指针型变量P,q赋初值,并声明指针变量r;调用f函数,并将实参变量P和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i,j,*P,*q,*r的值,即3,5,3,5,5。因此B选项正确。

  24以下针对全局变量的叙述错误的是

  A.用extern说明符可以限制全局变量的作用域

  B.全局变量是在函数外部任意位置上定义的变量

  C.全局变量的作用域是从定义位置开始至源文件结束

  D.全局变量的生存期贯穿于整个程序的运行期间

  参考答案:A

  参考解析:在不同编译单位内用extern说明符来扩展全局变量的作用域,extem可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域,答案为A选项。

  25以下叙述中正确的是

  A.如果P是指针变量,则&p是不合法的表达式

  B.如果P是指针变量,则*P表示变量P的地址值

  C.在对指针进行加、减算术运算时,数字1表示1个存储单元的长度

  D.如果P是指针变量,则* P+1和*(P+1)的效果是一样的

  参考答案:C

  参考解析:A选项中,如果P是指针变量,则&p表示变量P的地址;B选项中,如果P是指针变量,则*P表示变量P所指向的地址的值;D选项中,如果P是指针变量,*P+1表示将P所指的值加上1,而*(P+1)表示的是先将指针右移一位再取所指向变量的值。因此C选项正确。

  26以下选项中错误的

  A.a!=b与a=a!b等价

  B.a^=b与a=a^b等价

  C.a|=b与a=a|b等价

  D.a&=b与a=a&b等价

  参考答案:A

  参考解析:A选项中,a!=b表示a不等于b时,运算结果为1,或者为0;而a=a!b是一种语法错误,!是非运算,且是单目运算符,只要求有一个操作数,故两者不等价,答案为A选项。

  27有以下程序

  

  程序的输出结果是

  A.1 5 0B.3 5 7C.1 4 7D.3 6 9

  参考答案:B

  参考解析:程序首先初始化二维数组X[3][3],然后通过3次for循环,输出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B选项正确。

  28以下叙述中正确的是

  A.只要适当地修改代码,就可以将do-while与while相互转换

  B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环

  C.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句

  D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句

  参考答案:A

  参考解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。

  29以下选项中函数形参不是指针的是

  A.fun(int*A.i{…}

  B.fun(int a[10]){…}

  C.fun(int&p){…}

  D.fun(int p[]){…}

  参考答案:C

  参考解析:B选项和D选项是将数组作为函数参数;A选项是将指针作为函数参数;因此C选项正确。

  30若有定义和语句:int a,b;

  scanf("%d,%d,",&a,&B.;

  以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是

  A.3,5,4B.3,5C.3,5,D.3,5

  参考答案:D

  参考解析:scanf()的格式控制串可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配。所以在3和5之间必须输入逗号,不能有其他符号,才能保证a和b的正确赋值。所以选择D。



  • 上一篇培训:

  • 下一篇培训: 没有了