C语言习题全集+答案.docx
《C语言习题全集+答案.docx》由会员分享,可在线阅读,更多相关《C语言习题全集+答案.docx(50页珍藏版)》请在冰豆网上搜索。
C语言习题全集+答案
第一单元程序设计和C语言
一、选择题
1.C语言的基本构成单位是:
。
A.函数B.函数和过程C.超文本过程D.子程序
2.一个C语言程序总是从开始执行。
A.主过程B.主函数C.子程序D.主程序
3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行
4.以下叙述不正确的是:
。
A.在C程序中,语句之间必须要用分号";"分隔
B.若a是实型变量,C程序中10是正确的,因为实型变量中允许存放整型数
C.在C程序中,无论是整数还是实数都能正确无误地表示
D.在C程序中,%是只能用于整数运算的运算符
5.以下不正确的C语言标识符是。
A.B.C.D.
6.下列字符串是标识符的是:
。
A.B.9C.D.1
7.以下说法中正确的是:
。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须放在()函数中定义
C.C语言程序总是从()函数开始执行
D.C语言程序中的()函数必须放在程序的开始部分
8.不合法的常量是:
。
A.‘\2’B.""C.‘3’D.‘\483’
9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:
。
;
5;
1.422;
A.(-3)B.2C.(23)D.(4)*(3)
10.在C语言中,字符型数据在内存中以形式存放。
A.原码B.码C.反码D.码
11.若有定义:
7;2.5;4.7;
则表达式3*()()%2/4的值是:
。
A.2.500000B.2.750000C.3.500000D.0.000000
12.设有说明:
w;x;y;z;
则表达式w*值的数据类型为:
。
A.B.C.D.
13.以下是不正确的转义字符。
A.'\\'B.'\'C.'081'D.'\0'
14.若x为型变量,则执行以下语句后的值为。
6;*x;
A.36B.-60C.60D.-24
15.字符串"\\\"\"\\"的长度是。
A.11B.7C.5D.3
二、填空题
1.一个函数由两部分组成,它们是和。
2.一个C源程序至少包含一个,即。
3.设12;则表达式的值是。
4.表达式(3,6*a)和表达式3,6*a分别是表达式和表达式,两个表达式执行完的结果分别是和,x值分别是和。
5.在C语言中,实数有两种表示形式,即和。
6.在C语言中,运算符的优先级最小的是运算符。
第二单元顺序程序设计
一、选择题
1.若m为型变量,则执行以下语句后的输出为。
1234.123;
("8.3f\n");
("%10.3f\n");
A.1234.123B.1234.123C.1234.123D.-1234.123
1234.1231234.1231234.123001234.123
2.若均为型变量,则执行以下语句后的输出为。
((10)+5)-5;
("\n");
(010);
("\n");
A.101510B.101010
010001010
C.101510D.101010
101000100
3.若x是型变量是型变量,所用的调用语句格式为:
("");
则为了将数据10和66.6分别赋给x和y,正确的输入应是:
。
A.1066.6<回车>B.1066.6<回车>
C.10<回车>66.6<回车>D.10<回车>66.6<回车>
4.已知有变量定义:
c;用(“”);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是:
。
A.30’b’<回车>B.30b<回车>
C.30<回车>b<回车>D.30b<回车>
5.已知有变量定义:
a;要给a和x输入数据,正确的输入语句是。
若要输出a和x的值,正确的输出语句。
A.(“”);B.(“”);
(“”);(“”);
C.(“”);D.(“”);
(“”);(“”);
6.若有定义1,y;则以下的语句执行的结果是。
3/2;(“”);
A.2.500000B.2.5C.2.000000D.2
7.若a为整型变量,则以下语句。
2L;("\n");
A.赋值不合法B.输出为不确定的值C.输出值为-2D.输出值为2
二、读程序写结果
1.()
{;
("%2*2");
("\n");
}
执行时输入:
1234567
2.()
{40;
x*=3+2;
("");
x*4;
("");
}
3.()
{x;i;
3.6;()x;
("");
}
4.()
{2;
4-1;(",");
**=3;("");
}
5.()
{023;
("");
}
6.()
{c1=’6’2=’0’;
("\n"121212);
}
7.()
{;
1;1;
("\n");
;
("\n");
}
三、填空题
1.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能以输出,也能以输出。
2.""表示如果串长小于m,则在m列范围内,字符串向靠,补空格。
3.函数的“格式控制”包括两部分,它们是和。
4.编写程序求矩形的面积和周长,矩形的长和宽由键盘输入,请填空。
<>
()
{;
(“\n”);
(“”);
;
;
}
5.编写程序,输入一个数字字符(‘0’~‘9’)存入变量c,把c转换成它所对应的整数存入n,如:
字符‘0’所对应的整数就是0。
请填空。
()
{c;
;
(“a:
\n”);
;
;
();
}
第三单元分支程序设计
一、选择题
1.若0,3,3,以下表达式值为0的是
A.1:
0C.2D.3
2.以下运算符中优先级最低的运算符为,优先级最高的为。
A.B.!
C.D.E.?
:
F.
3.若1234,则条件表达式w<<的结果为。
A.4B.3C.2D.1
4.若均为型变量,则执行以下语句后的输出为。
3710;
("\n">1010010);
("\n");
("\n">z);
("\n");
A.0B.1C.0D.0
1111
1100
1110
5.分析以下程序,下列说法正确的是。
()
{500;
()("****\n");
("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
6.分析以下程序,下列说法正确的是。
()
{503;
()("****\n");
("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
7.分析以下程序,下列说法正确的是。
()
{000;
()("****\n");
("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
8.分析以下程序,下列说法正确的是。
()
{000;
()("****\n");
("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
二、读程序写结果
1.<>
()
{14;
(<=0)(!
(<=0));
("\n");
}
2.()
{40;
x*=3+2;
("");
x*=((4));
("");
}
3.()
{;
3;4;
("",(x>>)?
1:
0);
("">y>);
}
4.()
{1110;
(z<0)
(y>0)3;
5;
("\t");
(<0)3;
(0)5;
7;
("\t");
("\t");
}
5.()
{‘B’;
(x)
{‘A’:
(“A.”);
‘B’:
(“B.”);
‘C’:
(“C.”);
:
(“.”);
}
}
6.()
{1000;
(x)
{1:
(y)
{0:
;
1:
;
}
2:
;
3:
;
}
("\n");
}
三、填空题
1.若5,6,7,8,则表达式2的值为
2.定义10;执行后,变量x的值为。
3.分段函数:
输入x,计算y值,输出y,其中:
x<023
00
x>0(7)/3
<>
()
{
;
("");
(x<0)
(1);
(2)0;
(3)(7)/3;
(“”);
}
4.由键盘输入三个数,计算以这三个数为边长的三角形面积。
(1)
()
{
(2);
("3:
\n");
("");
((3))
{()*0.5;
s1*()*()*();
(4);
("\\n");
}
(5)
("!
\n");
}
5.有一方程0的值由键盘输入,请编程序,打印出以下情况时方程的解。
(1)0≠0
(2)000
(3)00≠0
(4)a≠04≥0
(5)a≠04≤0
""
()
{12;
("");
("\n");
(0)
{(
(1))
("\n");
(
(2))("\n");
("x\n");
}
{*4*a*c;
((3))
{x1=((d))/(4);
x2=((d))/(5);
("x16.2f,x26.2f\n"12);
}
{(2*a);(6);
("x16.2f6.2\n");
("x26.2f6.2\n");
}
}
}
6.投票表决器:
–输入Y、y,打印
–输入N、n,打印
–输入其他,打印
()
{
c;
("");
(1)
{
‘Y’:
‘y’:
(“”);
(2);
‘N’:
‘n’:
(“”);(3);
(4)(“”);
}
}
第四单元循环程序设计
一、选择题
1.程序段如下:
则以下说法中正确的是:
A。
5;
{
;
}(k<=0);
A.循环执行5次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
2.设i和x都是类型,则循环语句B。
(00<=9876)("");
A.最多执行10次B.最多执行9次
C.是无限循环D.循环体一次也不执行
3.下述循环语句B。
;
(011)("****");
A.判断循环结束的条件非法B.是无限循环
C.只循环一次D.一次也不循环
4.程序段如下:
则以下说法中正确的是:
C。
20;
(0)1;
A.循环执行20次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
5.下列程序段执行后k值为A。
0;
(0<5)
(0<3)
1;
A.15B.3C.5D.8
6.程序段如下:
则以下说法中不正确的是:
D。
<>
()
{
2,;
(k<7)
{
(2){3;(“\n”);}
1;
(“\n”);
}
}
A.3;执行一次B.1;执行2次
C.执行后k值为7D.循环体只执行一次
二、读程序写结果
1.()
{0;
(<=2)
{;("\n");}
}
1
1
3
2.()
{00;
{*2+1;("\n");;}
(s<10);
}
01
14
29
316
3.<>
()
{1;
(5>=1)
{
(1)*2;
("\n");
}
}
4
10
22
46
94
4.指出下面三个程序的功能,当输入为:
"?
"时,它们的执行结果是什么?
⑴<>
()
{c;
();
('?
')
{(c);();}
}
⑵<>
()
{c;
((())'?
')();
}
⑶<>
()
{((())'?
');
}
5.<>
()
{i;
(1<=5)
{
(2)
(‘<’);
;
(‘>’);
}
(‘#’);
}
6.()
{;
(11<=100)
{(b>10);
(31)
{3;;}
}
("\n");
}
7.()
{1;
(i<=15)
(32);
("");
("\n");
}
8.<>
()
{;
(0<=3)
{(0<)
("(),");
("\n");
}
}
9.()
{;
'';
(0<=5)
{(1<)("");
(0<=5)("",'*');
("\n");
}
}
10.<>
()
{0;
(11<=30)
{(100)
("\n");
(2<)
{(!
());
(i>1)
{("\t");}
}
}
}
三、填空题
1.语句只能用于语句和语句中。
2.计算2+4+6+898+100
()
{
i,
(1);
(2<=100;
(2))
;
}
3.求满足下式的
XYZ
+YZZ
──────
532
()
{532;
(1;
(1))
(1;
(2))
((3);(4))
{(5)+(100*10*);
()(",,\n");
}
}
4.求=之值,其中a是一个数字。
例如2+22+222+2222(此时n=4),n由键盘输入。
()
{100;
("请输入a和n的值:
\n");
("");
(<=
(1))
{
(2);
(3);
*10;
(4);
}
("\n");
}
5.一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?
第十次反弹多高?
()
{100.02;
n;
(2<=
(1))
{
(2);(3);}
("第10次落地时共经过米\n");
("第10次反弹米\n");
}
6.打印出以下图形
*
***
*****
*******
*****
***
*
()
{;
(0<=
(1))
{(0<=2)("");
(0<=
(2))("*");
(3)
}
(0<=2)
{(0<=(4))
("");
(0<=(5))
("*");
("\n");
}
}
7.准备客票。
某铁路线上共10个车站,问需要准备几种车票?
()
{0;
("输入车站数:
");
("");
(1<
(1))
(
(2)<)
(3);
("车票种类\n");
}
第五单元数组
一、选择题
1.以下关于数组的描述正确的是。
A.数组的大小是固定的,但可以有不同的类型的数组元素。
B.数组的大小是可变的,但所有数组元素的类型必须相同。
C.数组的大小是固定的,但所有数组元素的类型必须相同。
D.数组的大小是可变的,但可以有不同的类型的数组元素。
2.在定义a[10];之后,对a的引用正确的是。
A.a[10]B.a[6.3]C.a(6)D.a[10-10]
3.以下能正确定义数组并正确赋初值的语句是。
A.5[n][n];B.a[1][2]={{1},{3}};
C.c[2][]={{1,2},{3,4}}D.a[3][2]={{1,2},{3,4}}
4.以下不能正确赋值的是。
A.s1[10]1="";B.s2[]={’t’,’e’,’s’,’t’}
C.s3[20]="";D.s4[4]={’t’,’e’,’s’,’t’}
5.下面程序段运行时输出结果是。
s[18]="a!
";
("%.4s");
A.a!
B.a!
C.aD.格式描述不正确,没有确定输出
6.下面程序段运行时输出结果是。
s[12]="A";
("\n"(s));
A.12B.8C.7D.6
7.在执行a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是。
A.4B.1C.2D.5
二、读程序写结果
1.<>
()
{
a[8]={1,0,1,0,1,0,1,0};
(2<8)
a[i]a[1]+a[2];
(0<8)
(“%5d”[i]);
}
2.<>
()
{
b[6]={1.1,2.2,3.3,4.4,5.5,6.6};
i;
[0];
(0<5)
b[i][1];
b[5];
(0<6)
(“%6.2f”[i]);
}
3.<>
()
{p[7]={11,13,14,15,16,17,18}00;
(i<7p[i]%2)
{[i];;}
("\n");
}
4.()
{a[3][3]={1,3,5,7,9,11,13,15,17};
0;
(0<3)
(0<3)
{a[i][j];
()
[i][j];
}
("");
}
5.()
{a[4][4];
(0<4)
(0<4)
a[i][j];
(0<4)
{(0<)
("%4d"[i][j]);
("\n");
}
}
6.<>
()
{;
s1[100]2[100];
("1:
\n");(s1);
("2:
\n");(s2);
0;
((s1[i]2[i])(s1[i]'\0'))
;
((s1[i]'\0')(s2[i]'\0'))0;
1[i]2[i];
("\n");
}
输入数据
7.()
{
[3][5]={"","",""};
("\"\"\n"[1]);
}
8.<>
<>
()
{
[10][80][80];
i;
(0<10)
([i]);
([0]);
(1<10)
((c)<([i]))
([i]);
(c);
}
三、填空题
1.构成数组的各个元素必须具有相同的。
2.下面的程序是输出数组中最大元素的下标(p表示最大元素的下标)。
()
{
s[]={13,09,8,520,3};
(00<8)
(s[i]>s[p]);
}
3.输入20个数,输出他们的平均值,输出与平均值之差的绝对值最小的数组元素。
<>
()
{
a[20]0;
;
(0<20)
{
(“”[i]);
;
}
(a[0]);
[0];
(1<20)
((a[i])
{
[i];
}
}
4.输出行、列号之和为3的数组元素。
()
{[4][3]={'A','a','f','c','B','d','e','b',
'C','g','f','D'};
;
(0;
(1))
(0;
(2))
{;
((3))("\n"[x][y]);
}
}
5.将一个数组中的元素按逆序重新存放。
例如原来的顺序为:
8,5,7,4,1,要求改为:
1,4,7,5,8。
N7
()
{a[N]={12,9,16,5,7,2,1};
("\n初始数组:
\n");
(0<)
("%4d"[k]);
(0<
(1))
{[k];a[k]=
(2);(3);}
("\n交换后的数组:
\n");
(0;(4))
("%4d"[k]);
}
6.有一行文字,要求删去某一个字符。
此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。
<>
()
{/*1表示原来的一行文字,2表示删除指定字符后的文字*/
1[100]2[100];
;
00;
(“:
\n”);
(1);
("");
(0;
(2))
(1[i])
{2[(3)]1[i];;}