1.选择题
(1)以下程序的输出结果是 。
#include <stdio.h>
#include <math.h>
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.000000 B.015.400000 C.13.700000 D.14.900000
(2)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=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
(3)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A.6,1 B.2,1 C.6,0 D.2,0
(4)C语言程序的基本单位是 。
A.程序行 B.语句 C.函数 D.字符
(5)合法的C语言赋值语句是 。
A.a=b=58 B.i++; C.a=58,b=58 D.k=int(a+b);
(6)设在程序中,a、b、c均被定义成整型变量,并且已赋整数大于1的整数值,则以下表达式中,正确的是 。
A.1/a*b*c B.1/(a*b*c) C.1/a/b/(float)c D.1.0/a/b/c
(7)若x和y均为int型变量,x=100,y=200,则以下程序片段的输出结果是 。
printf("%d",(x,y));
A.200 B.100 C.100 200
D.输出格式符不够,输出不确定的值
(8)若执行以下程序时,从键盘上输入9876543210<CR>(<CR>表示按Enter键),则输出结果是 。
#include <stdio.h>
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=4321 B.a=10, b=432, c=8765
C.a=98, b=765.000000, c=4321.000000 D.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+7 D.a=7+b,c=a+7;
(10)已知字母A的ASCII码为十进制数的65,以下程序的输出结果是 。
#include <stdio.h>
main()
{
char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A.67,D B.B,C C.C,D D.不确定的值
(11)执行以下程序后,a的值是 。
#include <stdio.h>
main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5));
}
A.65 B.20 C.15 D.10
(12)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=-1,b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d\n",k,a,b);
}
A.0 0 3 B.0 1 2 C.1 0 3 D.1 1 2
(13)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char x=040;
printf("%d\n",x=x<<1);
}
A.100 B.160 C.120 D.64
(14)设有定义int x=10,y=3,z;,则语句printf("%d\n",z=(x%y,x/y));的输出结果是 。
A.1 B.0 C.4 D.3
(15)以下选项中,不正确的赋值语句是 。
A.++t; B.n1=(n2=(n3=0));
C.k=i==j; D.a=b+c=1;
(16)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int k=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A.k=11,k=12,k=11 B.k=11,k=13,k=13
C.k=11,k=013,k=0xb D.k=11,k=13,k=b
(17)若已定义x和y为double型变量,则表达式:x=1,y=x+3/2的值是 。
A.1 B.2 C.2.0 D.2.5
(18)若t为double型变量,则表达式t=1,t5,t++的值是 。
A.1 B.6.0 C.2.0 D.1.0
(19)若有以下程序片段:
int u=010,v=0x10,w=10;
printf("%d,%d,%d\n",u,v,w);
则输出结果是 。
A.8,16,10 B.10,10,10 C.8,8,10 D.8,10,10
(20)若有以下程序片段:
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是 。
A.2,M B.3,E C.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
(21)以下程序的输出结果是 。
#include <stdio.h>
main()
{
unsigned a=32768;
printf("a=%d\n",a);
}
A.a=32768 B.a=32767 C.a=-32768 D.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)设有以下定义:
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式;(m=a>b)&&(n=c>d)后,n的值为 。
A.1 B.2 C.3 D.0
(25)语句printf("%d",(a=2)&&(b=-2);的输出结果是 。
A.无输出 B.结果不确定 C.-1 D.1
(26)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int k=17;
printf("%d,%o,%x\n",k,k,k);
}
A.17,021,0x11 B.17,17,17 B.17,0x11,021 D.17,21,11
(27)以下程序的输出结果是 。
#include <stdio.h>
main()
{
double d=3.2;
int x,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
(28)以下程序的输出结果是(小数点后只写一位) 。
#include <stdio.h>
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.6 6 6.0 6.0 B.6 6 6.7 6.7
C.6 6 6.0 6.7 D.6 6 6.7 6.0
(29)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=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
(30)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char x=0xFFFF;
printf("%d \n",x--);
}
A.-32767 B.FFFE C.-1 D.-32768
(31)设有以下程序片段:
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3的值是 。
A.0 B.0.5 C.1 D.2
(32)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int y=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);
}
A.3 4 B.4 2 C.4 3 D.3 3
(33)若变量已被正确定义为float型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是 。
A.10<CR> B.10.0,22.0,33.0<CR>
22<CR>
33<CR>
C.10.0<CR> D.10 22<CR>
22.0 33.0<CR> 33<CR>
(34)设x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,以下正确的输入语句是 。
A.INPUT x、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 <stdio.h>
main()
{
int a=3;
printf("%d\n",(a+(a-=a*a)));
}
A.0 B.-12 C.1 D.3
(36)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char c='z';
printf("%c",c-25);
}
A.a B.Z C.z-25 D.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.500000 B.6 C.5.500000 D.6.000000
(41)已知i、j、k均为int型变量,若从键盘上输入1,2,3<CR>,使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 <stdio.h>
main()
{
int k=2,i=2,m;
m=(k+=i*=k);
printf("%d,%d\n",m,i);
}
A.8,6 B.8,3 C.6,4 D.7,4
(44)以下程序的输出结果是 。
#include <stdio.h>
int a=3;
main()
{
int s=0;
{
int a=5;
s+=a++;
}
s+=a++;
printf("%d\n",s);
}
A.8 B.10 C.7 D.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 <stdio.h>
main()
{
int a=1,b=2;
a=a+b; b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
(5)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=177;
printf("%o\n",a);
}
(6)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=0;
a+=(a=8);
printf("%d\n",a);
}
(7)以下程序的输出结果是 。
#include <stdio.h>
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,并输出结果。