C语言习题及参考答案.docx
- 文档编号:28242128
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:147
- 大小:62.70KB
C语言习题及参考答案.docx
《C语言习题及参考答案.docx》由会员分享,可在线阅读,更多相关《C语言习题及参考答案.docx(147页珍藏版)》请在冰豆网上搜索。
C语言习题及参考答案
教材各章的特点及学习方法
教材各章的特点及学习方法如下表所示。
章序号
特点及学习方法
第1章程序设计基本概念
主要考核知识点:
了解C程序、程序设计、算法、模块化和结构化程序设计等概念
学习方法:
理解+记忆
第2章C程序设计的初步知识
主要考核知识点:
了解C程序格式、标识符、常量、变量以及算术运算符及算术表达式、赋值运算符和赋值表达式、自加/减以及逗号运算符
学习方法:
编写简单C程序加强理解和记忆
第3章顺序结构
主要考核知识点:
printf()、scanf()函数的应用,复合语句及空语句的应用,顺序程序设计思想
学习方法:
理解顺序程序设计思想,设计一些典型的顺序程序,如计算圆的面积、体积,三角形面积等
第4章选择结构
主要考核知识点:
了解关系运算符和关系表达式;掌握if语句的几种格式,switch语句、break语句,掌握条件表达式(唯一的三目运算符)的应用
学习方法:
理解选择结构程序设计思想,设计一些典型的选择结构程序,如比较2、3、4个数大小,按等级输出学生成绩,计算分段函数,解一元二次方程等
第5章循环结构
主要考核知识点:
熟练掌握while、dowhile、for循环语句的格式及应用,
学习方法:
理解循环结构程序设计思想,设计一些典型的循环结构程序,如累加和,阶乘,求π的近似值,Fibonacci数列,求素数,求水仙花数等
第6章字符型数据
主要考核知识点:
使用printf()、scanf()函数进行字符型数据的输入和输出,putchar()、getchar()函数的应用
学习方法:
设计字符处理的各类应用程序,如ASCII字符处理,统计各类字符数,密码译码等
第7章函数
主要考核知识点:
熟练掌握函数的定义和返回值、函数调用、函数申明、函数之间值传递等概念
学习方法:
理解为什么要使用函数,将前面设计的一些程序打包成函数
第8章地址和指针
主要考核知识点:
理解指针、指针变量、指针变量的基类型等基本概念
学习方法:
理解指针的概念,设计一些简单的指针应用程序
第9章数组
主要考核知识点:
熟练掌握一维、二维数组的定义和引用;理解数组和指针结合,数组名或数组元素作函数的参数的应用
学习方法:
理解好一维、二维数组的概念及应用,数组指针和指针数组的应用,熟练冒泡排序、选择排序程序
第10章字符串
主要考核知识点:
掌握字符串及运用指针和数组处理字符串,处理字符串常用的函数,如gets()、puts()、strcpy()、strcmp()、strlen()、strcat()等
学习方法:
理解课本上给出的字符串处理的例题
第11章对函数的进一步讨论
主要考核知识点:
函数的递归调用
学习方法:
理解课本上的计算n!
、求平方根的迭代公式求某数的平方根的递归算法
第12章C语言中用户标识符的作用域和存储类
主要考核知识点:
理解全局变量、局部变量,auto、register、static、extern存储类别的应用
学习方法:
理解+记忆
第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()函数必须放在程序的开始部分
正确答案:
C
2.4C语言规定,在一个源程序中,main函数的位置
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
正确答案:
C
2.5以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
正确答案:
D
2.6下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言的函数可以嵌套调用
正确答案:
D
2.7以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
正确答案:
D
2.8以下说法错误的是
A)一个算法应包含有限个步骤
B)在计算机上实现的算法是用来处理数据对象的
C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现
D)算法的目的是为了求解
正确答案:
C
2.9算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入
B)高效性
C)有穷性
D)确定性
正确答案:
B
2.10下列关于C语言的说法不正确的是
A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能
B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号
C)注释可以出现在程序中任意合适的地方
D)命令行后面不能加分号,命令行不是C语言的语句
正确答案:
B
2.11以下说法错误的是
A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B)计算机只能处理由0和1的代码构成的二进制指令或数据
C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D)每一种高级语言都有它对应的编译程序
正确答案:
C
2.12C语言中用于结构化程序设计的3种基本结构是
A)顺序结构、选择结构、循环结构
B)if,switch,break
C)for,while,do-while
D)if,for,continue
正确答案:
A
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)
2.13用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
正确答案:
源程序
2.14C语言程序的注释可以出现在程序中的任何地方,一个注释以【2】作为开始和结束。
正确答案:
/**/
第3章数据类型运算符与表达式
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
3.1C语言中最简单的数据类型包括
A)整型、实型、逻辑型
B)整型、实型、字符型
C)整型、字符型、逻辑型
D)字符型、实型、逻辑型
正确答案:
B
3.2C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字和下划线中任一字符
正确答案:
C
3.3下列可用于C语言用户标识符的一组是
A)void,define,WORD
B)a3_b3,_123,Car
C)For,-abc,IFCase
D)2a,DO,sizeof
正确答案:
B
3.4下面四个选项中,均是不正确的8进制数或16进制数的选项是
A)0160x8f018
B)0abc0170xa
C)010-0x110x16
D)0a127ff-123
正确答案:
D
3.5下列数据中,不合法的C语言实型数据的是
A)0.123
B)123e3
C)2.1e3.5
D)789.0
正确答案:
C
3.6在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是
A)a=20000+20000;
B)a=4000*10;
C)a=30000+10000;
D)a=4000L*10L;
正确答案:
D
3.7若有说明语句:
charc='\72';则变量c
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
正确答案:
A
3.8有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为
A)6
B)7
C)8
D)9
正确答案:
D
3.9C语言中运算对象必须是整型的运算符是
A)%=
B)/
C)=
D)<=
正确答案:
A
3.10若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:
=b+1
B)a=b=c+2
C)int18.5%3
D)a=a+7=c+b
正确答案:
B
3.11若变量a,i已正确定义,且i已正确赋值,合法的语句是
A)a==1
B)++i;
C)a=a++=5;
D)a=int(i);
正确答案:
B
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
正确答案:
A
3.13若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是
A)sizeof,&=,<<,^
B)sizeof,<<,^,&=
C)^,<<,sizeof,&=
D)<<,^,&=,sizeof
正确答案:
B
3.14以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
正确答案:
D
3.15已知inti,a;执行语句i=(a=3,a++,--a,a+4,a+5,++a);后,变量i的值为
A)2
B)3
C)4
D)5
正确答案:
C
3.16设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为
A)int
B)float
C)double
D)不确定
正确答案:
C
3.17在C语言中,char型数据在内存中的存储形式是
A)补码
B)反码
C)原码
D)ASCII码
正确答案:
D
3.18字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
正确答案:
C
3.19不能进行++和--运算的数据类型为
A)指针
B)整型
C)长整型
D)常量
正确答案:
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
正确答案:
A
3.22假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为
A)17
B)16
C)15
D)14
正确答案:
C
3.23已知inta=6;则执行a+=a-=a*a;语句后,a的值为
A)36
B)0
C)-24
D)-60
正确答案:
D
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
正确答案:
B
3.25sizeof(float)是
A)一个双精度型表达式
B)一个整型表达式
C)一种函数调用
D)一个不合法的表达式
正确答案:
B
3.26在C语言中,int,char和short三种类型数据在内存中所占用的字节数
A)由用户自己定义
B)均为2个字节
C)是任意的
D)由所用机器的机器字长决定
正确答案:
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
正确答案:
A
3.28下列关于复合语句和空语句的说法错误的是
A)复合语句是由“{”开头,由“}”结尾的
B)复合语句在语法上视为一条语句
C)复合语句内,可以有执行语句,不可以有定义语句部分
D)C程序中的所有语句都必须由一个分号作为结束
正确答案:
C
3.29下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B)′\0′作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
D)在C语言中,字符串常量隐含处理成以′\0′结尾
正确答案:
B
正确答案:
A
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)
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);
printf("%d",a);
}
正确答案:
28
3.35以下程序段的输出结果是【6】。
intx=17,y=26;
printf("%d",y/=(x%=6));
正确答案:
5
3.36下列y的值是【7】。
inty;y=sizeof(2.25*4);
正确答案:
8
3.37以下程序的输出结果是【8】。
main()
{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("%d\n",++a*--b/5);后,输出的结果为【11】。
正确答案:
9
第4章顺序程序设计
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。
)
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<回车>33<回车>
正确答案:
B
4.2现有以下程序段
#include
main()
{inta,b,c;
scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);
printf("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
[注]:
“]”表示空格,表示回车
正确答案:
D
4.3x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A)INPUTx、y、z;
B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);
D)read("%d%d%d",&x,&y,&z);
正确答案:
B
4.4已有定义inta=-2;和输出语句printf("%8lx",a);以下正确的叙述是
A)整型变量的输出形式只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
正确答案:
D
4.5下列程序段的输出结果是:
inta=1234;
floatb=123.456;
doublec=12345.54321;
printf("-,%2.1f,%2.1f",a,b,c);
A)无输出
B)12,123.5,12345.5
C)1234,123.5,12345.5
D)1234,123.4,1234.5
正确答案:
C
4.6执行下列程序时输入:
123<空格>456<空格>789<回车>输出结果是
main()
{chars[100];intc,i;
scanf("%c",&c);scanf("%d",&i);scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
正确答案:
D
4.7若已定义:
inta=25,b=14,c=19;以下三目运算符(?
:
)所构成语句的执行后
a<=25&&b--<=2&&c?
printf("***a=%d,b=%d,c=%d\n",a,b,c):
printf("###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=19
D)###a=26,b=14,c=19
正确答案:
C
4.8请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A)5
B)14
C)8
D)输出项不合法,无正常输出
正确答案:
A
4.9下列程序的输出结果是
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A)3
B)3.2
C)0
D)3.07
正确答案:
C
4.10调用gets和puts函数时,必须包含的头文件是
A)stdio.h
B)stdlib.h
C)define
D)以上都不对
正确答案:
A
4.11阅读下面程序段
#include"stdio.h"
main()
{charc;
c=(′z′-′a′)/2+′A′;
putchar(c);}
输出结果为
A)M
B)N
C)O
D)Q
正确答案:
A
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
)
4.12下列程序的输出结果是16.00,请填空。
main()
{inta=9,b=2;
floatx=【1】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 参考答案