C语言基础练习题含答案.docx
- 文档编号:4639008
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:87
- 大小:196.21KB
C语言基础练习题含答案.docx
《C语言基础练习题含答案.docx》由会员分享,可在线阅读,更多相关《C语言基础练习题含答案.docx(87页珍藏版)》请在冰豆网上搜索。
C语言基础练习题含答案
第1-3章C语言基础知识习题2
1选择题2
2填空题7
3答案及部分解析9
第4章选择结构习题11
1选择题11
2填空题17
3答案及部分解析23
第5章循环结构习题26
1选择题26
2填空题:
32
3答案及部分解题分析39
第6章数组习题41
1.单项选择题41
2.填空题44
3.判断题45
5.阅读程序,分析程序的功能。
49
第7章函数习题55
1.单项选择题55
2.填空题56
3.判断题57
4.程序填空题58
5.写出下列程序运行结果59
第8章指针习题67
1选择题67
2填空题69
第1-3章C语言基础知识习题
1选择题
1.以下不是C语言的特点的是()。
A、语言简洁紧凑
B能够编制出功能复杂的程序
CC语言可以直接对硬件操作
2.
3.
4.
5.
6.
7.
8.
DC语言移植性好
列字符序列中,不可用作
A.abc123B.no.1
正确的C语言标识符是(
C语言标识符的是(
)。
123
A._buy_2B.2_buyC.?
_buy
请选出可用作C语言用户标识符的一组标识符(
A.void
define
WORD
列符号中,
A.\\
.a3_b3C
.For
123
-abc
DO
IF
Case
sizeof
ok
.buy?
.2a
不属于转义字符的是
.\0xAA
.\t
.\0
不属于C语言关键字的是()。
A.int
.break
.while
.character
是C语言提供的合法关键字的是
A.Float
.signed
以下不能定义为用户标示符的是(
A.scanf
.Void
.integer
3com
.Char
.int
9.一个C程序是由()
A.
一个主程序和若干子程序组成
B.
一个或多个函数组成
C.
若干过程组成
D.
若干子程序组成
10.C语言程序的基本单位是()
A.程序行B
.语句C.函数D.字符
11.下列说法中,错误的是()。
A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号
B.每个函数都有一个函数头和一个函数体,主函数也不例外
C•主函数只能调用用户函数或系统函数,用户函数可以相互调用
D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数
12.以下说法中正确的是()。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
13.C编译程序是()。
A.C程序的机器语言版本
B.—组机器语言指令
C.将C源程序编译成目标程序
D.由制造厂家提供的一套应用软件
14.以下选项中,合法的用户标识符是()。
A.longB._2abcC.3dmaxD.A.dat
15.以下选项中,合法的实型常数是()。
A.5E2.0B.E-3C.2E0D.1.3E
16.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示
的字符常量'
\101'是()。
A.字符A
B.字符aC
.字符
cD
.非法的常量
17.以下选项中,
合法转义字符的选项是(
)。
A.''
B.'\018'
C.
'xab'
D.'\abc
18.以下选项中,
正确的字符常量是(
)。
A.”F”
B.'''
C
.'W'
D.''
19.以下选项中可作为C语言合法整数的是
.doubleb=1+5e2.5;
.float2_and=1-e-3;
.9*x**n/(2*x-1)
.9*pow(n,x)/(2*x-1)
)o
.3*a*b/c/d
.a*b/d/c*3
20.下列变量定义中合法的是
A.short_a=1-.le-1;B
C.Iongdo=0xfdaL;D
9xn、
21.与数学式子—对应的C语言表达式是()o2x1
A.9*xAn/(2*x-1)B
C.9*pow(x,n)*(1/(2*x-1))D
22.若有代数式3ab,则不正确的c语言表达式是(cd
A.a/c/d*b*3B
C.3*a*b/c*dD
23.已知各变量的类型说明如下:
intm=8,n,a,b;
unsignedlongw=10;
doublex=3.14,y=0.12;
则以下符合C语言语法的表达式是()o
24.以下符合C语言语法的赋值表达式是()
s=A+'6'-'3';后,S中的值为()
26.在C语言中,要求运算数必须是整型的运算符是()
27.若有说明语句:
chars='\72';则变量s()。
A.包含一个字符
B.包含两个字符
C.包含三个字符
D.
说明不合法,s的值不确定
.0.000000
A.2.500000B.2.750000C.3.500000
29•在C语言中,char型数据在内存中的存储形式是()
A.补码B.反码C.原码D.ASCII码
30.设变量x为float类型,m为int类型,则以下能实现将x中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。
A.x=(x*100+0.5)/100.0
B.m=x*100+0.5,x=m/100.0
C.x=x*100+0.5/100.0
D.x=(x/100+0.5)*100.0
31.表达式13/3*sqrt(16.0)/8的数据类型是()。
A.intB.floatC.doubleD.不确定
32.设以下变量均为int类型,则值不等于7的表达式是()。
A.(m=n=6,m+n,m+1)
B.(m=n=6,m+n,n+1)
C.(m=6,m+1,n=6,m+n)
D.(m=6,m+1,n=m,n+1)
33.假设所有变量均为整型,则表达式(x=2,y=5,y++,x+y)的值是()。
A.7B.8C.6D.2
35.已知s是字符型变量,下面正确的赋值语句是
36.若有以下定义,则正确的赋值语句是()
intx,y;
floatz;
37.设x、y均为float型变量,则不正确的赋值语句是(
A.++x;B.x*=y-2;
C.y=(x%3)/10;D.x=y=0;
38•下列语句中符合C语言的赋值语句是()。
.a=7+b++=a+7;
A.a=7+b+c=a+7;
A.整型变量表达式值。
B
.字符串
C.实型变量值。
D
.字符或字符型变量值
40.以下程序段的输出结果是
()。
inta=12345;printf(”
%2dn”
a);
A.12B.34
C.
12345
D
.提示出错、无结果
41.若x和y均定义为int型,z定义为double型,以下不合法的scanf()
函数调用语
句为()。
A.scanf(”%d%lx,%le”,&x,&y,&z);
B.scanf(”%2d*%d%lf”,&x,&y,&z);
C.scanf(”%x%*d%”o,&x,&y);
Doscanf(”%x%o%6.2”,&x,&y,&z);
42.有如下程序段:
intx1,x2;
chary1,y2;
scanf(”%d%c%d%”c,&x1,&y1,&x2,&y2);
若要求x1、x2、y1、y2的值分别为10、20、AB,正确的数据输入是()(注:
代表空格)
A.10A」20B
10-A20B
C.10」A」20」B
10A20」B
43.若变量已正确说明为float类型,要通过语句scanf(”%f%f%f”,&a,&b,&c);给
a赋予10.0,b赋予22.0,c赋予33.0,
不正确的输入形式为(
A.10<回车>
10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车>
1022<回车>
22.033.0<回车>33<回车>
44.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是
()O(注:
「代表空格)
intx1,x2;
chary1,y2;
scanf(”%d%”d,&x1,&x2)
scanf(”%c%”c,&y1,&y2)
A.1020AB
10-20-ABC
AB
45.已有定义inta=-2;和输出语句:
printf(”%8lx”,a);以下正确的叙述是()
A.整型变量的输出格式符只有%d一种
B.%乂是格式符的一种,它可以适用于任何一种类型的数据
C.%乂是格式符
D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
46.有如下程序段,对应正确的数据输入是()。
floatx,y;
scanf(”%f%f”,&x,&y);
printf(”a=%f,b=%f”,x,y);
A.2.04<回车>B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车>D.<回车>
47.有如下程序段,从键盘输入数据的正确形式应是()0(注:
「代表空格)
floatx,y,z;
scanf(“x=%d,y=%d,z=%”d,&a,&y,&z);
C.1,2,3D.x=1」y=2-z=3
48.以下说法正确的是()。
A.输入项可以为一个实型常量,如seanf(”%f',3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如seanf(”a=%d,b=5d);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如
seanf(”%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(”%f',&f);
49.根据定义和数据的输入方式,输入语句的正确形式为:
()。
(注:
「代表空格)
已有定义:
floatx,y;
数据的输入方式:
1.23<回车>
4.5<回车>
A.sean(”%f,%f”,&x,&y);B.seanf(”%f%f”,&x,&y);
C.scanf(”%3.2f-%2.1f”,&x,&y);D.scanf(”%3.2f%2.1f”,&x,&y);
50.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。
#include”stdio.h”
main()
{chars1,s2,s3;
输入语句;
printf(”%c%c%”c,s1,s2,s3);
}
输入形式:
A」B」C<回车>(注:
「代表空格)
输出形式:
A」B
A.scanf(”%c%c%”c,&s1,&s2,&s3);
B.seanf(”%c」%c%c,&s1,&s2,&s3);
C.scanf(”%c,%c,%c”,&s1,&s2,&s3);
D.scanf(”%c%”c,&s1,&s2,&s3);
51.以下程序的执行结果是:
()。
#include”stdio.h”
main()
{intx=2,y=3;
printf(”x=%%d,y=%%dn”,x,y);
}
52•以下程序的输出结果是()。
(注:
「代表空格)
#include
”stdio.h”
main()
{printf(
”nstring1=%15s*”
”programming”
printf(
”\nstring2=%-5s*”,
”boy”);
printf(
”string3=%2s*”,”
girl”);
}
A.string仁programming」」」」*B.string仁」」」」programming*
string2=boy*string2=boy*string3=gi*
string3=gi*
C.string仁programming」」」」*D.string仁」」」」programming*
string2=boy*string3=girl*string2=boy*string3=girl*
53.根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()#include”stdio.h”
main()
{inta;
floatb;
printf(”a+b=%dn”,a+b);
A.a+b=46
.有语法错误
则能给x赋给整数1,给y赋给整数2,给si赋给字符U,给s2赋给字符V,给s3赋给字符W的正确程序段是()o
A.scanf(”x=%dy=%”d,&x,&y);s1=getchar();s2=getchar();s3=getchar();
B.scanf(”%d%”d,&x,&y);s1=getchar();s2=getchar();s3=getchar();
C.scanf(”%d%d%c%c”%,c&x,&y,&s1,&s2,&s3);
D.scanf(”%d%d%c%c%c%c%”c,%&xc,&y,&s1,&s1,&s2,&s2,&s3,&s3);
2填空题
1.C语言的符号集包括、、
2.结构化设计中的三种基本结构是、、
3.C语言源程序文件的后缀是,经过编译后生成文件的后缀是,经过
链接后生成文件的后缀是
4.C语言的关键字都用{大写或小写}。
5.一个函数由两部分组成,它们是、。
6.函数体一般包括、。
7.C语言是通过来进行输入和输出的。
8.以下程序的执行结果。
#include”stdio.h”main()
{shorti=-1,j=1;
printf(”dec:
%d,oct:
%o,hex:
%x,unsigned:
%un”,i,i,i,i);printf(”dec:
%d,oct:
%o,hex:
%x,unsigned:
%un”,j,j,j,j);
}
9.以下程序的执行结果是。
#include”stdio.h”
main()
{chars='b';
printf(”dec:
%d,oct:
%o,hex:
%x,ASCII:
%cn”,s,s,s,s);
}
10•以下程序的执行结果是。
(注:
「代表空格)
#include”stdio.h
main()
{floatpi=3.1415927;
printf(”%f,%.4f,%4.3f,%10.3f”,pi,pi,pi,pi);
printf(”\n%e,%.4e,%4.3e,%10.3e”,pi,pi,pi,pi);
}
11.以下程序的执行结果是:
。
#include”stdio.h”main()
{charc='c'+5;
printf(”c=%cn”,c);
}
12•以下程序输入1」2」3后的执行结果是。
(注:
「代表空格)
#include”stdio.h”main()
{inti,j;
chark;
seanf(”%d%c%d,&i,&k,&j);
printf(”i=%d,k=%c,j=%dn”,i,k,j);
}
0后的执行结果是;若输入为:
98-76-543210后的执行结果是;若输入
为:
987654」3210后的执行结果为:
。
(注:
「代表空格)
#include”stdio.h”
main()
{intx1,x2;
chary1,y2;
scanf(”%2d%3d%3c%c&x1,&x2,&y1,&y2);
printf(”n”,x,y);
14.若x和y均为int型变量,则以下语句的功能是<
x+=y;y=x-y;x-=y;
15.有一输入函数scanf(”%d,k);则不能使float类型变量k得到正确数值的原因是:
。
16.有如下程序段,输入数据:
12345ffl678后,u的值是【1】,v的值是【2】
intu;
floatv;
scanf(“%3d%”f,&u,&v);
3答案及部分解析
一.
选择题答案
1.B
2
.B
3
.A
4.
B
5.B
6.D
7.B
8
.D
9
.B
10.
C
11.A
12.C
13.C
14
.B
15
.C
16.
A
17.A
18.C
19.C
20
.A
21
.C
22.
C
23.A
24.B
25.A
26
.D
27
.A
28.
A
29.D
30.B
31.C
32
.C
33
.B
34.
B
35.C
36.C
37.C
38
.D
39
.D
40.
C
41.D
42.A
43.B
44
.D
45
.D
46.
A
47.B
48.D
49.B
50
.A
51
.D
52.
D
53.A
54.D
55.D
14.解析:
C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必
须为字母或下划线。
而且不能与C语言规定的关键字同名。
关键字如:
auto,
break,case,char,const,continue,default,do,double,else,entry,extern,for,float,goto,if,int,int,long,register,return,short,
signed,sizeof,static,struct,unsigned,while,switch,typedef,void,volatile,unior。
这些关键字先不必硬背下来,随着后续的学习,你将发现它们都是一些数据的类型、语句等,自然会随着学习的深入,而记下来。
15•解析:
用指数形式表示一个实型常数时,E或e之前必须有数字,且E后面指数必须
为整数。
16.解析:
'\101'为转义字符,相对应一个ASCII码字符。
(101)8=(65)10=A.
17.解析:
转义字符的特征是以“”开头,其后跟一些字符,如\n,\t,',\\,\},”,
\b,\f等代表一些特殊的含义,而后如跟数字,可以为八进制或者十六进制,将其转换为对应的ASCII码值,就可以得出对应的字符。
“”后跟八进制的写法:
\Onn,或者\nn,表示“\0”或者“”后只能跟1或3位07之间的数
字;“”后跟十六进制的写法:
\xnn,或者\nn,表示“\x”或者“”后只能跟1或2位0――9及a――f(A――F)之间的字符。
选项B的错误在于8不是八进制;而选项C的错误在于没有“”;选项D的错误在于超长(多了一位)。
21•解析:
B的错误在于赋值语句的左侧只能为一个简单变量,如:
n=3*(n=18);C的错误
在于%!
算符只能适用于整型数据,D的错误在于作类型转换时,应将类型加上括号,即为:
y=(float)m
31.解析:
逗号表达式的最终结果为最右端的表达式(即x+y)的值,其运算顺序是从左
自右的。
第三个表达式y++,其隐含有两步操作:
先取y的原值,再执行y=y+1运算;而本题中,虽然没有将y赋给某个变量(取其原值),但还是一定会执行加运算的。
因而,经过第三个表达式,y已经自加为6,故x+y的值为8,相对应得表达式最终结果为8。
若本题改为:
(x=2,y=5,z=y++,x+z),则其结果应为7。
二.填空题答案
1.答案:
英文字母、数字、一些有特定含义的标点符号
2.答案:
顺序结构、选择结构、循环结构
3.答案:
C,OBJ,EXE
4.答案:
小写
5.答案:
函数说明部分和函数体
6.答案:
变量定义部分和执行部分
7.答案:
输入和输出函数
8.答案:
dec:
-1,oct:
177777,hex:
ffff,unsigned:
65535
dec:
1,oct:
1,hex:
1,unsigned:
1
9.答案:
dec:
98,oct:
142,hex:
62,ASCII:
b
10.答案:
3.141593,3.1416,3.142,-----3.142
3.141593e+00,3.1416e+00,3.142e+00,--3.142e+00
(注:
由于c编译系统不同,我们上机使用的机器,其第二个printf语句实际
结果为:
3.14159e+00,3.142e+00,3.14e+00,--3.14e+00,即:
小数点后取
5位。
)
11.答案:
c=h12•答案:
i=1,k=」,j=2
13.答案:
第一种情况的执行结果:
x1=98,x2=765,y1=4,y2=1
第二种情况的执行结果:
x仁98,x2=76,y仁-,y2=3
第三种情况的执行结果:
x1=98,x2=765,y1=4,y2=2
14.答案:
交换x和y的值
15•答案:
(1)格式符应为:
%f;
(2)变量前边未加取地址符&即应为seanf(”%f',&k);
16.答案:
【1】123【2】45.000000
则表达式!
(x+y)+z-1&&y+z/2的值是()
.2D.1
则执行(m=a>b)&&(n=c>d)后n的值为()。
.3D.4
x=3,y=4,z=5,则下面的表达式中,值为
B.x<=y
.!
((x z||1) C语言规定else总是与()组成配 第4章选择结构习题 1选择题 1.已有定义: intx=3,y=4,z=5; A.6B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础 练习题 答案