好文档 - 专业文书写作范文服务资料分享网站

全国计算机等级考试二级C语言真题题库3+2014年3月

天下 分享 时间: 加入收藏 我要投稿 点赞

25.有以下程序: #include (分数:1.00) A.11,19,19 B.12,20,20 C.11,20,20 √ D.12,19,20

程序运行后的输出结果是( )。

解析:[解析]*P=a,将数组a的首地址赋给指针Po P-a=0,待输出变量为a[0]。P[i]表示P后i个地址的元素,待输出变量为a[9]。&a[i]取a[i]地址,*(&a[i])取这个地址内的元素,待输出变量为a[9]。最后输出为11,20,20,故C选项正确。 26.有以下程序: (分数:1.00) A.60,20 √ B.10,9 C.7,20 D.10,10

解析:[解析]调用函数fun,将数组的地址、数组长度、变量k的地址传人函数。for函数实现查找数组中最大值,将其下标值存入变量k标志的内存单元。输出k=6,a[6]=20,故A选项正确。 27.有以下说明语句: (分数:1.00) A.17 B.15 C.14 √ D.说明语句不合法

解析:[解析]指针S所指字符串的长度,可以使用丙数strlen()来求长度。以“\”开头的转义字符也是字符常量。用一对双引号括起来的多个字符为字符串。“\”“\\”“\n”为转义字符,所以字符串长度为14,故C选项正确。 28.有以下程序: (分数:1.00) A.6 √ B.7 C.11 D.12

解析:[解析]数组初始化时,如果存说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值,如果为字符数组,自动赋值“\o”,即str[12]={‘s’’‘t’,‘r’,‘i’,‘n’,‘g’,‘\0’,‘\0’,‘\0’,‘\0’,‘\0’,‘\0’}。strlen函数求字符串长度,统计长度时以“\0”结束,即统计到长度为6时结束,strlen函数返回值为6,故A选项正确。 29.有以下程序: (分数:1.00)

A.ABCDEFGHIJKLMNOP √ B.ABCDEFGHIJKL C.ABCD D.AEIM

程序运行后的输出结果是( )。 程序运行后的输出结果是( )。

指针s所指字符串的长度是( )。 程序运行后的输出结果是( )。

解析:[解析〕题目中定义了一个指针数组,并对其初始化,6个指针分别指向6个字符串。定义指向指针的指针,并使其指向这个指针数组。调用printf函数打印前4个字符串,结果为“ABCDEFGHIJKLMNOP”,故A选项正确。 30.有以下程序: (分数:1.00) A.1,6,3,1,3 B.1,6,3,2,3 √ C.1,6,3,6,3 D.1,7,3,2,3

解析:[解析]程序执行过程为:输出i=1,之后i自增,得i=2;赋值i=0,j=3,执行语句i+=j*2;得i=6;输出i=6,j=3;花括号内的i与花括号外i作用域不同,属于不同的变量。之后再输出i=2,j=3。坟B选项正确。 31.有以下程序: (分数:1.00) A.8,17 √ B.8,16 C.8,8 D.8,20

解析:[解析]static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使迟出闲数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:调用函数,m=0,i=2,i=i+m+1=3,m=8,返回p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回p=17,故A选项正确。 32.若有以下程序段: (分数:1.00) A.*strp B.str[k] C.strp[k] D.strp √

解析:[解析]for循环实现将每个字符串的旨地址赋给指针数组中每一个元素。strp为指针数组首地址,不是字符串的引用。str[k]为第k个字符串的地址,表示第k个字符串的引用。strp[k]表示指针数组的第k个元素,为第k个字符串的地址,也是这个字符串的引用。*strp取指针数组第一个元素,即为第一个字符数组的地址,也即为第一个字符串的引用。故选择D选项。 33.有以下程序: (分数:1.00) A.12 √ B.13 C.15 D.11

解析:[解析]带参数的宏的调用格式:宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。将PRINT(F(5)*2)用PR(F(5)*2);putchar('\n,')替换,将PR(F(5)*2)用printf(“%d”,(int)(F(5)*2))替换,再将F(5)用2.84+5替换,最后替换结果为Printf(“%d”,(int)(2.84+5*2));putchar(’\n’),运行结果为:12<回车>。放A选项正确。

程序运行后的输出结果是( )。

则以下错误引用字符串的选项是(其中0≤k<4)( )。 程序运行后的输出结果是( )。 程序运行后的输出结果是( )。

34.以下关于fclose(fp)函数的叙述正确的是( )。 (分数:1.00)

A.当程序中对文件的所有写操作完成之后,必须调用fclose(fp)函数关闭文件 √ B.当程序中对文件的所有写操作完成之后,不一定要调用fclose(fp)函数关闭文件 C.只有对文件进行输入操作之后,才需要调用fclose(fp)函数关闭文件 D.只有对文件进行输出操作之后,才能调用fclose(fp)函数关闭文件

解析:[解析]对一个文件操作完成后,要将该文件关闭,“关闭”就是使文件指针变量不再指向该文件。程序编写者应该在程序终止之前关闭所有文件,如果不关闭,文件将会丢失数据。因为,在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出给文件。如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用fclose函数关闭文件,可以避免这个问题,它先把缓冲区小的数据输出到磁盘文件,然后才释放文件指针变量。所以对文件的所有写操作完成之后必须要关闭文件,故A选项正确,B选项错误。只要对文件进行操作后,都要调用fclose文件关闭文件,故C、D选项错误。 35.若有以下定义和语句: (分数:1.00) A.(*p).n++ B.p++->n C.p->n++ D.(++p)->n √

解析:[解析]定义指向结构体变量的指针p,并将结构体数组首地址赋给Po(++P)->n,p指针白加一指向数组第二个元素,其成员n=6,D选项正确。p++ ->n,p指向结构体数组第一个元素,其成员n=5。P->n++,p指向结构体数组第一个元素,其成员n=5,由于++是后缀,先取值,所以表达式为5,之后再白加一。(*p).n++,*p为结构体数组第一个元素,其成员n=5,先取值,表达式为5。故选D 36.标准库函数fgets(s,n,f)的功能是( )。 (分数:1.00)

A.从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 √ B.从文件f中读取长度为n的字符串存入指针s所指的内存 C.从文件f中读取n个字符串存人指针s所指的内存 D.从文件f中读取n-1个字符串存人指针s所指的内存

解析:[解析]fgets函数功能是从f所指文件中读人n-1个字符放入s为起始地址的空间内,并在尾端自动加一个结束标志“\0”。同时将读/写位置指针向前移动字符串长度个字节。在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束,A选项正确。B选项中“读取长度为n”错误。C选项与D选项中“读取n/n-1个字符串”错误,读取的是n-1个字符。故选A。 37.有以下程序: (分数:1.00) A.1 √ B.0 C.2 D.4

解析:[解析]“>>”右移运算符每次右移一位等价于除2,x=36,执行x>>2后,x=9;“&&”逻辑与运算,先计算左表达式真假,若为假,不计算有表达式,整个逻辑表达式为假,若左表达式为真,再计算右表达式,之后做逻辑与运算;x>>2为真,A的ASCII码为65,a的ASCII码为97,c<’a’为真,整个逻辑表达式(x>>2)&&(c<’a’)为真,得b=1。故A选项正确。 38.有以下程序: (分数:1.00)

A.printf(\%c\n\,stud[1].name[1]; B.printf(\%c\n\,stud[3].name[3];

程序运行后不能输出字符u的语句是( )。 程序运行后的输出结果是( )。

则值为6的表达式是(提示:运算符->的优先级高于++)( )。

C.printf(\%c\n\,stud[2].name[2]; D.printf(\%c\n\,stud[0].name[3]; √

解析:[解析]stud[0].name[3]为数组stud第一个元素的成员name字符数组的第四个元素m。

stud[3].name[3]为数组stud第四个元素的成员name字符数组的第四个元素u。 stud[2].name[2]为数组stud第三个元素的成员name字符数组的第三个元素u。stud[1].name[1]为数组stud第二个元素的成员name字符数组的第二个元素u。故D选项正确。

39.有定义:int a=64,b=8;,则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为( )。 (分数:1.00) A.1和1 √ B.1和0 C.0和1 D.0和0

解析:[解析]常用的位运算符有:“~”按位求反,“<>”右移,“&”按位与,“^”,按位异或,“|’按位或。运算时,先将数值转化为二进制。逻辑或运算符“||”计算左表达式值,如果为真,则不计算右表达式,而整个表达式为真,若左表达式为假,再计算右表达式然后做或运算。逻辑与运算符“&&”,计算左表达式值,如果为假则不计算右表达式,而整个表达式为假,若左表达式为真,再计算右表达式然后做与运算。a=64=1000000B,b=8=1000B,a&b=0为假,a&&b为真,(a&b)||(a&&b)为真,值为1。a|b=1001000B为真,a || b为真,则(a|b)&&(a||b)为真,值为1。故A选项正确。 40.有以下程序: (分数:1.00) A.21 √ B.6 C.123456 D.11

解析:[解析]fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针。如果不能实现打开指定文件的操作,则返回一个空指针NULL。facanf函数从文本文件中按格式输入。fprintf函数按照格式向文本文件中输出数据。文件定位函数fseek,将指针由文件开头0、当前位置1、末尾2移动指定字节。rewind函数功能使文件的位置指针返回到文件头。本例中,循环实现的功能是求数组的和。程序执行过程为:以激写方式建立一个新的文本文件data.dat,将1写入文件;执行for循环,将文件指针移到文件开头,将文件第一个数值1赋给k,再将指针移动到开头,向文件内输入a[i]+k=3。for循环实现将a数组中元素累加,结果21存放在文件中。调用rewind将文件指针移动到开头,调用fscanf函数从文件中读出数值赋予k=21,调用fclose函数关闭文件,打印k值,故A选项正确。

程序运行后的输出结果是( )。

二、程序填空题(总题数:1,分数:1.00)

41.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下画线处填入正确的内容井把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构: 试题程序: (分数:1.00)

填空项1:__________________ (正确答案:---|||________|||---STU ---|||________|||---score[i] ---|||________|||---&std)

解析:[考点分析] 本题考查:数组变量赋值;函数实参定义。 [解题思路] 本题是利用结构体存储学生记录,对记录进行修改并由实参ss返回。 填空1:实参ss是一个结构型指针变量,所以应填STU。 填空2:该学生的各科成绩都乘以一个系数a,所以应填score[i]。 填空3:函数的调用,由于函数定义时使用的指针结构型变量,所以应填&std。

三、程序修改题(总题数:1,分数:1.00)

42.下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如,若k=10,则应输 出3628800。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: (分数:1.00)

__________________________________________________________________________________________ 正确答案:(if(k>1))

解析:[考点分析] 本题考查:if语句,考生需要根据题意来确定if语句是否是正确的,if条件语句经常考,考生需掌握。 [解题思路] 语法错误,if条件表达式应写在小括号内。

四、程序设计题(总题数:1,分数:1.00)

43.程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为: 程序后a数组中的值应为: 则返回主注意:部分源程序给出如下。 清勿改动函数ma5n和其他函数令的任何

内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: (分数:1.00)

__________________________________________________________________________________________ 正确答案:() 解析: [考点分析] 本题的fun的功能是使数组的左下半三角元素中的值乘以n,因此本题需要使用双重for循环,for循环需要注意的是: (1)循环初值,根据题意要求控制循环变量的取值范围; (2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。 [解题思路] 首先从数组中找出要被乘以n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。

全国计算机等级考试二级C语言真题题库3+2014年3月

25.有以下程序:#include(分数:1.00)A.11,19,19B.12,20,20C.11,20,20√D.12,19,20程序运行后的输出结果是()。解析:[解析]*P=a,将数组a的首地址赋给指针PoP-a=0,待输出变量为a[0]。P[i]表示P后i个地址的元素,待输出变量为a[9]。&a[i]取a[i]地址,*(&a
推荐度:
点击下载文档文档为doc格式
8tlpi9ri1q7px008twlp8xswm2yhl0015nw
领取福利

微信扫码领取福利

微信扫码分享