思考与练习
1.选择题
(1)以下程序的输出结果是。
#include
#include
main()
{
int a=1,b=4,c=2;
float x=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf("%f\n",z);
}
A.14.000000B.015.400000C.13.700000D.14.900000
(2)以下程序的输出结果是。
#include
main()
{
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A.a=%2,b=%5B.a=2,b=5
C.a=%%d,b=%%dD.a=%d,b=%d
(3)以下程序的输出结果是。
#include
main()
{
int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A.6,1B.2,1C.6,0D.2,0
(4)C语言程序的基本单位是。
A.程序行B.语句C.函数D.字符
(5)合法的C语言赋值语句是。
A.a=b=58B.i++;C.a=58,b=58D.k=int(a+b);
(6)设在程序中,a、b、c均被定义成整型变量,并且已赋整数大于1的整数值,则以下表达式中,正确的是。
A.1/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c
(7)若x和y均为int型变量,x=100,y=200,则以下程序片段的输出结果是。
printf("%d",(x,y));
A.200B.100C.100 200
D.输出格式符不够,输出不确定的值
(8)若执行以下程序时,从键盘上输入9876543210(表示按Enter键),则输出结果是。
#include
main()
{
int a;
float b, 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
(9)下列语句中,符合C语言语法的赋值语句是。
A.a=7+b+c=a+7;B.a=7+b++=a+7;
C.a=7+b,b++,a+7D.a=7+b,c=a+7;
(10)已知字母A的ASCII码为十进制数的65,以下程序的输出结果是。
#include
main()
{
char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A.67,DB.B,CC.C,DD.不确定的值
(11)执行以下程序后,a的值是。
#include
main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5));
}
A.65B.20C.15D.10
(12)以下程序的输出结果是。
#include
main()
{
int a=-1,b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d\n",k,a,b);
}
A.0 0 3B.0 1 2C.1 0 3D.1 1 2
(13)以下程序的输出结果是。
#include
main()
{
char x=040;
printf("%d\n",x=x<<1);
}
A.100B.160C.120D.64
(14)设有定义int x=10,y=3,z;,则语句printf("%d\n",z=(x%y,x/y));的输出结果是。
A.1B.0C.4D.3
(15)以下选项中,不正确的赋值语句是。
A.++t;B.n1=(n2=(n3=0));
C.k=i==j;D.a=b+c=1;
(16)以下程序的输出结果是。
#include
main()
{
int k=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A.k=11,k=12,k=11B.k=11,k=13,k=13
C.k=11,k=013,k=0xbD.k=11,k=13,k=b
(17)若已定义x和y为double型变量,则表达式:x=1,y=x+3/2的值是。
A.1B.2C.2.0D.2.5
(18)若t为double型变量,则表达式t=1,t5,t++的值是。
A.1B.6.0C.2.0D.1.0
(19)若有以下程序片段:
int u=010,v=0x10,w=10;
printf("%d,%d,%d\n",u,v,w);
则输出结果是。
A.8,16,10B.10,10,10C.8,8,10D.8,10,10
(20)若有以下程序片段:
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是。
A.2,MB.3,EC.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
(21)以下程序的输出结果是。
#include
main()
{
unsigned a=32768;
printf("a=%d\n",a);
}
A.a=32768B.a=32767C.a=-32768D.a=-1
(22)以下叙述中,正确的是。
A.输入项可以是一个实型常量,如scakf("%f",3.5);
B.只有格式控制,没有输入项,也能正确输入数据到内存中,如scakf("a=%d,
b=%d");
C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,如scakf
("%4.2f",&f);
D.当输入数据时,必须指明变量地址,如scakf("%f",&f);
(23)设x和y均为int型变量,则语句:x+=y,y=x-y;x-=y;的功能是。
A.把x和y按从大到小的顺序排列
B.把x和y按从小到大的顺序排列
C.无确定结果
D.交换x和y中的值
(24)设有以下定义:
inta=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式;(m=a>b)&&(n=c>d)后,n的值为。
A.1B.2C.3D.0
(25)语句printf("%d",(a=2)&&(b=-2);的输出结果是。
A.无输出B.结果不确定C.-1D.1
(26)以下程序的输出结果是。
#include
main()
{
int k=17;
printf("%d,%o,%x\n",k,k,k);
}
A.17,021,0x11B.17,17,17B.17,0x11,021D.17,21,11
(27)以下程序的输出结果是。
#include
main()
{
double d=3.2;
int x,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
(28)以下程序的输出结果是(小数点后只写一位)。
#include
main()
{
double d;float f;long l;int i;
i=f=1=d=20/3;
printf("%d %ld %f %f \n", i,l,f,d);
}
A.666.06.0B.666.76.7
C.666.06.7D.666.76.0
(29)以下程序的输出结果是。
#include
main()
{
int a=2,c=5;
printf("a=%d,b=%d\n",a,c);
}
A.a=%2,b=%5B.a=2,b=5C.a=d, b=dD.a=%d,b=%d
(30)以下程序的输出结果是。
#include
main()
{
char x=0xFFFF;
printf("%d \n",x--);
}
A.-32767B.FFFEC.-1D.-32768
(31)设有以下程序片段:
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3的值是。
A.0B.0.5C.1D.2
(32)以下程序的输出结果是。
#include
main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
A.34B.42C.43D.33
(33)若变量已被正确定义为float型,要通过语句scanf("%f%f%f ",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是。
A.10B.10.0,22.0,33.0
22
33
C.10.0D.1022
22.033.033
(34)设x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,以下正确的输入语句是。
A.INPUTx、y、z;B.scanf(“%d%d%d”,&x,&y,&z);
C.scanf(“%d%d%d”,x,y,z);D.read(“%d%d%d”,&x,&y,&z);
(35)以下程序的输出结果是。
#include
main()
{
int a=3;
printf("%d\n",(a+(a-=a*a)));
}
A.0B.-12C.1D.3
(36)以下程序的输出结果是。
#include
main()
{
charc='z';
printf("%c",c-25);
}
A.aB.ZC.z-25D.y
(37)若有定义语句int a,b,c,*d=&c;,则能正确从键盘读入三个整数并分别赋给变量a、b、c的语句是。
A.scanf("%d%d%d",&a,&b,d);B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);D.scanf("%d%d%d",a,b,*d);
(38)在16位C语言编译系统中,如果定义语句long a;,则能给a赋予40000的正确语句是。
A.a=20000+20000;B.a=4000*10;
C.a=30000+10000;D.a=4000L*10L;
(39)以下非法的赋值语句是。
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
(40)设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是
。
A.6.500000B.6C.5.500000D.6.000000
(41)已知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);
(42)设有定义语句long x=-123456L;,则以下能够正确输出变量x值的语句是。
A.printf(“x=%d\n”,x);B.printf(“x=%1d\n”,x);
C.printf(“x=%8dL\n”,x);D.printf(“x=%LD\n”,x);
(43)以下程序的输出结果是。
#include
main()
{
int k=2,i=2,m;
m=(k+=i*=k);
printf("%d,%d\n",m,i);
}
A.8,6B.8,3C.6,4D.7,4
(44)以下程序的输出结果是。
#include
int a=3;
main()
{
int s=0;
{
int a=5;
s+=a++;
}
s+=a++;
printf("%d\n",s);
}
A.8B.10C.7D.11
2.填空题
(1)设a、b、c的为整型数,且a=2、b=3、c=4,则执行完以下语句后,a的值是。
a*=16+(b++)-(++c);
(2)若想通过以下输入语句给a赋予1,给b赋予2,则输入数据的形式应该是。
int a,b;
scanf("a=%b,b=%d",&a,&b);
(3)若有定义语句int a=10,b=9,c=8;,执行以下语句后,变量b的值是。
c=(a-=(b-5));
c=(a%11)+(b=3);
(4)以下程序的输出结果是。
#include
main()
{
int a=1,b=2;
a=a+b; b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
(5)以下程序的输出结果是。
#include
main()
{
int a=177;
printf("%o\n",a);
}
(6)以下程序的输出结果是。
#include
main()
{
int a=0;
a+=(a=8);
printf("%d\n",a);
}
(7)以下程序的输出结果是。
#include
main()
{
int x=10,y=20,t=0;
if(x==y)
t=x; x=y; y=t;
printf(“%d,%d \n”,x,y);
}
3.上机操作题
(1)编写一个程序,将3小时45分钟转换成用分钟表示,并输出转换前和转换后的数值。
(2)已知圆柱体横截面圆半径r、圆柱高h,编写一个程序,计算圆周长l、圆面积s和圆柱体体积v,并输出结果。