c语言考试题及答案2018(2018年9月计算机二级C语言程序设计章节习题4)

本文目录
- 2018年9月计算机二级C语言程序设计章节习题4
- 2018年计算机二级C语言考前冲刺题(1)
- 2018年9月计算机二级C语言考点解析:循环语句和循环函数
- 2018年计算机二级C语言考前冲刺题(2)
- 2018年计算机二级考试C语言考点:循环结构
2018年9月计算机二级C语言程序设计章节习题4
2018年9月计算机二级C语言程序设计章节习题4
单选题
1.下列关于面向对象概念的描述中,错误的是( C )。
A.面向对象方法比面向过程方法更加先进
B.面向对象方法中使用了一些面向过程方法中没有的概念
C.面向对象方法替代了结构化程序设计方法
D.面向对象程序设计方法要使用面向对象的程序设计语言
2.下列各种高级语言中,不是面向对象的程序设计语言是( D )。
A.C++ B.Java
C.VB D.C
3.下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型
B.类是创建对象的模板
C.类是抽象数据类型的实现
D.类是具有共同行为的若干对象的统一描述体
4.下列关于对象的描述中,错误的是( C )。
A.对象是类的一个实例
B.对象是属性和行为的封装体
C.对象就是C语言中的结构变量
D.对象是现实世界中客观存在的某种实体
5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是( C )。
A.提取符是对右移运算符(》》)重载得到的
B.插入符是对左移运算符(《《)重载得到的
C.提取符和插入符都是双目运算符,它们要求有两个操作数
D.提取符和插入符在输入/输出语句中不可以连用
填空题
1.C++语言具有面向对象方法中要求的三大特性:封装性 、 继承性 和 多态性 。
2.C++程序中,有且仅有一个主 函数。
3.C++程序是由类 和 函数 组成的。
4.C++源程序的扩展名是 cpp 。
5.使用插入符进行标准输出文件输出时,使用的输出流对象名是 cout 。
判断题
×1.C++语言和C语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C语言是C++语言的一个子集。C++语言继承了C语言。
×4.C++语言程序与C语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比C语言对数据类型要求更加严格了。
√7.C++语言对C语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。
√10.C++语言程序的实现也要经过我、编译连接和运行3个步骤。
2018年计算机二级C语言考前冲刺题(1)
11 有以下程序:
程序运行时输入:-11-220《回车》,则输出结果是( )。
A.1,1
B.1,0
C.3,-3
D.3,0
参考答案:C
参考解析:分析程序结构,在do …while循环中,嵌套一个switch语句,switch语句中两个case语句分别执行break和continue,其中break语句是跳出switch语句,接着执行do…while循环体剩下的部分;而continue语句是直接进入do…while的下一个循环,由此可知每次循环,当t=0时,执行break语句,接着将z值累加x;当t=1时,执行continue语句,将y值累加x,所以当x输入-1、-2、0时,t=0,z值累加为-3;当x输入1、2时.t=1,y值累加为3,输出y、z的值分别为3、-3,故答案选C。
12 以下选项中叙述错误的是( )。
A.C程序函数中定义的自动变量,系统不自动赋确定的初值
B.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内
C.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值
D.C程序函数的形参不可以说明为static型变量
参考答案:C
参考解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函数内的静态变量,只在第一次调用时候赋值,以后调用保留上次值;D选项描述也正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。因此C选项正确。
13 程序中若有以下的说明定义和语句:
则不能给变量t的s成员赋整数99,给num成员赋空串的语句组是( )。
参考答案:A
参考解析:结构体变量使用 “.”运算符引用结构体成员变量,结构体指针使用“-》”运算符引用结构体成员变量,main函数中声明结构体STR变量t,和结构体STR指针*p,并将t的地址赋给p,所以使用P访问成员变量时,使用“-》”运算符;使用* P访问成员变量时,使用“.”运算符。另外,由于成员变量num是字符数组,所以不能直接进行赋值,若要对num赋空字符串值,可以把num中第一个元素赋值为0或‘\0’,或者使用strcpy复制函数将空字符串“”复制到num中,故选项B、C、D正确,选项A错误,因此答案为A。
14 以下关于循环语句的叙述中正确的是( )。
A.do…while语句的循环体至少执行一次
B.while语句的循环体至少执行一次
C.for语句的循环体至少执行一次
D.上述A、B、c说法均正确
参考答案:A
参考解析:while(表达式)当表达式为false时,循环体一次都不执行,故选项B、D错误;for(表达式1;表达式2;表达式3)语句,当表达式2为false时,循环体一次都不执行,故选项C错误;do-while语句循环体至少执行一次,故答案选A。
15 以下叙述中错误的是( )。
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有return语句,则应当定义函数为void类型
D.函数的return语句中可以没有表达式
参考答案:B
参考解析:本题重点考察函数返回值的相关知识,函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此B选项正确。
16 以下叙述中正确的是( )。
A.C语句必须在一行内写完
B.C程序中的每一行只能写一条语句
C.C语言程序中的注释必须与语句写在同一行
D.简单C语句必须以分号结束
参考答案:D
参考解析:C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C选项错误。
17 以下不合法的数值常量是( )。
A.8.0E0.5
B.1e1
C.011
D.0xabed
参考答案:A
参考解析:A选项中E后面的指数必须为整型数据,所以A错误。C选项中011表示的是八进制常量.Oxabcd表示的是十六进制常量。
18 有以下程序:
程序计算的是( )。 .
A.s=1!+2!+3!+4!+5!
B.s=1+2+3+4+5
C.s=1$2*3*4*5
D.s=1!*2!*3!*4!*5!
参考答案:A
参考解析:函数fun()中的变量f是静态变量,所以只初始化一次,之后每次调用fun(),f的初值就是上一次fun()结束时的值,对于fun()函数,当传人n=1时,f=1,返回值为1;当传入n=2时,f=1×2=2,返回值为2;当传人13=3时,f=2×3=6,返回值为6;当传人n=4时,f=6×4=24,返回值为24,所以每次调用fun函数时,f变量在上一次fun函数运行结束时保留值的基础上,再与n乘积,并重新赋值给f,所以可以将f理解为记录当前的累乘值,即当main函数中i:1时,f=11=1;当main()函数i=2时,f=2!=2,当main函数中i=3时,f=3!=6……另外main函数中的S记录调用fun函数的返回值之和,所以s=1!+2!+…+i!,由于i最大值为5,所以s=1!+2!+3!+4!+5!,答案为A。
19 下列诜项中.能正确定义数组的语句是( )。
参考答案:D
参考解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。
20 有以下程序:
程序的运行结果是( )。
A.123
B.12300
C.1
D.321
参考答案:A
参考解析:首先使用fopen函数以可写方式打开文件d1.dat,返回文件指针fp,然后在for循环通过fprintf函数调用fp指针,将数组a的3个元素写入文件d1.dat中,最后再写入换行符\n,关闭文件,此时文件中的内容:“123\n”,然后调用fopen函数以只读方式打开d1.dat,返回文件指针fp指向文件的开头,再调用fscanf函数从文件中读入一个整数:123,(遇到第一个非数值字符结束),关闭文件后输出读人的整数n,结果为:123,答案为A。
2018年9月计算机二级C语言考点解析:循环语句和循环函数
2018年9月计算机二级C语言考点解析:循环语句和循环函数
循环语句和循环函数
Turbo C 2.0提供三种基本的循环语句: for语句、while语句和do-while语句。
一、循环语句
(一)、for循环 它的一般形式为:
for(《初始化》;《条件表过式》;《增量》)
语句;
初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。
例如:
for(i=1;i《=10;i++)
语句;
上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i》10时,结束循环。
注意:
(1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。
(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
(3).for循环可以有多层嵌套。
例如:
for(;;) 语句;
for(i=1;;i+=2) 语句;
for(j=5;;) 语句;
这些for循环语句都是正确的。
main()
{
int i,j;
printf(i j\n);
for(i=0;i《2;i++)
for(j=0;j《3;j++)
printf(%d %d\n,i,j);
}
输出结果为:
i j
0 0
0 1
0 2
1 0
1 1
1 2
用for循环求1+2+……+100的和:
main()
{
int sn=0,i;
for(i=1;i《=100;i++)
sn+=i; /*1+2+……+100*/
printf(%d\n,sn);
}
从程序可以看出,使用循环语句可以大大简化代码。
(二)、while循环 它的一般形式为:
while(条件)
语句;
while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。
例如:
#include stdio.h
main()
{
char c;
c=’\0’; /*初始化c*/
while(c!=’\n’) /*回车结束循环*/
c=getche(); /*带回显的从键盘接收字符*/
}
上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c=’\n’,条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。
注意:
(1).在while循环体内也允许空语句。
例如:
while((c=getche())!=’\n’);
这个循环直到键入回车为止。
(2).可以有多层循环嵌套。
(3).语句可以是语句体, 此时必须用{和}括起来。
用while循环求1+2+……+100的和:
main()
{
int sn=0,i=0;
while(++i《=100)
sn+=i; /*求1+2+……+100*/
printf(%d\n,sn);
}
(三)、do--while循环 它的一般格式为:
do
{
语句块;
}
while(条件);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
同样当有许多语句参加循环时,要用{和}把它们括起来。
用do--while循环求1+2+……+100的和:
main()
{
int sn=0,i=1;
do
sn+=i; /*求1+2+……+100*/
while(++i《=100);
printf(%d\n,sn);
}
从上面三个程序看出,使用for,while和do--while求解同样的问题,基本思路都差不多,只是在第一次计算时,注意初值。
2018年计算机二级C语言考前冲刺题(2)
2018年计算机二级C语言考前冲刺题(2)
选择题
1 有以下程序:
程序运行后的输出结果是( )。
A.12 7
B.12 12
C.11 11
D.11 7
参考答案:D
参考解析:本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行f(2)=(2*N+1)=11,执行f(1+1)=(1+1*N+1)=7。选项D正确。
2 有以下程序:
执行后的输出结果是( )。
A.28,0
B.28,1
C.16,0
D.16,-1
参考答案:D
参考解析:分析程序可知,d0语句1…whi1e(语句2),每次循环在语句1中a的值减1,在语句2中判断a的值后,a的值又减1,所以在每次循环体执行完后,b累加的a的值分别为7,5,3,1,a的值分别为6,4,2,0,最后当a为O时,whi1e判断条件为fa1se,此时a的值再减1,为-1,到此循环结束,所以b的值为16,a的值为-1,故答案选D。
3 设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的人栈与退栈操作后,top=50,则栈中的元素个数为( )。
A.1
B.0
C.50
D.49
参考答案:A
参考解析:栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插人一个新元素,退栈运算即取出栈顶元素赋予指定变量。栈为空时,栈顶指针top=0,经过入栈和退栈运算,指针始终指向栈顶元素。初始状态为top=51,当top=50时,则栈中S(50:51)存储着元素,51-50=1.元素个数为l。故本题答案为A选项。
4 程序执行后的输出结果是( )。
A.1
B.2
C.3
D.4
参考答案:C
参考解析:该程序中int * p1=&a,*p2=&b,*P=&c;指定义三个指针变量,并赋值,即使p1指向a;p2指向 b;p指向c。*P=*p1*(*p2);该条语句是给P所指的存1储单元c赋值,就是p1所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a×b,等价于c=1×3=3;因此C选项正确。
5 以下不能使指针s所指存储单元的值增1的选项是( )。
A.(*s)++;
B.*s=*s+1;
C.*s++;
D.++*s;
参考答案:C
参考解析:选项A首先获取s指向的存储单元的值,使用完该值后,将该值自增1,正确;选项B首先获取s指向的存储单元的值,并将该值加1后重新赋给该存储单元,正确;选项D首先获取s指向的存储单元的值,然后将该值自增1,再使用加1后的新值,正确;选项C中,*s++的含义是首先获取s指向的存储单元的值,然后再将指针s向后移动一位,所以答案为C。
6 以下选项中关于程序模块化的叙述错误的是( )。
A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C.把程序分成若干相对独立的模块,可便于编码和调试
D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
参考答案:A
参考解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中“自底向上”的说法是错误的。
7 以下选项中,当X为大于1的奇数时,值为0的表达式是( ):
A.x%2==0
B.x/2
C.x%2!=0
D.x%2==1
参考答案:A
参考解析:算术运算符的优先级高于关系运算符的优先级,所以当X为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。
8 若有定义语句:
int a;
则以下语句中正确的是( )。
A.p=a;
B.p=8;
C.p;
D.p=&a;
参考答案:C
参考解析:A选项错误,因为p是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为p是int*,&a是int***,类型不对。因此C选项正确。
9 以下不合法的字符常量是( )。
A.’\\’
B.’\"’
C.’\018’
D.’\xcc’
参考答案:C
参考解析:转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。
10 设有以下语句:
则下面叙述中正确的是( )。
A.CIN是struct TT类型的变量
B.TT是struct类型的变量
C.可以用TT定义结构体变量
D.可以用CIN定义结构体变量
参考答案:D
参考解析:本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。
2018年计算机二级考试C语言考点:循环结构
2018年计算机二级考试C语言考点:循环结构
【考点1】三种循环结构
while();do- while();for()三种。
a)for 循环当中必须是两个分号,千万不要忘记。
b)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。
c) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错),do-while
循环是至少执行一次循环。
【考点2】break与continue
break 和 continue 的差别
记忆方法:
break:是打破的意思,(破了整个循环)所以看见break 就退出这一层循环。
continue: 是继续的意思,是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。
【考点3】循环的嵌套
就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般只考查两层嵌套,循环嵌套通常是处理二维数组。

本文相关文章:
solidworks动画制作(SolidWorks2018怎么制作爆炸的动画,求详细的介绍)
2026年9月2日 17:30
gjs是什么意思(德国铸造工艺标准EN-GJS-400-18-LT是相当与中国的什么材料啊)
2026年8月31日 17:30
matlab示波器叫什么(matlab2018simulink示波器如读数)
2026年8月28日 05:30
法国总统神预言(克里孟梭法国总统 1.18发生了一个什么事件)
2026年7月24日 11:15
身份证15位转18位升位转换工具(身份证只有15位数字如何变成18位)
2026年7月23日 09:15
墨西哥对瑞典(2018年俄罗斯世界杯小组赛F组:墨西哥-瑞典首发阵容)
2026年7月12日 16:00
嵌入式开发板6818属于armv8架构(工业arm板,像三星6818开发板能做吗)
2026年7月4日 15:00
python中os模块用法chdir(Python之OS模块操作有哪些这18个高频函数是重中之重,你会用)
2026年6月29日 03:30
gec6818用什么版本的linux内核(gec6818开发板如何使用v4l2摄像头获取图片中的文字)
2026年5月9日 01:00
更多文章:
imagebutton设置图片大小(android里面button的背景图片大小怎么能根据button大小缩放)
2026年5月18日 10:45
war selection什么兵厉害(魔兽军团战争什么兵种最强)
2026年8月14日 18:00
html中jquery是什么意思(jquery里的html是什么意思)
2026年7月13日 01:45
如何使用Microsoft技术栈 / 网络技术编程?多用户商城开发用什么技术栈
2026年9月6日 11:45
multiprocessor(ACPI Multipirocessor PC是什么意思)
2026年7月12日 15:15
pycharm安装第三方包(pycharm安装第三方库要检查权限是什么意思)
2025年10月27日 14:30
怎么判断二进制是正数还是负数(二进制数 原码为101011 原码为11001000 怎么看正还是负)
2025年6月9日 13:45
查看apache安装的位置(在默认的安装中,apache把自己的配置文件)
2026年9月4日 12:00
json格式化打印java(java 怎么打印json对象)
2026年2月14日 20:15
安装c语言软件选择什么地区语言好?在ubuntu中有什么c语言开发环境软件(ubuntu安装c语言环境)
2026年3月16日 07:45








