C语言习题集.docx
《C语言习题集.docx》由会员分享,可在线阅读,更多相关《C语言习题集.docx(38页珍藏版)》请在冰豆网上搜索。
C语言习题集
C语言习题集
习题一
一.填空题
1.C程序是由()构成的,一个C程序中至少包含().因此,()是C程序的基本单位.
2.C程序注释是由()和()所界定的文字信息组成的.
3.函数体一般包括()和().
二.判断题
1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束.【】
2.main函数必须写在一个C程序的最前面.【】
3.一个C程序可以包含若干的函数.【】
4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用.但是可以增加程序的可读性.【】
5.C程序的注释只能是一行.【】
6.C程序的注释不能是中文文字信息.【】
8.可以使用TurboC来编译和连接一个C程序.【】
9.可以使用TurboC来运行一个C程序.【】
10.可以使用TurboC来实时调试(即动态调试)一个C程序.【】
三.简答题
1.写出一个C程序的基本结构.
2.简要叙述使用TurboC2.0编译和运行一个程序的步骤.
四.编程题
1.提高题:
参照课本例1.1,试编写一个C程序,输出如下信息.(提示:
使用键盘上的一些符号).
2.提高题:
试编写一个C程序,输出如下信息.
试试看,可以输出其他组合图案吗
习题二
一.选择题
1,合法的字符常量是.
A)'\t'B)"A"C)'a'D)'\x32'
2,合法的字符常量是.
A)'\084'B)'\84'C)'ab'D)'\x43'
3,是C语言提供的合法的数据类型关键字.
A)FloatB)signedC)integerD)Char
4,在以下各组标识符中,合法的标识符是.
(1)A)B01B)table_1C)0_tD)k%
(2)A)Fast_B)voidC)pblD)
(3)A)xy_B)longdoubleC)*pD)CHAR
(4)A)sjB)IntC)_xyD)w_y23
5,属于合法的C语言长整型常量的是.
A)5876273B)0LC)2E10D)(long)5876273
6,下面选项中,不是合法整型常量的是.
A)160B)-0xcdgC)-01D)-0x48a
7,判断intx=0xaffbc;x的结果是.
A)赋值非法B)溢出C)为affbD)为ffbc
8,下面选项中,均是合法浮点数的是.
A)+1e+1B)-.60C)123eD)-e3
A)5e-9.4B)12e-4C)1.2e-.4D).8e-4
A)03e2B)-8e5C)+2e-1D)5.e-0
9,在C语言中,要求参加运算的数必须时整数的运算符是.
A)/B)*C)%D)=
10,在C语言中,字符型数据在内存中以形式存放.
A)原码B)BCD码C)反码D)ASCII码
11,下列语句中,符合语法的赋值语句是.
A)a=7+b+c=a+7;B)a=7+b++=a+7;
C)a=(7+b,b++,a+7);D)a=7+b,c=a+7;
12,是非法的C语言转义字符.
A)'\b'B)'\0xf'C)'\037'D)'\''
13,对于语句:
f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,是正确的.
A)语法错误B)f为5.0C)f为0.0D)f为2.0
14,与代数式(x*y)/(u*v)不等价的C语言表达式是.
A)x*y/u*vB)x*y/u/vC)x*y/(u*v)D)x/(u*v)*y
15,在C语言中,数字029是一个.
A)八进制数B)十六进制数C)十进制数D)非法数
16,C语言中整数-8在内存中的存储形式为.
A)111111*********0B)100000000001000
C)000000000001000D)111111*********1
17,对于charcx='\039';语句,正确的是.
A)不合法B)cx的ASCII值是33
C)cx的值为四个字符D)cx的值为三个字符
18,若intk=7,x=12;则能使值为3的表达式是.
A)x%=(k%=5)B)x%=(k-k%5)
C)x%=k-k%5D)(x%=k)-(k%=5)
19,为了计算s=10!
(即10的阶乘),则s变量应定义为.
A)intB)unsignedC)longD)以上三种类型均可
20,以下所列的C语言常量中,错误的是.
A)0xFFB)1.2e0.5C)2LD)'\72'
21,假定x和y为double型,则表达式x=2,y=x+3/2的值是.
A)3.500000B)3C)2.000000D)3.000000
22,设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是.
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
23,以下合法的赋值语句是.
A)x=y=100B)d――C)x+yD)c=int(a+b)
24,下选项中不属于C语言的类型是.
A)signedshortintB)unsignedlongint
B)unsignedintD)longshort
25,设以下变量均为int类型,则值不等于7的表达式是.
A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)
26,在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是.
A)a=20000+20000;B)a=4000*10;
C)30000+10000;D)a=4000L*10L;
二.填空题
1.在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为,其数值范围为;一个int数据在内存中所占字节数为,其数值范围为;一个long数据在内存中所占字节数为,其数值范围为;一个float数据在内存中所占字节数为,其数值范围为.
2.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为.
3.字符常量使用一对界定单个字符,而字符串常量使用一对来界定若干个字符的序列.
4.在C语言中,不同运算符之间运算次序存在的区别,同一运算符之间运算次序存在的规则.
5.设x,i,j,k都是int型变量,表达式x=(i=4,j=16,k=32)计算后,x的值为.
6.设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4为.
7.设a=2,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y为.
8.数学式子的C语言表达式为.
9.数学式子的C语言表达式为.
10.已知:
chara='a',b='b',c='c',i;则表达式i=a+b+c的值为.
11.已知inta=12,n=5;则:
表达式运算后a的值各为.
a+=a
a-=2
a*=2+3
a/=a+a
n%=(n%=2)
a+=a-=a*=a
12.设inta;floatf;doublei;则表达式10+'a'+i*f值的数据类型是.
13.若a为int型变量,则表达式(a=4*5,a*2),a+6的值为.
14.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为.
15.已知a,b,c是一个十进制数的百位,十位,个位,则该数的表达式是.
16.定义:
doublex=3.5,y=3.2;则表达式(int)x*0.5的值是,表达式y+=x++的值是.
17.定义:
intm=5,n=3;则表达式m/=n+4的值是,表达式m=(m=1,n=2,n-m)的值是,表达式m+=m-=(m=1)*(n=2)的值是.
18.表达式5%(-3)的值是,表达式-5%(-3)的值是.
19.若a是int变量,则执行表达式a=25/3%3后,a的值是.
20.数学式子的C语言表达式为:
.
三.判断题
1.在C程序中对用到的所有数据都必须指定其数据类型.【】
2.一个变量在内存中占据一定的存储单元.【】
3.一个实型变量的值肯定是精确的.【】
4.对几个变量在定义时赋初值可以写成:
inta=b=c=3;【】
5.自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式.【】
6.在C程序的表达式中,为了明确表达式的运算次序,常使用括号"()".【】
7.%运算符要求运算数必须是整数.【】
8.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数.【】
9.在C程序中,逗号运算符的优先级最低.【】
10.C语言不允许混合类型数据间进行运算.【】
四.简答题
1.为什么C语言的字符型可以进行数值运算
2.简述'a'和"a"的区别.
3.程序:
intm=12;m=15;为什么整型变量m的值在运算后不是当初的12,而是15
4.将下面各数用八进制和十六进制数表示:
十进制32-1-327682002-1280
八进制
十六进制
6.华氏温度F与摄氏温度c的转换公式为:
c=(F-32)*5/9,则floatc,F;c=5/9*(F-32)是其对应的C语言表达式吗如果不是,为什么
五.程序阅读题
1.写出以下程序运行的结果.
main()
{
charc1='a',c2='b',c3='c',c4='\101',c5='116';
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
2.写出以下程序运行的结果.
main()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
六.编程题
1.假设m是一个三位数,则写出将m的个位,十位,百位反序而成的三位数(例如:
123反序为321)的C语言表达式.
2.已知intx=10,y=12;写出将x和y的值互相交换的表达式.
习题三
一.选择题
1.C语言的程序一行写不下时,可以.
A)用逗号换行B)用分号换行
C)在任意一空格处换行D)用回车符换行
2.putchar()函数可以向终端输出一个.
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
3.执行下列程序片段时输出结果是.
unsignedinta=65535;
printf("%d",a);
A)65535B)-1C)-32767D)1
4.执行下列程序片段时输出结果是.
floatx=-1023.012
printf("\n%8.3f,",x);
printf("%10.3f",x);
A)1023.012,-1023.012B)-1023.012,-1023.012
C)1023.012,-1023.012D)-1023.012,-1023.012
5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是.
inta1,a2;charc1,c2;
scanf("%d%c%c",&a1,&a2,&c1,&c2);
A)10A20B↙B)10A20B↙
C)10A20B↙C)10A20B↙
6.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按方式输入数据.
intk1,k2,k3,k4;
scanf("%d%d",&k1,&k2);
scanf("%d,%d",&k3,&k4);
A)1020↙B)1020↙C)10,20↙
D)1020↙1020↙1020↙10,20↙10,20↙
7.执行下列程序片段时输出结果是.
intx=13,y=5;
printf("%d",x%=(y/=2));
A)3B)2C)1D)0
8.下列程序的输出结果是.
main()
{intx=023;
printf("%d",--x);
}
A)17B)18C)23D)24
9.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是.
inta1,a2;charc1,c2;
scanf("%d%d",&a1,&a2);
scanf("%c%c",&c1,&c2);
A)1020AB↙B)1020↙
AB↙
C)1020AB↙D)1020AB↙
10.执行下列程序片段时输出结果是.
intx=5,y;
y=2+(x+=x++,x+8,++x);
printf("%d",y);
A)13B)14C)15D)16
11.若定义x为double型变量,则能正确输入x值的语句是.
A)scanf("%f",x);B)scanf("%f",&x);
C)scanf("%lf",&x);D)scanf("%5.1f",&x);
12.若运行时输入:
12345678↙,则下列程序运行结果为.
main()
{inta,b;
scanf("%2d%2d%3d",&a,&b);
printf("%d\n",a+b);
}
A)46B)579C)5690D)出错
13.已知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);
14.若intx,y;doublez;以下不合法的scanf函数调用语句是.
A)scanf("%d%lx,%le",&x,&y,&z);
B)scanf("%2d*%d%lf",&x,&y,&z);
C)scanf("%x%*d%o",&x,&y);
D)scanf("%x%o%6.2f",&x,&y,&z);
15.有输入语句:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是.
A)132↙B)1,3,2↙
C)a=1b=3c=2↙D)a=1,b=3,c=2↙
二.填空题
1.一个C程序由若干个文件组成,而一个这样的文件可以由若干个和以及组成.
2.C语句可以分为,,,和等5种类型.
3.C控制语句有种.
4.一个表达式要构成一个C语句,必须.
5.复合语句是用一对界定的语句块.
6.printf函数和scanf函数的格式说明都使用字符开始.
7.scanf处理输入数据时,遇到下列情况时该数据认为结束:
(1),
(2),(3).
8.已有inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是.
9.C语言本身不提供输入输出语句,其输入输出操作是由来实现的.
10.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:
.
三.程序阅读题
1.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输入
main()
{inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);
scanf("%c%c",&c1,&c2);
}
2.写出以下程序的输出结果.
main()
{inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
3.写出以下程序的输出结果.
main()
{inta=12345;
floatb=-198.345,c=6.5;
printf("a=%4d,b=%-10.2e,c=%6.2f\n",a,b,c);
}
4.写出以下程序的输出结果.
main()
{intx=-2345;
floaty=-12.3;
printf("%6D,%06.2F",x,y);
}
5.写出以下程序的输出结果.
main()
{inta=252;
printf("a=%oa=%#o\n",a,a);
printf("a=%xa=%#x\n",a,a);
}
6.写出以下程序的输出结果.
main()
{intx=12;doublea=3.1415926;
printf("%6d##,%-6d##\n",x,x);
printf("%14.101f##\n",a);
}
四.程序填空题
1.下列程序的输出结果是16.00,请填
(1)空使程序完整.
main()
{inta=9,b=2;
floatx=[1],y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
五.编程题
1.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来.
2.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出).
a=3b=4c=5
x=1.200000,y=2.400000,z=-3.600000
x+y=3.60y+z=-1.20z+x=-2.40
u=51274n=128765
c1='a'or97(ASCII)
c2='b'or98(ASCII)
3.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积.用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字,请编写程序.
4.编程序:
用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf函数输出这两个字符.并思考以下问题:
(1)变量c1,c2应定义为字符型或整型或两者皆可
(2)要求输出C1和C2值的ASCII码,应如何处理用putchar函数还是printf函数(3)整型变量与字符型变量是否在任何情况下都可以互相替代如:
charc1,c2与intc1,c2
是否无条件地等价
习题四
一.选择题
1.逻辑运算符两侧运算对象的数据类型.
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
2.下列表达式中,不满足"当x的值为偶数时值为真,为奇数时值为假"的要求.
A)x%2==0B)!
x%2!
=0C)(x/2*2-x)==0D)!
(x%2)
3.以下程序片段.
intx=2,y=3;
printf();
A)什么都不输出B)输出为:
***x=2
C)输出为:
###y=2D)输出为:
###y=3
4.能正确表示"当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是.
A)(x>=1)&&(x=200)&&(x=1)||(x=200)||(x=1)&&(x=200)&&(x=1)||(x=200)||(xb)&&(n=c>d)后n的值为.
A)1B)2C)3D)4
7.下面是错误的if语句(设intx,a,b;)
A)if(a=b)x++;B)if(a=y)
x=y;y=x;
else
x++;y++;
printf("%d,%d",x,y);
}
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5
10.若w=1,x=2,y=3,z=4,则条件表达式w0)
++c;
printf("%d,%d,%d",a,b,c);
}
A)0,0,0B)1,1,1C)1,0,1D)0,1,1
13.下述程序的输出结果是.
main()
{intx=-1,y=4,k;
k=x++<=0&&!
(y--<=0);
printf("%d,%d,%d",k,x,y);
}
A)0,0,3B)0,1,2C)1,0,3D)1,1,2
14.以下程序输出结果是.
main()
{intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d",a,b);
}
A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2
15.下述程序的输出结果是.
main()
{inta,b,c;
intx=5,y=10;
a=(--y=x++)–y:
++x;
b=y++;c=x;
printf("%d,%d,%d",a,b,c);
}
A)6,9,7B)6,9,6C)7,9,6D)7,9,7
16.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是.
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)4
17.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他三个语句不等价.
A)if(a)S1;elseS2;B)if(a==0)S2;elseS1;
C)if(a!
=0)S1;elseS2;D)if(a==0)S1;elseS2;
18.若inti=0;执行下列程序后,变量i的正确结果是.
switch(i){
case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A)10B)11C)12D)13
19.若有说明语句inti=5,j=4,k=6;f