C测验题.docx

上传人:b****2 文档编号:23093899 上传时间:2023-04-30 格式:DOCX 页数:30 大小:1.06MB
下载 相关 举报
C测验题.docx_第1页
第1页 / 共30页
C测验题.docx_第2页
第2页 / 共30页
C测验题.docx_第3页
第3页 / 共30页
C测验题.docx_第4页
第4页 / 共30页
C测验题.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C测验题.docx

《C测验题.docx》由会员分享,可在线阅读,更多相关《C测验题.docx(30页珍藏版)》请在冰豆网上搜索。

C测验题.docx

C测验题

  1[简答题]学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:

把分数最高的学生数据放在b所指的数组中。

注意:

分数最高的学生可能不止一个,函数返回分数最高的学生人数。

  注意:

部分源程序给出如下。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  试卷程序:

  参考解读:

  【参考答案】

  【考点分析】

  本题考查:

结构体数组操作。

用循环判断结构查找数组中的最大值。

  【解题思路】

  该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值。

第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。

  【解题宝典】’

  对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。

如何对结构体数组进行类似操作呢?

  掌握以下语句:

  2[单选题]下列定义数组的语句中,正确的是()。

  参考答案:

A

  参考解读:

数组说明的一般形式为:

类型说明符数组名[常量表达式]。

B选项中N是变量,不能用变量定义数组长度。

c选项中数组长度是非法的一串数字。

定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。

  3[单选题]若有以下程序段

  则以下选项中值为6的表达式是

  A.P->nB.(*p).nC.p->n++D.++(P->n)

  参考答案:

D

  参考解读:

本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中P->n为5,++(P->11)为6,所以D选项正确。

  4[单选题]有以下程序

  程序运行后的输出结果是

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

  参考答案:

B

  参考解读:

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

  5[单选题]有以下程序

  程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是

  A.a.aB.*P.aC.P->aD.(*p).a

  参考答案:

B

  参考解读:

本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,P为指针,*P为结构体变量,那么*P.a可以表示为结构体中成员a的数据。

  6[单选题]若有定义语句:

doublea,*P=&a。

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

  A.定义语句中的*号是-个间址运算符

  B.定义语句中的木号是-个说明符

  C.定义语句中的P只能存放double类型变量的地址

  D.定义语句中,P=&a把变量a的地址作为初值赋给指针变量P

  参考答案:

A

  参考解读:

在变量定义doublea,*P:

&a。

中,}号是一个指针运算符,而非间址运算符,所以A错误。

  7[单选题]设有以下程序段:

  以下叙述正确的是()。

  A.只有变量c的定义是合法的

  B.只有变量a,b,c的定义是完全合法的

  C.所有变量的定义都是完全合法的

  D.只有变量a,b的定义是完全合法的

  参考答案:

D

  参考解读:

float“8]={1.0,2.0}。

定义了一个包含8个float型元素的数组,并初始化了数组的前2项,其他项是随机数。

intb[1]={0},定义了只有一个int型元素的数组,并初始化为0。

charc[]={¨A”,”B¨}。

定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。

chard=…1’。

定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。

因此只有a,b定义和初始化正确。

故答案为D选项。

  8[单选题]有以下程序:

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

  A.1002,ZhangDa,1202.0

  B.1002,ChangRon9,1202.0

  C.1001,ChangRon9,1098.0

  D.1001,ZhangDa,1098.0

  参考答案:

D

  参考解读:

本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。

  9[单选题]有以下程序:

  则以下函数调用语句错误的是()。

  A.k:

f(a,B.。

B.k:

add(a,B.。

C.k=(*f)(a,B.。

D.k=*(a,B.。

  参考答案:

D

  参考解读:

D选项中+f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

  10[单选题]程序调试的任务是()。

  A.设计测试用例

  B.验证程序的正确性

  C.发现程序中的错误

  D.诊断和改正程序中的错误

  参考答案:

D

  参考解读:

程序调试的任务是诊断和改正程序中的错误。

1[填空题]下列给定程序中,函数fun的功能是进行数字字符转换。

  若形参ch中是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’。

若是其他字符则保持不变。

并将转换后的结果作为函数值返回。

  请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

  注意:

部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!

  试卷程序:

  参考解读:

  【参考答案】

  

(1)char

(2)ch<=~9(3)’O’

  【考点分析】

  本题考查:

函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别。

if语句条件表达式,本题的条件表达式是判断数字字符。

函数返回值,其一般形式为“return表达式。

”。

  【解题思路】

  填空l:

函数定义时,类型标识符指明了函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入char。

  填空2:

通过if条件语句判断字符串中字符是否为数字字符,即大于等于字符‘0’,同时小于等于字符‘9’。

  填空3:

return语句完成函数返伺操作,要实现字符转换,完整语句为return~9一(ch一~0)。

  【解题宝典】.

  有参函数定义,其一般形式为:

  类型标识符函数名(形式参数列表)

  {声明部分

  语句

  }

  在形参列表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号分隔。

在进行函数调用时,主调函数将赋予这些形式参数实际的值。

形参也是变量,必须在形参列表中给出类型说明。

  2[单选题]以下叙述中错误的是()。

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

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

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

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

  参考答案:

B

  参考解读:

本题考查字符处理函数和文件操作函数。

属于基础知识,其中B选项9etchar函数是用于从终端读人一个字符。

  3[单选题]以下选项中合法的实型常量是(  )

  A.0B.3.13e-2.1C..914D.2.0*10

  参考答案:

C

  参考解读:

A选项为整型数据。

B选项中e后面必须为整数。

D选项是表达式,不是常量,所以选择C。

  4[单选题]有以下程序段:

  以下选项中不能正确引用字符串的是()。

  A.3B.p[3]C.str[2]D.*P

  参考答案:

A

  参考解读:

tp[3]一p[3][0]是一个字符,不是字符串,选项A错误。

P[3]和str[2]和+P分别代表了ddd,eec,flaa。

答案为A选项。

  5[单选题]有以下程序(strcpy为字符串复制函数,streat为字符串连接函数)

  程序运行后的输出结果是

  A.a12xyzB.bc2yzC.a2yzD.12yz

  参考答案:

C

  参考解读:

本题考查字符串处理函数strcpy和streat,执行完strcpy(a+1,b+2)。

后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。

  6[单选题]在软件开发中,需求分析阶段产生的主要文档是()。

  A.软件集成测试计划

  B.软件详细设计说明书

  C.用户手册。

  D.软件需求规格说明书

  参考答案:

D

  参考解读:

需求分析阶段的工作可以概括为:

需求获取、需求分析、编写需求规格说明书、需求评审四个方面。

所以选择D。

  7[单选题]若有以下程序

  则程序的输出结果是

  A.1,2,3,4B.2,1,2,-1C.5,1,2,-1D.2,2,2,4

  参考答案:

  参考解读:

第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。

执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。

判断第二个if条件为逻辑与表达式。

只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。

所以结果为选项D。

  8[单选题]下面选项中的程序段,没有编译错误的是

  参考答案:

A

  参考解读:

本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark[],必须指定长度或者直接初始化。

  9[单选题]以下选项中关于程序模块化的叙述错误的是()。

  A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序

  B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块

  C.把程序分成若干相对独立的模块,可便于编码和调试

  D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序

  参考答案:

A

  参考解读:

程序模块化思想中,可以采用自顶向下、逐步细化的方法。

所以选项A中“自底向上”的说法是错误的。

  10[单选题]已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。

以下不能将变量C中的大写字母转换为对应小写字母的语句是()。

  A.C=(。

A’+C.%26一"a"

  B.c=c+32

  C.c=c一"A"+"a"

  D.c=(c一’A")%26+-a"

  参考答案:

A

  参考解读:

根据题意可知,小写字母比与之对应的大写字母的ASCⅡ码大32。

A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义,所以选择A选项。

  1[单选题]以下叙述中正确的是

  A.如果函数带有参数,就不能调用自己

  B.所有函数均不能接受函数名作为实参传入

  C.函数体中的语句不能出现对自己的调用

  D.函数名代表该函数的入口地址

  参考答案:

B

  参考解读:

本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传人,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。

  2[单选题]有以下程序:

  程序运行时,输入的值在哪个范围才会有输出结果()。

  A.小于3的整数

  B.不等于10的整数

  C.大于3或等于10的整数

  D.大于3且不等10的整数

  参考答案:

D

  参考解读:

根据代码可知如果x的值小于等于3,执行空语句,不进行打印操作。

如果x的值大于3,再判断x的值是否不等于l0,如果不等于l0就打印X的值,所以选择D选项。

  3[单选题]设有以下语句:

  inta=1,b=2,c。

c=a^(b<<2)。

执行后,c的值为()。

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

  参考答案:

B

  参考解读:

b为2,二进制为00000010,执行左移两位操作后为000011300,然后与a00000001做异或操作结果为00001001.即十进制的9。

  4[单选题]以下叙述中正确的是

  A.循环发生嵌套时,最多只能两层

  B.三种循环for,while,do-while可以互相嵌套

  C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

  D.for语句的圆括号中的表达式不能都省略掉

  参考答案:

B

  参考解读:

  A选项中,循环发生嵌套时,没有规定层数。

C选项中,循环嵌套时,书写代码时没有要求必须缩进。

D选项中,for语句的圆括号中的表达式都可以省掉。

因此B选项正确。

  5[单选题]以下程序依次把从终端输入的字符存放到f文件中,用#作为结束输入的标志,则在横线处应填入的选项是

  A.ch,”fname

  ”B.fp,chB.chC.ch,fp

  参考答案:

D

  参考解读:

本题考查fpute函数,该函数将字符ch写到文件指针fp所指向的文件的当前写指针的位置。

函数格式:

intfputc(intn,File}fp),因此答案为D选项。

  6[单选题]有以下程序:

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

  参考答案:

A

  参考解读:

结构体s中n代表数组的实际长度,a是个定长数组。

函数f()对结构体s内的a数组元素使用冒泡法进行递增排序。

因此最终数组的元素是一个递增序列。

故答案为A选项。

  7[单选题]有如下的说明和定义

  则以下叙述中正确的是

  A.(P++)->a与P++->a都是合语法的表达式,但二者不等价

  B.语句++P->a。

的效果是使P增1

  C.语句++P->a。

的效果是使成员a增1

  D.语句´P->s++。

等价于(*P)->s++。

  参考答案:

C

  参考解读:

本题考查结构体变量的引用,++P->a的效果是使成员a增1,P++->a不合法,*P->s++为字符e,与(*P)->s++不等价。

  8[单选题]有以下程序:

  执行时输入:

6<回车>,则输出结果是()。

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

  参考答案:

C

  参考解读:

后置自增运算:

k++表示先运算,后自如。

if(t++<6)p血ff(“%d\n”,t)。

elseprinff(“%d、n”,t)。

t的初值为6,t++<6,则条件为假,执行prinff(“%d、n”,t一),此时t=7,打印t值为k之后进行自减操作t=6。

因此打印的结果为7。

故答案为C选项。

  9[单选题]有以下程序

  程序运行后的输出结果是

  A.46B.44C.22D.24

  参考答案:

D

  参考解读:

本题主要考查指针与数组。

首先通过P=a使P指向数组的第1个元素,所以输出2。

在输出2以后,由于P++,即P就指向数组的第2个元素,**k就是取出P所指向元素的值,而P指向的是数组的第2个元素,即输出4。

因此D选项正确。

  10[单选题]在一个C源程序文件中所定义的全局变量,其作用域为()。

  A.由具体定义位置和extem说明来决定范围

  B.所在程序的全部范围

  C.所在函数的全部范围

  D.所在文件的全部范围

  参考答案:

A

参考解读:

全局变量的作用域是从声明处到文件的结束。

所以选择A)。

  1[填空题]给定程序中,函数fun的功能是:

计算形参X所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至X所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

  例如,有l0个正数:

46、30、32、40、6、17、45、15、48、26,平均值为30.500000。

  移动后的输出为:

46、32、40A5、48、30、6、17、15、26。

  请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

  注意:

部分源程序在文件BLANKl.C中。

  不得增行或删行,也不得更改程序的结构!

  试卷程序:

  参考解读:

  

(1)sdN

(2)j++(3)一1

  【解题思路】

  填空l:

由原程序可知,av代表的是平均值,而平均值的求法是所有数的总和除以数的个数,因而本空应该填写s/N。

  填空2:

y数组代表暂时存放X数组,if(X[i]>av)表达的是当x数组中的数大于平均值时,应该把这些大于平均值的数放在y数组的前半部分,因而此空应该填y[j++]。

  填空3:

此空表明当x[i]不等于什么时,X[i]中的数要赋值给Y数组,由题意可知此空只能填写一1。

  2[单选题]有以下程序:

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

  A.10,One*Dream!

B.9,One*Dream!

C.9,One*WorldD.10,One*World

  参考答案:

A

  参考解读:

P是指向二维字符数组第二行One+Dream!

的数组指针,所以长度是l0,打印输出的也是该字符串。

  3[简答题]学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:

把分数最高的学生数据放在b所指的数组中。

注意:

分数最高的学生可能不止一个,函数返回分数最高的学生人数。

  注意:

部分源程序给出如下。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  试卷程序:

  参考解读:

  【考点分析】

  本题考查:

结构体数组操作。

用循环判断结构查找数组中的最大值。

  【解题思路】

  该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值。

第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。

  【解题宝典】’

  对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。

如何对结构体数组进行类似操作呢?

  掌握以下语句:

  4[单选题]有以下程序:

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

  A.7B.10C.8D.9

  参考答案:

D

  参考解读:

调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c))。

即调用f(3,6)函数返回9。

  5[单选题]有以下程序 

  程序的输出结果是

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

  参考答案:

D

参考解读:

考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun

(1))))=15。

所以答案为D选项。

  1[单选题]表达式:

(im)((double)9/2)一9%2的值是()。

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

  参考答案:

B

  参考解读:

先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一l的值为3,所以选择B选项。

  2[单选题]有以下程序:

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

  A.LoB.30C.0D.64

  参考答案:

D

  参考解读:

本题目中静态局部变量x,在静态存储区内分配存储单元。

在程序整个运行期间都不释放。

所以第一次循环s的值为2,第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以S的值为64.

  3[单选题]有以下程序:

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

  A.8B.2C.4D.1

  参考答案:

A

  参考解读:

第一次调用m=f(f(f

(1))),第二次为m=f(f

(2)),第三次为m=f(4),即返回值为8。

  4[单选题]若变量已正确定义,以下选项中非法的表达式是

  A.a!

=4||'b'B.'a'=1/2*(x=Y=20,x*3)C.'a'%4

  13)'A'+32

  参考答案:

B

  参考解读:

A选项中'a'即表示a为字符常量,再给'a'赋值1/2*(x=Y=20,x*3),是不正确的。

因此B选项正确。

  5[单选题]若有以下程序

  则程序的输出结果是

  A.0,3,2,2,1,0,3,1,

  B.1,4,3,3,2,1,4,2,

  C.5,6,5,6,5,6,5,6,

  D.6,7,6,7,6,7,6,7,

  参考答案:

A

参考解读:

本题考查二维字符数组的运用,题目中首先定义了一个一维字符数组,从三层for循环可以看出要找的是w数组中每个字符在二维数组中的位置,比如d字母,在a数组中就是0,3其他字符类似,所以本题答案为A。

  1[单选题]下面关于“EOF”的叙述,正确的是

  A.EOF的值等于0

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

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

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

  参考答案:

B

  参考解读:

在c语言中,或更精确地说成c标准函数库中表示文件结束符(endoffile)。

在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。

在文本文件中,数据都是以字符的ASCII代码值的形式存放。

我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。

  2[单选题]若有定义:

inta,h。

通过语句:

scanf(”%d。

%d”,&a,&B.。

,能把整数3赋给变量a,5赋给变量b的输入数据是()。

  A.35B.3,5C.3。

5D.35

  参考答案:

C

  参考解读:

输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“。

”。

  3[单选题]有以下程序:

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

  A.02356B.0235C.235D.2356

  参考答案:

C

  参考解读:

k的值为5,逐个对caBe语句进行匹配,均不匹配,执行default下的语句n=0。

k一一。

再执行case2:

ca804:

后面的语句n+=2。

k一一。

执行break语句跳出switch判断,打印n的值,即2。

经过第一次循环后,k的值为3,然后进行k>0&&ll<5条件判断为真。

第二次执行循环体,执行case3:

后面的语句n+=1。

k一一。

再执行break语句跳出循环,此时打印n的值3,此时k的值为2。

第三次执行循环体k的值为2,满足条件,执行case2:

case4:

后面的语句n+=2。

k一一。

执行break语句跳出循环体。

打印n的值5。

此时n不满足条件k>0&&n<5,所以结束循环。

整个程序的打印结果为235。

  4[单选题]有以下程序:

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

  A.9B.8C.7D.10

  参考答案:

A

  参考解读:

题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。

所以第-次调用函数执行n+=a++。

时a先与n相加在再进行自增。

n的值为4,a的值为2,且a变量执行完后空间没有释放。

再执行s:

+f(a)时,s的值为4,调用f(a)函数时n的返回值为n=3+2=5,且此时a的值为3了。

所以s的值为9。

  5[单选题]若有以下程序

  则程序的输出结果是

  A.abedB.ABEJC.abejD.ABCD

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

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1