C习题及答案.docx
《C习题及答案.docx》由会员分享,可在线阅读,更多相关《C习题及答案.docx(28页珍藏版)》请在冰豆网上搜索。
![C习题及答案.docx](https://file1.bdocx.com/fileroot1/2022-11/20/29890789-ef52-4474-a324-20bfaaafad15/29890789-ef52-4474-a324-20bfaaafad151.gif)
C习题及答案
第一、二章C语言概述与算法
一、选择题(四个选项中只有一个是正确的----下同)
1.一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是
A)有零个或多个输入B)有零个或多个输出
C)有穷性D)可行性
2.以下叙述中正确的是
A)C语言的源程序不必通过编译就可以直接运行
B)C语言的每条可执行语句最终都将被转换成二进制的机器指令
C)C语言的源程序经编译形成的二进制代码可以直接运行
D)C语言的函数不可以单独进行编译
3.对用C语言编写的代码程序,以下叙述中哪个是正确的
A)可立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
4.结构化程序由三种基本结构组成,由这三种基本结构组成的算法
A)可以完成任何复杂的任务B)只能完成部分复杂的任务
C)只能完成符合结构化的任务D)只能完成一些简单的任务
5.有一个命名为C001.C的C语言源程序,当正常执行后,在当前目录下不存在的文件是
A)C001.OBJB)C001.DATC)C001.EXED)C001.C
二、填空题
1.结构化程序由、、三种基本结构组成。
2.模块化程序设计的设计原则是和。
3.组成C程序的基本单位是,其组成部分包括和。
4.C程序中的main称,它可以出现在程序的位置。
5.由“/*”和“*/”括起来的内容称为,它的作用是。
6.描述算法的常用方法有:
。
第三章数据类型、运算符与表达式
一、选择题
1.与十进制数97不等值的字符常量是
A)’a’B)’\101’C)’\x61’D)’\141’
2.在编写了一个C语言源程序C001.C并正确执行之后,当前目录下哪个文件不存在
A)C001.CB)C001.OBJC)C001.DATD)C001.EXE
3.以下选项中正确的整型常量是
A)5.B)-10C)1.000D)4/5
4.以下选项中正确的实型常量是
A)0B)3.1415C)0.03x102D).32
5.以下选项中不正确的实型常量是
A)2.670E-1B)0.05e+1.5C)-77.77D)456e-2
6.以下选项中不合法的用户标识符是
A)wb-1B)fileC)MainD)PRINTF
7.以下选项中不合法的用户标识符是
A)_123B)printfC)A$D)Dim
8.C语言中运算对象必须是整型的运算符是
A)%B)/C)*D)+
9.可在C程序中用作标识符的一组标识符是
A)voidB)as_b3C)ForD)2c
Define_123-abcDO
WORDIfcaseSiG
10.若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7;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”,&a,&b,&c);
2.若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是
scanf(“%f%f%f”,&a,&b,&c);
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",&i,&j,&k);
C)scanf("%d,%d,%d",&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
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;b=a;a=t;
6.有以下程序
main()
{inti=10,j=1;
printf("%d,%d\n",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(此处表示Enter),则程序的输出结果是
main()
{inta;floatb,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
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.以下程序的输出结果是
main()
{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);C)scanf(%6.2f”,&c);D)scanf(%8f”,&c);
17.若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是
scanf(“a=%f,b=%f”,&a,&b);
A)3.129.0B)a=3.12b=9C)a=3.12,b=9.0D)a=3.12,b=9
18.以下程序的输出结果是
#include“math.h”
main()
{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.以下程序的输出结果是
main()
{charc1=‘A’,c2=‘Y’;
printf(“%d,%d\n”,c1,c2);
}
A)因输出格式不合法,无正确输出B)65,90
C)A,YD)65,89
20.以下程序段的输出结果是
main()
{charx=‘A’;
x=(x>=’A’&&x<=’Z’)?
(x+32):
x;
printf(“%c\n”,x);
}
A)AB)aC)ZD)z
21以下程序段的输出结果是
main()
{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”,&a,&c1,&b,&c2);
A)2.0%4.0#B)2.0%4.0#C)2%4#D)2%4#
23.以下程序的输出结果是
main()
{intw=4,x=3,y=2,z=1;
printf(“%d\n”,(ww:
zz:
x));
}
A)1B)2C)3D)4
24.下列程序段的输出结果是
inta=1234;
floatb=123.456;
doublec=12345.54321;
printf("%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);scanf(“%d”,&j);scanf(“%d”,&k);
当执行第一个输入语句时从键盘输入:
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,&a,&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,&a,&x,&b,&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”,&c1,&c2);
9.若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出从键盘正确输入数据的形式是。
charc1,c2,c3;
scanf(“%4c”,&c1);
scanf(“%4c”,&c2);
scanf(“%4c”,&c3);
10.下列程序的输出结果是16.00,请填空。
main()
{inta=9,b=2;
floatx=,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%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)
0(x<0)-1(x<0)
C)y=0(x=0)D)y=1(x=0)
1(x>0)0(x>0)
2.运行以下程序后,输出的结果是
main()
{intk=-3;
if(k<=0)
printf(“****\n”),
elseprintf(“&&&&\n”);
}
A)****B)&&&&
C)****&&&&D)有语法错误不能通过编译
3.有如下程序
main()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("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.有以下程序
main()
{
inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
elseprintf("%d\n",d+2);
}
执行后输出结果是
A)2B)3C)编译时出错D)4
5.有以下程序
main()
{
inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
6.有如下程序
main()
{
floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);}
该程序的输出结果是
A)0.000000B)0.250000C)0.500000D)1.000000
7.若执行以下程序时从键盘上输入3和4,则输出结果是
main()
{
inta,b,s;
scanf(“%d%d”,&a,&b);
s=a;
if(a
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’)&&(c<=’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>=y)&(y>=z)
13.设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是
A)a&&bB)a<=b
C)a||b+c&&b-cD)!
((a
c||1)
14.以下程序的运行结果是
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf(“%d\n”,c);
}
A)0B)1C)2D)3
二、填空题
1.请写出以下程序的输出结果。
main()
{inta=100;
if(a>100)printf(“%d\n”,a>100);
elseprintf(“%d\n”,a<=100);
}
2.将上题中的双分支if语句改写成条件表达式语句: