C语言笔试题目Word文档格式.docx

上传人:b****2 文档编号:909506 上传时间:2023-04-29 格式:DOCX 页数:23 大小:32.75KB
下载 相关 举报
C语言笔试题目Word文档格式.docx_第1页
第1页 / 共23页
C语言笔试题目Word文档格式.docx_第2页
第2页 / 共23页
C语言笔试题目Word文档格式.docx_第3页
第3页 / 共23页
C语言笔试题目Word文档格式.docx_第4页
第4页 / 共23页
C语言笔试题目Word文档格式.docx_第5页
第5页 / 共23页
C语言笔试题目Word文档格式.docx_第6页
第6页 / 共23页
C语言笔试题目Word文档格式.docx_第7页
第7页 / 共23页
C语言笔试题目Word文档格式.docx_第8页
第8页 / 共23页
C语言笔试题目Word文档格式.docx_第9页
第9页 / 共23页
C语言笔试题目Word文档格式.docx_第10页
第10页 / 共23页
C语言笔试题目Word文档格式.docx_第11页
第11页 / 共23页
C语言笔试题目Word文档格式.docx_第12页
第12页 / 共23页
C语言笔试题目Word文档格式.docx_第13页
第13页 / 共23页
C语言笔试题目Word文档格式.docx_第14页
第14页 / 共23页
C语言笔试题目Word文档格式.docx_第15页
第15页 / 共23页
C语言笔试题目Word文档格式.docx_第16页
第16页 / 共23页
C语言笔试题目Word文档格式.docx_第17页
第17页 / 共23页
C语言笔试题目Word文档格式.docx_第18页
第18页 / 共23页
C语言笔试题目Word文档格式.docx_第19页
第19页 / 共23页
C语言笔试题目Word文档格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言笔试题目Word文档格式.docx

《C语言笔试题目Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言笔试题目Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。

C语言笔试题目Word文档格式.docx

【答案】A

【解析】继承是一个子类直接使用父类的所有属性和方法。

它可以减少相似的类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言有了良好的重用性,也是其不同于其他语言的主要特点。

(6)需求分析最终结果是产生

A)项目开发计划 

B)需求规格说明书 

C)设计说明书 

D)可行性分析报告

【解析】需求分析应交付的主要文档就是需求规格说明书。

(7)在进行单元测试时,常用的方法是

A)采用白盒测试,辅之以黑盒测试 

B)采用黑盒测试,辅之以白盒测试

C)只使用白盒测试 

D)只使用黑盒测试

【解析】白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

从程序内部的逻辑结构对系统进行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。

(8)数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享。

A)视图 

B)消息 

C)数据 

D)关系

【解析】数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。

(9)下列叙述中,不正确的是

A)数据库技术的根本目标是要解决数据共享的问

B)数据库系统中,数据的物理结构必须与逻辑结构一致

C)数据库设计是指设计一个能满足用户要求,性能良好的数据库

D)数据库系统是一个独立的系统,但是需要操作系统的支持

【解析】数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。

(10)规范化理论中,分解()是消除其中多余的数据相关性。

A)关系运算 

B)内模式 

C)外模式 

D)视图

【解析】数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。

(11)以下说法中,不正确的是

A)C程序中必须有一个main()函数,从main()函数的第一条语句开始执 

B)非主函数都是在执行主函数时,通过函数调用或嵌套调用而执行

C)C程序中的main()函数必须放在程序的开始位置

D)C程序中的main()函数位置可以任意指定

【解析】main()函数的作用,以及main()函数在程序中出现的位置。

一个完整的C语言程序有且仅有一个主函数(main()函数)。

程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。

C语言规定,main()函数在程序中的位置是任意的。

(12)变量a已被定义为整型,下列表达式不正确的是

A)a=‘A‘+20 

B)a-=‘a‘ 

C)a=c+ 

D)a=‘c‘+‘d‘

【解析】在C语言中,字符变量可参与任何整数运算。

本题中只有C有错,因为C选项中c、d如果是字符常量,应有单引号,如果是变量,应该提前定义。

(13)下面程序的输出结果是

#include 

<stdio.h>

main()

{int 

i=010,j=10;

printf("

%d,%d"

++i,j--);

}

A)11,10 

B)9,10 

C)010,9 

D)10,9

【解析】程序中i的值用八进制表示(十进制为8),++i是在变量使用前自身先加1,而j--是在变量使用后自身减1。

(14)下面可以作为C语言用户标识符的一组是

A)void 

define 

WOR 

B)a3_b3 

_123 

IFC)for 

--abc 

case 

D)2a 

D0 

sizeof

【解析】在C语言中,合法的标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。

选项A中void为关键字;

选项C中for和case为关键字;

选项D中sizeof为关键字。

(15)下面哪一个不是正确的赋值语句?

A)a++;

B)a==b;

C)a+=b;

D)a=1,b=1;

【解析】C语言中赋值语句是由赋值表达式加“;

”构成的。

赋值表达式的形式为:

变量=表达式;

选项A中a++相当于a+1,是赋值语句;

选项C和选项D也是赋值语句。

只有选项B不是,因为选项B中“==”符号是等于的意思,并不是赋值运算符。

(16)若有定义:

int 

a=8,b=5,c;

执行语句c=a/b+0.4;

后,c的值为

A)1.4 

B)1 

C)2.0 

D)2

【解析】在表达式中根据运算的结合性和运算符的优先级,首先计算的是a/b(8/5=1),再将1+0.4赋值给c,由于c为整型变量所以要将1.4转换为整型,即舍弃小数位(c的值变为1)。

(17)若变量a是int类型,并执行了语句:

a=‘A‘+1.6;

则正确的叙述是

A)a的值是字符C 

B)a的值是浮点型 

C)不允许字符型和浮点型相加 

D)a的值是字符‘A‘的ASCII值加上1。

【解析】在C语言中规定允许不同类型的量进行运算,但在运算时需转换成高级的类型进行运算。

在表达式中有字符型和实型参加运算时,统一转换为实型再运算,当运算结果存入变量时再转换为该变量的类型。

(18)以下程序段的输出结果是

a=1234;

%2d\n"

a);

A)12 

B)34 

C)1234 

D)提示出错、无结果

【解析】 

printf()函数的输出格式,当整数的值超过格式要求输出范围时,原样输出。

本题中要求输出两个有效数字,而实际上a有4个有效数字,故原样输出,输出1234。

(19)以下选项中不属于C语言的类型的是

A)signed 

short 

B)unsigned 

long 

C)unsigned 

D)long 

short

【解析】在选项中很明显选项A为无符号短整型,选项B为无符号长整型,选项C为无符号整型,而选项D的类型在C语言中不存在。

(20)若有说明语句:

a,b,c,*d=&

c;

则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是

A)scanf("

%d%d%d"

,&

a,&

b,d);

B)scanf("

b,&

d);

C)scanf("

,a,b,d);

D)scanf("

,a,b,*d);

【解析】scanf()函数有两个参数,第一个参数是输入格式字符串,第二个参数是输入变量地址列表。

输入格式字符串主要由“%”符号和格式字符组成。

地址列表是由多个地址组成的。

选项B中d已经为地址,不应在加上求地址符号“&

”;

选项C中,a和b都为变量不是地址,应该在a和b之前加上求地址符号“&

”;

选项D中指针d所指向的存储空间的位置为变量c的值,不为地址。

(21)在16位C编译系统上,若定义long 

a;

,则能给a赋40000的正确语句是

A)a=20000+20000;

B)a=4000*10;

C)a=30000+10000;

D)a=4000L*10L;

【解析】由于20000+20000、4000*10及30000+10000都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确。

而D是长整型运算,不会超出长整型的范围。

(22)以下叙述正确的是

A)可以把define和if定义为用户标识符

B)可以把define定义为用户标识符,但不能把if定义为用户标识符

C)可以把if定义为用户标识符,但不能把define定义为用户标识符

D)define和if都不能定义为用户标识符

【解析】C语言中的保留字,而define不是保留字。

用户标识符不允许使用保留字。

(23)若定义:

a=511,*b=&

则printf("

%d\n"

*b);

的输出结果为

A)无确定值 

B)a的地址 

C)512 

D)511

【解析】本题中先定义了一个int型的变量a并赋初值为511,接着定义了一个指向a的指针变量b,在printf()函数的输出格式中,是输出*b,即输出指针所指向变量a的值为511,因此输出511。

(24)以下程序的输出结果是

a=5,b=4,c=6,d;

printf(("

d=a>b?

)(a>c?

a:

c):

(b));

A)5 

B)4 

C)6 

D)不确定

【解析】在C语言中问号表达式(如:

a>c?

)的计算规则为:

如果a>c为真,那么表达式的值为a的值;

否则表达式的值为c的值。

本题中的printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为6(a>c?

c中a>c即5>6为假故该表达式的值为c的值即为6),然后再计算外面表达式(等价于a>b?

6:

b)的值,同理可得该表达式的值为6,将值6赋值给d,因此最后输出该表达式的值为6。

(25)以下程序中,while循环的循环次数是

i=0;

while 

(i<10)

if(i<1)continue;

if(i==5) 

break;

i++;

A)1 

B)10 

D)死循环,不能确定次数

【解析】break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。

当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体。

而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。

本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;

”语句。

因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。

(26)以下程序的输出结果是

a=0,i;

for(i=1;

i<5;

i++)

switch(i)

0:

3:

a+=2;

1:

2:

a+=3;

default:

a+=5;

A)31 

B)13 

C)10 

D)20

【解析】switch语句的执行过程是:

在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。

如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行。

在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束。

(27)以下程序的输出结果是

a=4,b=5,c=0,d;

d=!

a&

&

!

b‖!

d);

B)0 

C)非0的数 

D)-1

【解析】由于单目运算符优先级高于“&

”和“||”运算,所以先计算!

a、!

b和!

c分别为“假”、“假”、“真”,然后是&

运算和“||”运算,原表达式就等价于“假”&

“假” 

||“真”,又由于“&

”的优先级高于“||”运算符,所以先计算“假”&

“假”,还是为假,最后是“假”||“真”为真。

因此最后d被赋值为1,故最后输出为1。

(28)以下程序的输出结果是

i=0,a=0;

(i<20)

for(;

;

if((i%10)==0) 

else 

i--;

i+=11;

a+=i;

A)21 

B)32 

C)33 

D)11

【解析】break语句只能在循环体和switch语句体内使用。

本题程序为在while循环中嵌套for循环。

先看内层for循环,该循环的3个表达式全部省略,循环条件始终为真,但循环体内的break语句为终止循环的条件。

首先,由初始条件判断外层循环while括号内表达式的值,该值为真,执行本次while循环,即执行循环体内的if语句,判断该表达式后面括号里表达式的值为真,执行break语句,跳出内层循环,执行下面的语句,此时i和a的值均变为11;

回到外层循环,判断表达式“i<20”仍为真,执行内层循环语句,此时if条件不满足,执行else语句,i的值为10,继续内层循环,if语句条件满足,执行break语句,跳出内层循环,执行下面的语句后,i和a的值分别是21和32。

再判断外层循环的条件为假,结束循环。

(29)以下程序的输出结果是

char 

cchar(char 

ch)

{

if(ch>=‘A‘ 

ch<=‘Z‘)ch=ch-‘A‘+‘a‘;

return 

ch;

s[]="

ABC+abc=defDEF"

*p=s;

while(*p)

*p=cchar(*p);

p++;

%s\n"

s);

A)abd+ABC=DEFdef 

B)abc+abc=defdef 

C)abcABCDEFdef 

D)abcabcdefdef

【解析】本题首先定义了一个函数cchar(),有一个字符型参数ch。

在函数中首先判断该字符是否为大写字母,如果是则把它转换成小写字符再赋值给ch,把ch作为函数值返回。

在主函数中定义了一个字符数组s并初始化,然后定义了一个指针变量并使它指向数组s。

接着通过一个while循环利用指针变量p,依次取出字符数组的字符(直到遇到字符串结束标志‘\0‘),并调用cchar()函数,把大写字母转换成小写字母,其他字符不变。

最后输出字符数组为s中的内容,结果为“abc+abc=defdef”。

(30)以下程序的输出结果是

f()

static 

s=1;

s+=i;

s;

i,a=0;

for(i=0;

i++)a+=f();

A)20 

B)24 

C)25 

D)15 

【解析】在C语言中声明为static型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。

即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。

由于并不释放这些存储单元,因此这些存储单元中的值得以保留;

因而可以继续使用存储单元中原来的值。

本题中函数f()中定义了一个static型变量i,故每调用一次函数f(),i的值加1,返回s的值等于i,在主函数中用了一个for循环,该循环执行了5次,每次都调用f()函数,将其返回值累加到变量a中,故最后a的值为1+2+3+4+5=15。

(31)以下程序段的输出结果是

\\141\141abc\t"

strlen(s));

A)9 

B)12 

C)13 

D)14

【解析】字符数组中可以存放字符串,但字符数组的长度并不是字符串的长度,字符串的长度是指字符数组中存放的有效字符个数,即‘\0‘,之前的字符数。

字符数组s中依次存放的字符是:

‘\\‘、‘1‘、‘4‘、‘1‘、‘\141‘、‘a‘、‘b‘、‘c‘和‘\t‘,和最后一个字符串结束标记‘\0‘,故字符串的长度是9。

(32)若有以下程序

void 

f(int 

n);

f(5);

n)

n);

则以下叙述中不正确的是

A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以 

正确调用函数f

C)对于以上程序,编译时系统会提示出错信息;

提示对f函数重复说明

D)函数f无返回值,所以可用void将其类型定义为无值型

【解析】若一个函数定义在主调函数之后,其返回值不是int或char型,则必须对之进行函数说明。

可在函数外说明也可以在函数内说明,在函数外说明,在其后的所有函数均可调用该函数,若在函数内说明,则只能在本函数内调用该函数。

函数只能定义一次,但函数说明可以出现多次。

(33)以下程序调用findmax函数返回数组中的最大值

findmax(int 

a,int 

p,* 

for 

(p=a,s=a;

p-a<n;

p++)

if( 

) 

s=p;

return(*s);

x[5]={12,21,13,6,18};

findmax(x,5));

在下划线处应填入的是

A)p>s 

B)*p>*s 

C)a[p]>a[s] 

D)p-a>p-s

【解析】在main()函数中定义了一个具有5个元素的x数组并赋初值,然后调用findmax()函数求数组中元素的最大值。

调用时把数组元素x的首地址,传给了形参指针变量a,把5传给形参n。

在函数findmax()中定义了两种指针变量p和s,其中s用来记录最大元素的地址,p作为循环控制变量,表示每个元素的地址。

求最大值的算法是先将第5个元素(用s记下它的地址)做为最大值,然后用最大值(*s)与后面的每个元素比较(*p),若后面的元素大,则用s记下它的地址,所以下划线应填“*s<*p”或“*p>*s”。

(34)以下程序的输出结果是

ch[3][5]={"

AAAA"

"

BBB"

CC"

};

\"

%s"

\n"

ch[1]);

A)"

B)"

C)"

BBBCC"

D)"

【解析】二维字符数组可以看成由若干个一维字符数组组成,每行是一个一维字符数组。

本题首先定义了一个数组ch[3][5],并给它们按行赋初值,即相当于给ch[0]赋值“AAAA”,给ch[1]赋值“BBB”,给ch[2]赋值“BBB”,最后输出转义字符“‘\‘”、ch[1]和转义字符“\”,因此输出为“BBB”。

(35)在C语言中,形参的缺省存储类是

A)auto 

B)register 

C)static 

D)extern

【解析】本题考核的知识点是定义函数时形参的缺省存储类。

在C语言中,形参的缺省存储类为auto。

(36)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2