c语言习题.docx
《c语言习题.docx》由会员分享,可在线阅读,更多相关《c语言习题.docx(139页珍藏版)》请在冰豆网上搜索。
![c语言习题.docx](https://file1.bdocx.com/fileroot1/2023-2/25/23acdbd8-1037-4fe3-b6b0-e3a812980bc4/23acdbd8-1037-4fe3-b6b0-e3a812980bc41.gif)
c语言习题
第一章
一、选择
1.以下选项中不合法的用户标识符是(A)。
A)st.n
B)file
C)Main
D)GO
2.以下选项中合法的用户标识符是(D)。
A)int
B)a#
C)5mem
D)_243
3.C语言中的简单数据类型有(C)。
A)整型、实型、逻辑型
B)整型、字符型、逻辑型
C)整型、实型、字符型
D)整型、实型、字符型、逻辑型
4.以下选项中正确的整型常量是(A)。
A)-37
B)32,758
C)326
D)6.
5.以下选项中合法的C语言字符常量是(A)。
A)′\t′
B)"A"
C)67
D)A
6.以下选项中不正确的实型常量是(A)。
A).123
B)1e4
C)3.640E-1
D)0.35
7.以下选项中合法的C语言赋值语句是(D)。
A)a=b=34
B)a=34,b=34
C)--i;
D)m=(int)(x+y);
8.不合法的十六进制数是(C)。
A)0xff
B)0X11
C)0x1g
D)0Xabc
9.下述标识符中,(B)是合法的用户标识符。
A)A#F
B)getch
C)void
D)mb*
10.(A)是构成C语言程序的基本单位。
A)函数
B)变量
C)子程序
D)语句
11.在C语言中,char型数据在内存中是以(C)形式存储的。
A)原码
B)补码
C)ASCII码
D)反码
12.在C语言中,int,char和short三种类型数据所占用的内存(C)。
A)均为两个字节
B)由用户自己定义
C)由所用机器的字长决定
D)是任意的
13.设int类型的数据长度为两个字节,则unsignedint类型数据的取值范围是(B)。
A)0~255
B)0~65535
C)-32768~32767
D)-256~255
14.以下(C)是不正确的转义字符。
A)′\\′
B)′\′′
C)′020′
D)′\0′
15.一个C语言程序总是从(B)开始执行。
A)主过程
B)主函数
C)子程序
D)主程序
16.以下叙述不正确的是(D)。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main()函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
17.C语言规定:
在一个源程序中,main()函数的位置(C)。
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
18.一个C程序的执行是从()。
A)本程序的main(A)函数开始,到main()函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main()函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main()函数结束
19.以下叙述正确的是(C)。
A)在C程序中,main()函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
20.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的说法是(A)。
A)大写字母和小写字母的意义相同
B)有些不同类型的变量可以在一个表达式中运算
C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A
D
C
A
A
A
D
C
B
A
C
C
B
C
B
D
C
A
C
A
二、填空
1.C源程序的基本单位是。
函数
2.一个C源程序中至少应包括一个______。
主函数
3.在一个C源程序中,注释部分两侧分界符分别为_______和______。
/**/
4.在C语言中,输入操作是由库函数______完成的,输出操作是由库函数______完成的。
Scanf()printf()
5.C程序执行过程生成的3种文件及扩展名为_______、_____和______。
C,obj,exe
6.C语言中用______来定义短整型变量,用______来定义长整型变量。
Short,intlongint
7.while语句实现循环结构______,do----while语句实现循环结构______。
当型,直到型
8.在TURBOC环境中用RUN命令运行一个C程序时,所运行的程序扩展名是______。
.exe
9.用字符串的形式表示china是______。
“china”
10.已知unsignedintx=65535;则执行printf("%d\n",x%=(y%=2))语句后的输出结果为______。
无定值
11.字符串“ab\034\\\x79”的长度为______。
5
12.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为______;一个double型数据在内存中所占的字节数为______。
4,8
13.设C语言中,一个int型数据在内存中占两个字节,则int型数据的取值范围为______。
-32768~~~~~+32767
14.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为______。
1
15.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为______,b值为______,c值为______。
6,4,2
16.若有定义:
charc=′\010′;则变量c中包含的字符个数为______。
1个
17.C语言中的标识符只能由3种字符组成,它们是______、______和______。
字母、数字、下划线
18.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为______。
整型
第二章
1.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值为()。
(float)(a+b)/2+(int)x%(int)y
A)3.5
B)35
C)3.500000
D)35.00000
2.若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为()。
(x+y)%2+(int)a/(int)b
A)1.0
B)1
C)2.0
D)2
3.若x和n均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后x的值为()。
x%=(n%=2)
A)0
B)1
C)2
D)3
4.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()。
A)7
B)8
C)9
D)10
5.设有intx=11;则表达式(x++*1/3)的值是()。
A)3
B)4
C)11
D)12
6.下列程序的输出结果是()。
#include
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);}
A)3
B)3.2
C)0
D)3.07
7.下列程序执行后的输出结果是(小数点后只写一位)()。
#include
main()
{doubled;floatf;longl;inti;
i=f=l=d=20/3;
printf("%d%ld%f%f\n",i,l,f,d);
}
A)666.06.0
B)666.76.7
C)666.06.7
D)666.76.0
8.下列变量定义中合法的是()。
A)short_a=1-.le-1;
B)doubleb=1+5e2.5;
C)longdo=0xfdaL;
D)float2_and=1-e-3;
9.设intx=1,y=1;表达式(!
x||y--)的值是()。
A)0
B)1
C)2
D)-1
10.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。
A)1
B)2
C)2.0
D)2.5
11.若变量a,i已正确定义,且i已正确赋值,则合法的语句是()。
A)i=int(a)
B)++i;
C)a=a++=5;
D)a=int(i);
12.若执行以下程序段后,c3的值为()。
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
A)0
B)0.5
C)1
D)2
13.如下程序的运行结果是()。
#include
main()
{inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
A)34
B)42
C)43
D)33
14.能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是()。
A)a>=10ora<=0
B)a>=0|a<=10
C)a>=10&&a<=0
D)a>=10||a<=0
15.若变量x,y,z均为double类型且已正确赋值,不能正确表示x/y/z的C语言表达式是()。
A)x/y*z
B)x*(1/(y*z))
C)x/y*1/z
D)x/y/z
16.设x,y,t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为()。
A)不定值
B)4
C)3
D)1
17.以下程序的输出结果是()。
#include
main()
{inta=3;
printf("%d\n",(a+=a-=a*a));
}
A)-6
B)12
C)0
D)-12
18.设a,b,c,d,m,n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()。
A)0
B)1
C)2
D)3
19.假定w,x,y,z,m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(ww:
x;m=(mm:
y;m=(mm:
z;
则该程序运行后,m的值是()。
A)4
B)3
C)2
D)1
20.下述表达式中,()可以正确表示x≤0或x≥1的关系。
A)(x>=1)||(x<0)
B)x>1||x<=0
C)x>=1ORx<=0
D)x>=1||x<=0
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
C
B
A
C
A
C
A
A
B
C
B
A
D
D
A
C
D
C
D
D
二、填空:
1.若a,b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后,a值为______,b值为______,c值为______。
6,4,2
2.若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为______。
-60
3.若a是int型变量,则执行表达式a=25/3%3后a的值为______。
2
4.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为______,n的值为______。
10,6
5.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。
8.000000
6.若有定义:
inte=1,f=4,g=2;floatm=10.5,n=4.0,k;则执行赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是______。
13.700000
7.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为______。
int型
8.表达式pow(2.8,sqrt(double(x)))值的数据类型为______。
double型
9.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为______。
26
10.若x和a均是int型变量,则执行表达式x=(a=4,6*2)后x的值为,执行表达式(x=a=4,6*2)后x的值为______。
12,4
11.若有以下定义,则执行表达式y+=y-=m*=y后y的值是______。
-16
intm=5,y=2;
12.已知inty;floatx=-3;,执行语句y=x%2;后,变量y的值为______。
语句错误
13.若intw=1,x=2,y=3,z=4;则条件表达式w>x?
w:
yy:
z的结果为______。
3
14.已知inta=15,b=240;则表达式(a&b)&b||b的结果为______。
1
15.以下程序的输出结果是______。
#include
main()
{intx=10,y=10;
printf("%d%d\n",x--,--y);
}
109
16.表达式8.0*(1/2)的值为______。
0.0
17.表达式3&4的值为______。
表达式3|4的值为______。
表达式3&&4的值为______。
071
第三章
1.下面程序的输出结果是()。
#include
main()
{
intx=5,y=3;
printf("%d\n",y=x/y);
}
A)0
B)1
C)3
D)不确定的值
2.若变量已正确定义,下面程序段的输出结果是()。
x=5.238794;
printf("%f\n",(int)(x*1000+05)/(float)1000);
A)5.239000
B)输出格式说明与输出项不匹配,输出无定值
C)5.238000
D)5.24
3.以下程序的输出结果是()。
#include
main()
{
inta=4;
floatb=9;
printf("a=%%d,b=%%f\n",a,b);
}
A)a=4,b=9.000000
B)a=%4,b=%9.000000
C)a=%%d,b=%%f
D)a=%d,b=%f
4.下面语句:
printf("|%8.5f|\n",3461.45);
的输出结果是()。
A)|61.45000|
B)|3461.450|
C)|3461.45000|
D)|3461.4500|
5.()是不正确的C语言赋值语句。
A)x=1,y=2;
B)x++;
C)x=y=5;
D)y=int(x);
6.与数学公式|cos(x)|等价的C语言表达式是(),假定其中的x的单位是度数且不考虑π值的精度。
A)sqrt(cos(x))
B)sqrt(abs(cos(x*3.14/180)))
C)sqrt(abs(cos(x*(/180)))
D)sqrt(fabs(cos(x*3.14/180)))
7.下面的程序()。
#include
main()
{
intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
}
A)有语法错误不能通过编译
B)输出****
C)可以通过编译,但是不能通过连接,因而不能运行
D)输出####
8.执行下面程序中的输出语句后,a的值是()。
#include
main()
{
inta;
printf("%d\n",(a=3*5,a*4,a+5));
}
A)65
B)20
C)15
D)10
9.若执行下面的程序时,从键盘上输入3和4,则输出结果是()。
#include
main()
{
inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s=s*s;
printf("%d\n",s);
}
A)14
B)16
C)18
D)20
10.以下程序不用第三个变量,实现将两个数进行对调的操作。
请填空()。
#include
main()
{
inta,b;
scanf("%d%d",&a,&b);
printf("a=%db=%d",a,b);
a=a+b;b=a-b;a=;
printf("a=%db=%d\n",a,b);
}
A)a+b
B)a-b
C)b*a
D)a/b
11.以下程序的输出结果为()。
#include
main()
{
intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A)27.000000
B)27.500000
C)28.000000
D)28.500000
12.若变量都已正确说明,则以下程序段:
a=2;
b=3;
printf(a>b?
"***a=%d";"###b=%d",a,b);
A)没有正确的输出格式控制
B)输出为:
***a=2
C)输出为:
###b=2
D)输出为:
***a=2###b=2
13.若已定义inta=256;,执行语句printf("%x",a);的结果是()。
A)100
B)256
C)ffe
D)ff
14.执行下列程序的结果是()。
#include
main()
{
floatx=3,y;
y=++x*x++;
printf("%f\n",y);
}
A)9.000000
B)16.000000
C)1.000000
D)程序有错误
15.执行下列程序时输入1234567,程序的运行结果为()。
#include
main()
{
intx,y;
scanf("%2d%2ld",&x,&y);
printf("%d\n",x+y);
}
A)17
B)46
C)15
D)9
16.已知chara;intb;floatc;doubled;则表达式a*b+c-d结果为()型。
A)double
B)int
C)float
D)char
17.若有以下程序段:
inta=1,b=2,c=3;
c=(a++),(b=a+4,a+b);
printf("%d,%d,%d\n",a,b,c);
其输出结果是()。
A)2,6,8
B)2,6,1
C)1,5,6
D)1,5,1
18.已知inta,b;用语句scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是()。
A),
B)空格
C)回车
D)Tab键
19.语句printf("%d",(a=2)&&(b=-2));的输出结果是()。
A)无输出
B)结果不确定
C)-1
D)1
20.下述程序的输出结果是()。
#include
main()
{printf("%f",2.5+1*7%2/4);
}
A)2.50000
B)2.750000
C)3.375000
D)3.000000
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
B
A
D
C
D
D
D
B
B
B
A
A
A
B
B
A
B
A
D
A
二、填空
1.有如下程序片段:
inta,b,c;
printf("inputa,b,c:
");
scanf("%d%d%d",&a,&b,&c);
欲输入a=1,b=2,c=3,正确的输入形式为:
______。
1,2,3
2.下面程序的输出是______。
-200,25i=-200,j=25
i=-200
j=25
#include
main()
{
inti=-200,j=25;
printf("%d,%d",i,j);
printf("i=%d,j=%d\n",i,j);
printf("i=%d\nj=%d\n",i,j);
}
3.以下程序段的输出结果是______。
156,156,*156,*000156,%06d
#include
main()
{
inta=0234;
printf("%-3d,%-6d,*%-06d,*%06d,%%06d\n",a,a,a,a,a);
}
4.以下程序的输出结果是______。
156,156,234,9c,156
#include
main()
{
inta=0234;
printf("%3d,%6d,%6o,%6x,%6u\n",a,a,a,a,a);
}
5.以下程序的输出结果是______。
123.123789,123.124,123.12378900
#include
voidmain()
{
doublea=123.123789;
printf("%8.6f,%8.3f,%14.8f\n",a,a,a);
}
6.使用强制转换方法将正整数转换成字符。
本题程序如下:
#include
main()
{
charc;inti;
printf("输入一个正整数(小于255):
");
scanf("%d",&i);
c=(char)i;
printf("%c的ASCII码为%d\n",c,i);
}
本程序的执行结果为______。
97<按回车>
A的ASCII码为97
7.直接使用printf()的格式符输出八进制数和十六进制数。
本题程序如下:
#include
main()
{
inti;
printf("