2017c语言考核册答案,2017年计算机二级C语言考前练习试题及答案2

本文提供了一系列C语言编程练习题及其详细解析,涵盖了数组、指针、链表等核心概念,适合初学者巩固基础。

904185a90a9787812da87830f77861c8.png

(21)有以下程序:

35c7753d1b941ebb6e4444c0fa47e018.png

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

A、1*1=1 1$2=2 1*3=3

6572b850e1449e60a6ae1c68dfab9fd9.png

(22)有以下程序:

751770ffdb3ae53e9ab7bba9dfad1830.png

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

A,*2*6

B.}3*5一

C.}5

D.*7

(23)有以下程序:

6840b35cbb2fbdd92163c51119be9ddd.png

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

A.500

B.401

C.503

D.1404

(24)若有以下函数首部:

int fun(double x[10],int*n)

则下面针对此函数的函数声明语句中正确的是( )。

int fun(double,int);

B.int fun(double木,int*);

C.int mn(double*x,int n);

D.int fun(double x,intint*n)

(25)有以下程序:

e4f3f379113a3ab671243e85c9d9a9a4.png

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

A.2,1,1,2

B.1,2,1,2

C.2,1,2,1

D.1,2,2,1

(26)若有以下定义:

int x[10],* pt=x;

则对x数组元素的正确引用是( )。

A.pt+3

B.}&x[10]

C.*(pt+10)

D.*(x+3)

(27)有以下程序:

37f2b12534c42bfe7a498e50b8be289a.png

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

A.20

B.25

C.45

D.36

(28)有以下程序:

64f80e8e1e36b117c8f27a7eebf9c135.png

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

A.1,O,7,0,

B.1,2,3,4,

C.1,4,5,9,

D.3,4,8,10,

(29)设有定义:char*C;以下选项中能够使C正确指向一个字符串的是( )。

A.char str( )=”strin9”;C=str;

B.scanf(”%s”,C.;

C.c=getchar( );

D.*c=”strin9”;

(30)若有定义语句:

char S[10]=”1234567\0\0”;则strlen(s)的值是( )。

A.7

B.8

C.9

D.10

(31)有以下程序:

8c756b78bee4690e121944183166fef3.png

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

A.11

B.9

C.6

D.7

(32)有以下程序(说明:字母A的ASCIl码值是65):

ea98af8283d376b21b7fafbf91b22b02.png

56d4479833d41a9c548c868694297c8d.png

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

A.BT

B.YE

C.YT

D.BY

(33)有以下程序:

16253622726b372b0b83d6cefbafb988.png

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

A.120

B.11

C.6

D.21

(34)有以下程序:

af36e838271a98fb1b1ca8832fc78fff.png

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

A.A B E F

B.C D E F

C.A B C D

D.C D A B

(35)以下关于typedef的叙述错误的是( )。

A.用typedef可以增加新类型

B.typedef只是将已存在的类型用一个新的名字来代替

C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

D.用typedef为类型说明一个新名,通常可以增加程序的可读性

(36)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。

508063b35dfe936ab93a5786dbf8df41.png

若有以下程序段:

cbc5351e8e1014f0710578bb96410d16.png

该程序段实现的功能是( )。

A.删除尾结点

B.尾结点成为首结点

C.删除首结点

D.首结点成为尾结点

(37)有以下程序:

6f87c37d4265a61c9223f85aa6a0a1d2.png

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

A.33

B.197

C.143

D.28

(38)若有以下程序段:

dfbc82b51245e1ad5d7265dabc2c8c8a.png

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

A.16

B.8

C.4

D.2

(39)以下叙述中错误的是( )。

A.gets函数用于从终端读人字符串

B.getehar函数用于从磁盘文件读人字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

(40)有以下程序:

c18c5699f1387c046a3b586a6a9936c2.png

以上程序执行后abc.dat文件的内容是( )。

A.China

B.Chinang

C.ChinaBeijing

D.BeijingChina

(21)A【解析】外循环第一次i的值为1,内循环第一次j的初值为1,打印1 *1=1;内循环第二次j的值为2,打印1$2=2;内循环第三次J的值为3,打印1}3=3,打印回车换行,退出内循环。外循环第二次i的值为2,内循环第一次j的初值为2,打印2*2=4;内循环第二次j的值为3,打印2。3=6,打印回车换行,退出内循环。外循环第三次i的值为3,内循环第一次j的初值为3,打印3*3=9,打印回车换行,退出内循环。

(22)D【解析】d0...whi1e语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5,所以余数为2,条件不成立,执行i++,i的值为6,判断whi1e条件为真;第二次执行循环体,同第一次循环的执行过程一样,i的值变为7,判断whi1e条件为真;第三次执行循环体,此时i%3==1,条件成立,再判断i%5==2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。所以选择D选项。

(23)C【解析】本题重点考察函数的定义和调用,第一次循环,a=0,i=0,返回值a=0*0+1+0=1;第二次循环,a=1,i=10,返回值a=10*10+1+1=102;第三次循环,a=102,i-20,返回值a=20*20+1十102=503;第四次循环,a=503,i=30;不符合i<30,跳出循环,最后结果输出a=503。

(24)B【解析】函数声明的一般形式为:“类型说明符被调函数名(类型形参,类型形参,……);”或“类型说明符被调函数名(类型,类型,……);”由于函数首部为int fun(doub1e x[10],int*n),因此B选项正确。

(25)D【解析】intm=1,n=2,* P=&m,。q=&I1,*r;即指针变量P指向m,指针变量q指向n,r=P;P=q;q=。;即

通过指针变量r,将指针P和指针q的指向交换。因此最后输出1,2,2,1。

(26)D【解析】没有A选项的引用形式。+与&放在一起作用抵消,所以B选项错误,只能引用到X[9]。+(pt+i)表示引用指针pt所指元素后的第i个元素,所以c选项错误,只能为+(pt+9)。因此D选项正确。

(27)B【解析】统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此·(t+i)代表数组的第i+1个元素。程序运行的结果是1+3+5+7+9=25。

(28)A【解析】该程序首先在定义变量时,对二维数组a[][N]进行赋值操作;调用函数fun,函数fun的功能是将二维数组中的a[0儿0]、a[1][1]、a[2][2]和a[3][3]赋值给一维数组,最后将一维数组元素1,0,7,0,输出。

(29)A【解析】A选项为正确用法,先将字符串存于字符数组中,然后将数组名赋给字符指针(数组名代表数组首地址,定义数组时为其分配确定地址)。C选项错误,getchar()函数只能输入一个字符给字符型变量,而不是字符指针。B选项和D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在B选项和D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。因此A选项正确。

(30)A【解析】str1en()函数在计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识‘\0’为止,注意‘\0’不占字符串长度,所以字符串长度为7。因此A选项正确。

(31)C【解析】strcpy:字符串拷贝函数;str1en:求字符串长度函数(注意:不包含字符串结束标识符‘、0’);strcat:字符串连接函数。执行完语句strcat(P,r);后,P数组中存储的元素为a,b,c,d,a,b,C,d,8;执行语句strcpy(P+str1en(q),q);得到的结果是将q所指向的字符串拷贝至P+str1en(q)开始的存储位置,因为str1en的值为3,即从P+3开始存储q中的元素。所以执行完strcpy(P+str|en(q),q)语句后,字符数组P[20]的存储元素为a,b,c,a,b,o;所以str1en(P)的结果为6。因此C选项正确。

(32)B【解析】本题中执行fun(a)时,会取字符串a的第一个字母B,因为字母B的ASCI1码值为66,所以不会输出字母8,函数只会输出ASCI1码值为奇数的字母,字母Y的ASCI1码值为89,字母T的ASCI1码值为84,字母E的ASCII码值为69。因此B选项正确。

(33)D【解析】fun函数中的变量X为静态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用fun函数,x的定义只在第一次调用时有效,从第二次调用开始,x的定义相当于不存在,直接使用上次X的值。fun函数被调用了5次,每次调用后的返回值累加到s上。5次调用后,x的值为6,8的值为1+2+3+4+5+6=21。因此D选项正确。

(34)B【解析】本题考察的是变量的作甩范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用:奉题中,在fun1()和main()函数内访问的是全局变量a和b,在fun2()函数中访问的是形参变量a和b。所以,main()函数中的prinff()函数输出的是在fun1()函数中被改变的全局变量a和b的值c、D,而fun2()函数中输出的是传递给它的实参值E、F。因此B选项正确。

(35)A【解析】typedef并不是增加了新类型,面是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强程序的可移植性。所以A选项错误:

(36)D【解析】本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后whi1e循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。(37)C【解析】本题考查带参数的宏定义,s为带参数的宏定义,运行S(k+j)为4*(k+j)*k+j+1=143,选项C正确。

(38)C【解析】本题考查位运算,属于基础知识,题目中将整型变量8,二进制表达为00(301000,右移一位为00000100,即4,选项c正确。

(39)B【解析】本题考查字符处理函数和文件操作函数。属于基础知识,其中B选项getchar函数是用于从终端读人一个字符。

(40)B【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chinang,选项B正确。

2829f2ca24f0d0090cbba57f30759f23.png

2017年计算机二级C语言考前练习试题及答案2.doc

下载Word文档到电脑,方便收藏和打印[全文共39678字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值