C语言章节习题及答案Word文档下载推荐.docx
《C语言章节习题及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言章节习题及答案Word文档下载推荐.docx(124页珍藏版)》请在冰豆网上搜索。
第13章编译预处理和动态存储分配
主要理解宏替换,特别是带参的宏
通过课后习题程序理解宏替换的作用
第14章结构体、共用体和用户定义类型
主要掌握结构体类型的说明、结构体类型的变量/数组/指针变量的定义、给结构体变量/数组赋值、引用结构体变量中的数据等内容;
链表的操作
通过例题及习题中的代码来理解及记忆
第15章位运算
理解5个位运算,按位取反、左移、右移、按位与、按位或、按位异或
第16章文件
主要掌握文件指针、文件的打开和关闭;
文件输入输出函数,如getc(fgetc)、putc(fputc)、feof、fscanf、fprintf、fgets、fputs、fread、fwrite、fseek、ftell、rewind等
二级C语言章节习题及答案
(1)
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
2.1以下叙述中正确的是
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
正确答案:
C
2.2以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
A
2.3以下说法正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
2.4C语言规定,在一个源程序中,main函数的位置
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
2.5以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
D
2.6下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言的函数可以嵌套调用
2.7以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
2.8以下说法错误的是
A)一个算法应包含有限个步骤
B)在计算机上实现的算法是用来处理数据对象的
C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
D)算法的目的是为了求解
2.9算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入
B)高效性
C)有穷性
D)确定性
B
2.10下列关于C语言的说法不正确的是
A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能
B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号
C)注释可以出现在程序中任意合适的地方
D)命令行后面不能加分号,命令行不是C语言的语句
2.11以下说法错误的是
A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B)计算机只能处理由0和1的代码构成的二进制指令或数据
C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D)每一种高级语言都有它对应的编译程序
2.12C语言中用于结构化程序设计的3种基本结构是
A)顺序结构、选择结构、循环结构
B)if,switch,break
C)for,while,do-while
D)if,for,continue
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
2.13用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
源程序
2.14C语言程序的注释可以出现在程序中的任何地方,一个注释以【2】作为开始和结束。
/**/
第3章数据类型运算符与表达式
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
3.1C语言中最简单的数据类型包括
A)整型、实型、逻辑型
B)整型、实型、字符型
C)整型、字符型、逻辑型
D)字符型、实型、逻辑型
3.2C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字和下划线中任一字符
3.3下列可用于C语言用户标识符的一组是
A)void,define,WORD
B)a3_b3,_123,Car
C)For,-abc,IFCase
D)2a,DO,sizeof
3.4下面四个选项中,均是不正确的8进制数或16进制数的选项是
A)0160x8f018
B)0abc0170xa
C)010-0x110x16
D)0a127ff-123
3.5下列数据中,不合法的C语言实型数据的是
A)0.123
B)123e3
C)2.1e3.5
D)789.0
3.6在16位C编译系统上,若定义longa;
,则能给a赋40000的正确语句是
A)a=20000+20000;
B)a=4000*10;
C)a=30000+10000;
D)a=4000L*10L;
3.7若有说明语句:
charc='
\72'
;
则变量c
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
3.8有字符串如下,"
\n\\\407as1\"
\xabc"
则字符串的长度为
A)6
B)7
C)8
D)9
3.9C语言中运算对象必须是整型的运算符是
A)%=
B)/
C)=
D)<
=
3.10若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:
=b+1
B)a=b=c+2
C)int18.5%3
D)a=a+7=c+b
3.11若变量a,i已正确定义,且i已正确赋值,合法的语句是
A)a==1
B)++i;
C)a=a++=5;
D)a=int(i);
3.12若有定义:
inta=7;
floatx=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是
A)2.500000
B)2.750000
C)3.500000
D)0.000000
3.13若有运算符<
<
sizeof,^,&
=,则它们按优先级由高至低的正确排列次序是
A)sizeof,&
=,<
^
B)sizeof,<
^,&
C)^,<
sizeof,&
=,sizeof
3.14以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
3.15已知inti,a;
执行语句i=(a=3,a++,--a,a+4,a+5,++a);
后,变量i的值为
A)2
B)3
C)4
D)5
3.16设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为
A)int
B)float
C)double
D)不确定
3.17在C语言中,char型数据在内存中的存储形式是
A)补码
B)反码
C)原码
D)ASCII码
3.18字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
3.19不能进行++和--运算的数据类型为
A)指针
B)整型
C)长整型
D)常量
3.20设有intx=11;
则表达式(x++*1/3)的值是
A)3
B)4
C)11
D)12
3.21以下程序的输出结果是
main()
{inta=21,b=11;
printf("
%d\n"
--a+b,--b+a);
}
A)30
B)31
C)32
D)33
3.22假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为
A)17
B)16
C)15
D)14
3.23已知inta=6;
则执行a+=a-=a*a;
语句后,a的值为
A)36
B)0
C)-24
D)-60
3.24设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0
3.25sizeof(float)是
A)一个双精度型表达式
B)一个整型表达式
C)一种函数调用
D)一个不合法的表达式
3.26在C语言中,int,char和short三种类型数据在内存中所占用的字节数
A)由用户自己定义
B)均为2个字节
C)是任意的
D)由所用机器的机器字长决定
3.27以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷
y÷
z的C语言表达式是
A)x/y*z
B)x*(1/(y*z))
C)x/y*1/z
D)x/y/z
3.28下列关于复合语句和空语句的说法错误的是
A)复合语句是由“{”开头,由“}”结尾的
B)复合语句在语法上视为一条语句
C)复合语句内,可以有执行语句,不可以有定义语句部分
D)C程序中的所有语句都必须由一个分号作为结束
3.29下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B)′\0′作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
D)在C语言中,字符串常量隐含处理成以′\0′结尾
正确答案:
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
3.30以下程序的输出结果是【1】。
inta=1234;
printf("
-\n"
,a);
1234
3.31在计算机中,字符的比较是对它们的【2】进行比较。
ASCII码
3.32在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【3】个字节。
2
3.33在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;
一个double型数据在内存中所占的字节数为【4】。
8
3.34以下程序段的输出结果是【5】。
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
%d"
a);
28
3.35以下程序段的输出结果是【6】。
intx=17,y=26;
y/=(x%=6));
5
3.36下列y的值是【7】。
inty;
y=sizeof(2.25*4);
3.37以下程序的输出结果是【8】。
{inti=010,j=10;
pirntf("
%d,%d\n"
i,j);
8,10
3.38已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为【9】。
f
3.39如下语句printf("
%c\n"
′B′+40);
在执行后的输出结果是【10】。
j
3.40定义inta=5,b=20;
若执行语句printf("
++a*--b/5);
后,输出的结果为【11】。
9
第4章顺序程序设计
4.1若变量已正确说明为float型,要通过语句scanf("
%f%f%f"
&
a,&
b,&
c);
给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是
A)10<
回车>
22<
33<
B)10.0,22.0,33.0<
C)10.0<
22.033.0<
D)1022<
4.2现有以下程序段
#include
{inta,b,c;
scanf("
a=%*d%d,b=%d%*d,c=%d"
a=%d,b=%d,c=%d\n"
a,b,c);
}
若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是
A)a=10]20,b=20]30,c=40
B)20,30,40
C)a=20,b=30,c=40
D)a=10]20,b=30]20,c=40
[注]:
“]”表示空格,表示回车
4.3x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A)INPUTx、y、z;
B)scanf("
%d%d%d"
x,&
y,&
z);
C)scanf("
x,y,z);
D)read("
4.4已有定义inta=-2;
和输出语句printf("
%8lx"
以下正确的叙述是
A)整型变量的输出形式只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
4.5下列程序段的输出结果是:
floatb=123.456;
doublec=12345.54321;
-,%2.1f,%2.1f"
A)无输出
B)12,123.5,12345.5
C)1234,123.5,12345.5
D)1234,123.4,1234.5
4.6执行下列程序时输入:
123<
空格>
456<
789<
输出结果是
{chars[100];
intc,i;
%c"
scanf("
i);
%s"
s);
%c,%d,%s\n"
c,i,s);
}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
4.7若已定义:
inta=25,b=14,c=19;
以下三目运算符(?
:
)所构成语句的执行后
a<
=25&
&
b--<
=2&
c?
printf("
***a=%d,b=%d,c=%d\n"
a,b,c):
###a=%d,b=%d,c=%d\n"
,a,b,c);
程序输出的结果是
A)***a=25,b=13,c=19
B)***a=26,b=14,c=19
C)###a=25,b=13,c=1