C习题及答案Word下载.docx
《C习题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《C习题及答案Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
B)a=7+b+c,a++C)int(12.3%4)D)a=a+7=c+b
11.以下非法的赋值语句是
A)n=(i=2,++i);
B)j++;
C)++(i+1);
D)x=j>
0;
12.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A)6.500000B)6C)5.500000D)6.000000
13.已有定义:
intx=3,y=4,z=5;
,则表达式!
(x+y)+z-1&
&
y+z/2的值是
A)6B)0C)2D)1
14.以下叙述中正确的是
A)a是实型变量,C允许以下赋值a=10,因此可以这样说实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式
C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0
D)已有a=3,b=5。
当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3
15.以下叙述中正确的是
A)在C程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B)C程序由主函数组成。
C)C程序由函数组成。
D)C程序由函数和过程组成。
16.TurboC中int类型变量所占字节数是
A)1B)2C)3D)4
17.不合法的八进制数是
A)0B)028C)07700D)01
18.不合法的十六进制数是
A)oxffB)0XabcC)0x11D)0x19
19.若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A)a=b=c=100;
B)d++;
C)c+b;
D)d=(c=22)-(b++);
20.以下选项中不是C语句的是
A){inti;
i++;
printf(“%d\n”,i);
}B);
C)a=5,c=10D){;
}
21.以下合法的C语言赋值语句是
A)a=b=58B)k=int(a+b);
C)a=58,b=58D)--i;
22.以下程序的输出结果是
main()
{intx=10,y=3;
printf(“%d\n”,y=x/y);
A)0B)1C)3D)不确定的值
23.C语言中的简单数据类型有
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
24.C语言中,字符(char)型数据在微机内存中的存储形式是
A)反码B)补码C)EBCDIC码D)ASCII码
25.设有语句chara=‘\172’;
,则变量a
A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法
26.C语言中不合法的字符常量是
A)’\xff’B)’\65’C)’&
’D)’\028’
27.C语言中不合法的字符串量是
A)”\121”B)’y=’C)”\n\n”D)”ABCD\x6d”
1.若k为int型变量且赋值11,请写出运算k++后表达式的值和变量的值。
2.若x为double型变量,请写出运算x=3.2,++x后表达式的值和变量的值。
3.函数体由符号开始,用符号结束。
4.函数体的前面是部分,其后面是部分。
5.在C语言程序中,用关键字定义基本整型变量,用关键字定义单精度实型变量,用关键字定义双精度实型变量。
6.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是。
7.C程序中定义的变量,代表内存中的一组。
8.表达式3.5+1/2的计算结果是。
9.对以下数学式,写出三个等价的C语言表达式是、、
。
10.表达式s=10应当读做“”。
11.计算机中内存储器的最小单位称为,其中能容纳的数是个
12.通常一个字节包含个二进制位。
在一个字节中能存放的最大十进制整数是,它的二进制数的形式是;
最小十进制整数是,它的二进制形式是。
13.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是、最小十进制整数是,它们的二进制形式是。
14.以下程序的输出结果是。
main()
{inta=0;
a+=(a=8);
printf("
%d\n"
a);
}
第四章顺序结构程序设计
1.若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是
A)read(a,b,c)B)scanf(“%d%d%d”,a,b,c);
C)scnaf(“%D%D%D”,&
a,&
b,&
C);
D)scanf(“%d%d%d”,&
c);
2.若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是
scanf(“%f%f%f”,&
a,&
b,&
A)10B)10.0,22.0,33.0C)10.0D)1022
2222.033.033
33
3.已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是
A)scanf("
%2d%2d%2d"
&
i,&
j,&
k);
B)scanf("
%d%d%d"
C)scanf("
%d,%d,%d"
D)scanf("
i=%d,j=%d,k=%d"
4.若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
printf("
%d,%d\n"
m,i);
执行后的输出结果是
A)8,6B)8,3C)6,4D)7,4
5若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句是
A)a=a+b,b=a-b,a=a-b;
B)t=a;
a=b;
b=t;
C)a=t;
t=b;
b=a;
D)t=b;
a=t;
6.有以下程序
{inti=10,j=1;
printf("
i--,++j);
执行后输出结果是
A)9,2B)10,2C)9,1D)10,1
7.若变量已正确定义,以下程序段的输出结果是
x=5.16894;
printf(“%f\n”,(int)(x*1000+0.5)/(float)1000);
A)输出格式说明与输出项不匹配,输出无定值B)5.17000
C)5.168000D)5.169000
8.若有以下程序段,c3中的值是
intc1=1,c2=2,c3;
c3=c1/c2;
A)0B)1/2C)0.5D)1
9.若有以下程序段,其输出结果是
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);
A)0,0,-10B)0,0,5C)-10,3,-10D)3,3,-10
10.当运行以下程序时,在键盘上从第一列开始,输入9876543210<
CR>
(此处<
表示Enter),则程序的输出结果是
{inta;
floatb,c;
scanf(“%2d%3f%4f”,&
printf(“\na=%d,b=%f,c=%f\n”,a,b,c);
A)a=98,b=765,c=4321B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0
11.以下程序的输出结果是
{inta=2,b=5;
printf(“a=%%d,b=%%d\n”,a,b);
A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d
12.若int类型占两个字节,则以下程序段的输出是
inta=-1;
printf(“%d,%u\n”,a,a);
A)-1,-1B)-1,32767C)-1,32768D)-1,65535
13.以下程序段的输出是
intx=496;
printf(“*%-06d*\n”,x);
A)*496*B)*496*
C)*000496*D)输出格式不合法
14.以下程序段的输出是
floata=3.1415;
printf(“|%6.0f|\n”,a);
A)|3.1415|B)|3.0|C)|3|D)|3.|
15.以下程序段的输出是
printf(“|%10.5f|\n”,12345.678);
A)|2345.67800|B)|12345.6780|C)|12345.67800|D)|12345.678|
16.若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是
A)scanf(%f”,c)B)scanf(%8.4f”,&
C)scanf(%6.2f”,&
D)scanf(%8f”,&
17.若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是
scanf(“a=%f,b=%f”,&
b);
A)3.129.0B)a=3.12b=9C)a=3.12,b=9.0D)a=3.12,b=9
18.以下程序的输出结果是
#include“math.h”
{doublea=-3.0,b=2;
printf(“%3.0f%3.0f\n”,pow(b,fabs(a)),pow(fabs(a),b));
A)98B)89
C)66D)以上三个都不对
19.以下程序的输出结果是
{charc1=‘A’,c2=‘Y’;
printf(“%d,%d\n”,c1,c2);
A)因输出格式不合法,无正确输出B)65,90
C)A,YD)65,89
20.以下程序段的输出结果是
{charx=‘A’;
x=(x>
=’A’&
x<
=’Z’)?
(x+32):
x;
printf(“%c\n”,x);
A)AB)aC)ZD)z
21以下程序段的输出结果是
{charch1,ch2;
ch1=‘A’+‘5’-‘3’;
ch2=‘A’+‘5’-‘3’;
printf(“%d,%c\n”,ch1,ch2);
A)67,CB)B,C
C)C,DD)不确定的值
22.若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是
scanf(“%f%c%f%c”,&
c1,&
c2);
A)2.0%4.0#B)2.0%4.0#C)2%4#D)2%4#
23.以下程序的输出结果是
{intw=4,x=3,y=2,z=1;
printf(“%d\n”,(w<
x)?
w:
z<
y?
z:
x));
24.下列程序段的输出结果是
inta=1234;
floatb=123.456;
doublec=12345.54321;
%2d,%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
1.若有以下定义,请写出以下程序段中输出语句执行后的结果。
(1)
(2)(3)
inti=-200,j=2500;
printf(“
(1)%d%d”,i,j);
printf(“
(2)i=%d,j=%d\n”,i,j);
printf(“(3)i=%d\nj=%d\n”,i,j);
2.变量i、j、k已定义为int类型并赋初值0,用以下语句输入时
scanf(“%d”,&
i);
j);
当执行第一个输入语句时从键盘输入:
12.3<
<
表示Enter键
则变量i、j、k的值分别是。
3.复合语句在语法上被认为是。
空语句的形式是。
4.以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。
写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式、、。
intk;
flaota;
doublex;
scanf(“%d%f%lf”,&
k,&
x);
printf(“k=%d,a=%f,x=%f\n”,k,a,x);
5.以下程序段的输出结果是。
intx=0177;
printf(“x=%3d,x=%6d,x=%6o,x=%6x,x=%6u\n”,x,x,x,x,x);
6.以下程序段的输出结果是。
doublea=513.789215;
printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\n”,a,a,a,a);
7.若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是。
请用<
代表Enter键。
scanf(“%d%c%d%c%d%c%d%c”,&
w,&
x,&
y,&
c,&
z,&
d);
8.若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是。
charc1,c2;
floata1,a2;
scanf(“%f%f”,&
a1,&
a2);
scanf(“%c%c”,&
9.若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出从键盘正确输入数据的形式是。
charc1,c2,c3;
scanf(“%4c”,&
c1);
scanf(“%4c”,&
c3);
10.下列程序的输出结果是16.00,请填空。
{inta=9,b=2;
floatx=,y=1.1,z;
z=a/2+b*x/y+1/2;
%5.2f\n"
z);
第五章选择结构程序设计
1.下面的程序片断所表示的数学函数关系是
y=-1;
if(x!
=0)y=1;
if(x>
0)y=1;
elsey=0;
-1(x<
0)1(x<
0)
A)y=0(x=0)B)y=-1(x=0)
1(x>
0)0(x>
0(x<
0)-1(x<
C)y=0(x=0)D)y=1(x=0)
1(x>
2.运行以下程序后,输出的结果是
{intk=-3;
if(k<
=0)
printf(“****\n”),
elseprintf(“&
\n”);
A)****B)&
C)****&
D)有语法错误不能通过编译
3.有如下程序
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
b++;
a=%d,b=%d\n"
a,b);
该程序的输出结果是
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
4.有以下程序
{
inta=5,b=4,c=3,d=2;
if(a>
b>
c)
%d\n"
d);
elseif((c-1>
=d)==1)
d+1);
elseprintf("
d+2);
A)2B)3C)编译时出错D)4
5.有以下程序
inti=1,j=1,k=2;
if((j++||k++)&
i++)
%d,%d,%d\n"
i,j,k);
执行后输出结果是
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
6.有如下程序
floatx=2.0,y;
if(x<
0.0)y=0.0;
elseif(x<
10.0)y=1.0/x;
elsey=1.0;
%f\n"
y);
A)0.000000B)0.250000C)0.500000D)1.000000
7.若执行以下程序时从键盘上输入3和4,则输出结果是
inta,b,s;
scanf(“%d%d”,&
s=a;
if(a<
b)s=b;
s*=s;
pritnf(“%d\n”,s);
A)14B)16C)18D)20
8.假定所有变量均已正确定义,下面语句段执行后的x的值是
a=b=c=0;
x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A)34B)4C)35D)3
9.判断char型变量c是否为大写字母的C表达式是
A)’A’<
=c<
=’Z’B)(c>
=’A’&
(c<
=’Z’)
C)(‘A’<
=c)AND(‘Z’>
=c)D)(c>
=’A’)&
=’Z’)
10.下列运算符中优先级最高的运算符是
A)!
B)%C)-=D)&
11.下列运算符中优先级最低的运算符是
A)||B)!
=C)<
=D)+
12.为表示关系x≥y≥z,应使用的C语言表达式是
A)(x>
=y)&
(y>
=z)B)(x>
=y)AND(y>
=z)
C)(x>
=y>
=z)D)(x>
13.设a、b和c都是int变量,且a=3,b=4,c=5;
则以下的表达式中,值为0的表达式是
A)a&
bB)a<
=b
C)a||b+c&
b-cD)!
((a<
b)&
!
c||1)
14.以下程序的运行结果是
{inta=2,b=-1,c=2;
b)
if(b<
0)c=0;
elsec+=1;
printf(“%d\n”,c);
A)0B)1C)2D)3
1.请写出以下程序的输出结果。
{inta=100;
if(a>
100)printf(“%d\n”,a>
100);
elseprintf(“%d\n”,a<
=100);
2.将上题中的双分支if语句改写成条件表达式语句: