C语言练习题.docx
《C语言练习题.docx》由会员分享,可在线阅读,更多相关《C语言练习题.docx(72页珍藏版)》请在冰点文库上搜索。
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.()是构成C语言程序的基本单位。
(A)
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)
A、本程序的main()函数开始,到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.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值为()。
(C)
(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;则下面表达式的值为()。
(B)
(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的值为()。
(A)
x%=(n%=2)
A、0
B、1
C、2
D、3
4.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()。
(C)
A、7
B、8
C、9
D、10
5.设有intx=11;则表达式(x++*1/3)的值是()。
(A)
A、3
B、4
C、11
D、12
6.下列程序的输出结果是()。
(C)
#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.下列程序执行后的输出结果是(小数点后只写一位)()。
(A)
#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)
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--)的值是()。
(B)
A、0
B、1
C、2
D、-1
10.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。
(C)
A、1
B、2
C、2.0
D、2.5
11.若变量a,i已正确定义,且i已正确赋值,则合法的语句是()。
(B)
A、i=int(a)
B、++i;
C、a=a++=5;
D、a=int(i);
12.若执行以下程序段后,c3的值为()。
(A)
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
A、0
B、0.5
C、1
D、2
13.如下程序的运行结果是()。
(D)
#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语言表达式是()。
(D)
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)
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的值为()。
(C)
A、不定值
B、4
C、3
D、1
17.以下程序的输出结果是()。
(D)
#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的值为()。
(C)
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的值是()。
(D)
A、4
B、3
C、2
D、1
20.下述表达式中,()可以正确表示x≤0或x≥1的关系。
(D)
A、(x>=1)||(x<0)
B、x>1||x<=0
C、x>=1ORx<=0
D、x>=1||x<=0
第三章
1.下面程序的输出结果是()。
(B)
#include
main()
{
intx=5,y=3;
printf("%d\n",y=x/y);
}
A、0
B、1
C、3
D、不确定的值
2.若变量已正确定义,下面程序段的输出结果是()。
(A)
x=5.238794;
printf("%f\n",(int)(x*1000+05)/(float)1000);
A、5.239000
B、输出格式说明与输出项不匹配,输出无定值
C、5.238000
D、5.24
3.以下程序的输出结果是()。
(D)
#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.下面语句:
(C)
printf("|%8.5f|\n",3461.45);
的输出结果是()。
A、|61.45000|
B、|3461.450|
C、|3461.45000|
D、|3461.4500|
5.()是不正确的C语言赋值语句。
(D)
A、x=1,y=2;
B、x++;
C、x=y=5;
D、y=int(x);
6.与数学公式|cos(x)|等价的C语言表达式是(),假定其中的x的单位是度数且不考虑π值的精度。
(D)
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.下面的程序()。
(D)
#include
main()
{
intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
}
A、有语法错误不能通过编译
B、输出****
C、可以通过编译,但是不能通过连接,因而不能运行
D、输出####
8.执行下面程序中的输出语句后,a的值是()。
(B)
#include
main()
{
inta;
printf("%d\n",(a=3*5,a*4,a+5));
}
A、65
B、20
C、15
D、10
9.若执行下面的程序时,从键盘上输入3和4,则输出结果是()。
(B)
#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.以下程序不用第三个变量,实现将两个数进行对调的操作。
请填空()。
(B)
#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.以下程序的输出结果为()。
(A)
#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)
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)
A、100
B、256
C、ffe
D、ff
14.执行下列程序的结果是()。
(B)
#include
main()
{
floatx=3,y;
y=++x*x++;
printf("%f\n",y);
}
A、9.000000
B、16.000000
C、1.000000
D、程序有错误
15.执行下列程序时输入1234567,程序的运行结果为()。
(B)
#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)
A、double
B、int
C、float
D、char
17.若有以下程序段:
(B)
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)
A、,
B、空格
C、回车
D、Tab键
19.语句printf("%d",(a=2)&&(b=-2));的输出结果是()。
(D)
A、无输出
B、结果不确定
C、-1
D、1
20.下述程序的输出结果是()。
(A)
#include
main()
{printf("%f",2.5+1*7%2/4);
}
A、2.50000
B、2.750000
C、3.375000
D、3.000000
第四章
1.下列程序的运行结果是()。
(B)
#include
main()
{inta=2,c=5;
printf("a=%d,b=%d\n",a,c);
}
A、a=%2,b=%5
B、a=2,b=5
C、a=d,b=d
D、a=%d,b=%d
2.若有定义:
floatw;inta,b;则合法的switch语句是()。
(D)
A、switch(w)
{case1.0:
printf("*\n");
case2.0:
printf("**\n");
}
B、switch(a);
{case1printf("*\n");
case2printf("**\n");
}
C、switch(w)
{case1:
printf("*\n");
default:
printf("\n");
case1+2:
printf("**\n")
}
D、switch(a+b)
{case1:
printf("*\n");
case2:
printf("**\n");
default:
printf("\n");
}
3.语句printf("a\bre\′hi\′y\\\\bou\n");的输出结果是()。
(C)
A、a\bre\′hi\′y\\\bou
B、a\bre\′hi\′y\bou
C、re′hi′you
D、abre′hi′y\bou
4.如下程序的输出结果是()。
(A)
#include
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=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2
5.如下程序的输出结果是()。
(C)
#include
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.000000
B、0.250000
C、0.500000
D、1.000000
6.如下程序的输出结果是()。
(C)
#include
main()
{
inta=12,b=5,c=-3;
if(a>b)
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
A、0
B、1
C、-2
D、-3
7.若执行以下程序时从键盘上输入9,则输出结果是()。
(B)
#include
main()
{intn;
scanf("%d",&n);
if(n++<10)printf("%d\n",n);
elseprintf("%d\n",n--);
}
A、11
B、10
C、9
D、8
8.若a,b,c1,c2,x,y均是整型变量,正确的switch语句是()。
(D)
A、swich(a+b);
{case1:
y=a+b;break;
case0:
y=a-b;break;
}
B、switch(a*a+b*b)
{case3:
case1:
y=a+b;break;
case3:
y=b-a,break;
}
C、switcha
{casec1:
y=a-b;break;
casec2:
x=a*d;break;
default:
x=a+b;
}
D、switch(a-b)
{default:
y=a*b;break;
case3:
case4:
x=a+b;break;
case10:
case11:
y=a-b;break
}
9.阅读以下程序:
#include
main()
{intx;
scanf("%d",&x);
if(x--<5)printf("%d",x);
elseprintf("%d",x++);
}
程序运行后,如果从键盘输入5,则输出结果是()。
(B)
A、3
B、4
C、5
D、6
10.以下程序的输出结果是()。
(A)
#include
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A、1
B、0
C、非0的数
D、-1
11.以下程序的输出结果是()。
(A)
#include
main()
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf("%d\n",m);
}
A、1
B、2
C、3
D、4
12.请阅读以下程序:
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序的输出结果是()。
(A)
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2
13.下面的程序()。
(D)
#include
main()
{intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
}
A、有语法错误不能通过编译
B、输出****
C、可以通过编译,但是不能通过连接,因而不能运行
D、输出####
14.下面程序的输出是()。
(A)
#include
main()
{intx=100,a=10,b=20,ok1=5,ok2=0;
if(a
if(b!
=15)
if(!
ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("%d\n",x);
}
A、-1
B、0
C、1
D、不确定的值
15.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。
(A)
#include
main()
{intx;
scanf("%d",&x);
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);}
A、7和5
B、6和3
C、7和4
D、6和4
16.以下程序的输出结果是()。
(D)
#include
main()
{inta=-1,b=4,k;
k=(++a<0)&&!
(b--<=0);
printf("%d%d%d\n",k,a,b);}
A、104
B、103
C、003
D、004
17.能正确表示a≥10或a≤0的关系表达式是()。
(D)
A、a>=10ora<=0
B、a>=10|a<=0
C、a>=10&&a<=0
D、a>=10||a<=0
18.假定所有变量均已正确说明,下列程序段运行后x的值是()。
(B)
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A、34
B、4
C、35
D、3
19.表示关系X≤Y≤Z的C语言表达式为()。
(A)
A、(X<=Y)&&(Y<=Z)
B、(X<=Y)AND(Y<=Z)
C、(X<=Y<=Z)
D、(X