28.设x和y为浮点型变量,则以下()语句是正确的赋值语句。
A. x=&yB.x*x=yC.x=x+10*yD.*x=y+2
29.设inta=3;下列哪一个表达式的值等于0()。
A.aB.!
a||aC.a>=aD.a%=a
30.定义如下变量和数组,则下面程序段落的输出结果是()。
inti;intx[3][3]={0,1,2,3,4,5,6,7,8};
for(i=0;i<3;i++)
printf(“%d”,x[i][2-i]);
A.246 B.036 C.048 D.258
31.有下列程序段落:
inti,a[5];
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
若要使数组元素的值分别为1,2,3,4,5,应从键盘输入()。
A.1,2,3,4,5↙ B.12345↙
C.12345↙ D.1;2;3;4;5↙
32.数组名作为函数参数进行传递时,形参获得的是()。
A.该数组第一个元素的值B.该数组所有元素的值
C.该数组所有元素的地址D.该数组的首地址
33.设有如下宏定义:
#defineA3+2
#defineBA*A
则表达式“B*B”的值为()。
A.23 B.5C.25 D.625
34.在下列说明中,结构类型变量x所占用内存字节数为()。
structexp
{inti;
floatj;
doublek;
}x;
A.8个B.7个C.14个D.随计算机而定
35.设有定义:
intk=3,*p=&k;则表达式*p的值是()。
A.1B.0C.2D.3
36.下列程序的输出结果为()。
main()
{inti=3,b;
b=(i--)+(i--);
printf(“%d”,b);
}
A.6B.2C.3D.4
37.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是()。
A.c=b=aB.(a=c)||(b=c)
C.a=c=bD.(a=c)&&(b=c)
38.下列叙述不正确的是()。
A.函数定义可以嵌套B.宏定义可以嵌套
C.函数调用可以嵌套D.循环结构可以嵌套
39.设char*p=“abcde”,则printf(“%s”,p)的输出结果为()。
A.cB.cdeC.bD.abcde
40.p1,p2为指向浮点的指针变量,下列运算没有意义的是()。
A.*p1-*p2B.p1++
C.*p1+*p2D.p1+p2
41.在c语言中,运算对象的逻辑值“真”用()表示。
A.falseB.非0C.0D.负数
42.已知函数原型声明为:
char*www(chara,charb);该函数的类型为()。
A.指向字符型的指针B.字符型
C.整型D.指向整型的指针
43.设int类型的数据长度为2字节,则该类型数据的取值范围是()。
A.0至65536B.0至65535
C.-32767至32768D.-32768至32767
44.inta,*p,**w;p=&a,w=&p;取a的值的表达式为()。
A.&aB.&*p
C.**pD.**w
45.C语言程序的基本单位是()。
A.函数B.标识符
C.表达式D.语句
46.判断字符型变量ch的值是否为大写英文字母的表达式为()。
A.‘A’<=ch<=’Z’B.ch>=’A’&&ch<=’Z’
C.ch>’a’&&ch<=’z’D.ch>=’A’||ch<=’Z’
47.已知w=3,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)||(b=y>z);后,a,b的值为()。
A.1和1B.0和0C.1和2D.4和2
48.若有定义语句inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;值为8的数组元素的正确表示为():
A.a[8]B.a+7C.p+7D.*(p+7)
49.下列程序运行结果是()。
#defineA2
#defineAAA+A/2
voidmain(void)
{
printf(“%d,”,AA);
printf(“%d\n”,5*AA);
}
A.3,11B.3,15C.2,10D.8,40
50.若有如下定义,则对ex中的a成员的正确引用是()。
structsk{inta;floatb;}ex,*p=&ex;
A.(*p).ex.aB.p->aC.p->ex..aD.p.ex.a
二、填空题
1.在内存中存储一个字符‘a’占用______个字节,
而存储字符串”abcdef”则占用________个字节。
2.表达式4/5的值为________。
3.设x=4.5,a=7,y=3.4,表达式x+a%3*(int)(x+y)%2/4的值为_____。
4.设a=14,执行a+=a-=a*=a后,a=___________。
5.设x=y=z=6,执行x=(y>z)?
x+2:
x-2;后,x=__________。
6.getchar()函数用于输入______________,而gets()函数则用于输入______________。
7.设有定义语句:
charww[20]=”\t\\wab\n”;则表达式:
strlen(ww)的值是__________。
8.设有定义语句:
charstr[7]=”abcdef”,则数组元素str[2]中的字符是______,数组元素str[6]中的字符是__________。
9.函数中的形参和调用时的实参都是变量时,传递方式为________;
都是数组名时,传递方式为_________。
10.设有char*p=”12345”,则printf(“%s”,p)的输出是_______;而printf(“%c”,*p)的输出则是_________。
11.若s是int型变量,且s=7,则表达式:
s/2+(s+1)%2的值为_________。
12.C语言中,以___打头的int常数是十六进制。
13.有说明语句chars=‘\102’;S包含了_____个字符。
14.有数学表达式sinx+
-6x,
写出其对应的C语言的表达式_________________。
15.有定义语句:
inta[][3]={{0},{1},{2}};则数组元素a[1][2]的值是。
16.若程序中使用了函数strlen(),则必须包含的头文件名为____________。
17.有如下程序,该程序的输出结果是。
voidmain(void)
{
intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++,b++;
}
printf("a=%d,b=%d\n",a,b);
18.若a函数中调用了b函数,而b函数又调用了a函数,
这种调用称为_______调用。
19.函数调用时,若形参和实参均为数组名时,传递方式为________。
20.若有以下定义语句,则输出的结果是_____________。
chars1[]=“abcdef”,*s2=“1234”;
printf(“%d\n”,strlen(strcpy(s1,s2)));
21.若宏定义为:
#definey(x)2+x
则表达式a=4+3*y
(2)的值为。
22.设有以下语句:
staticinta[4][2]={1,2,3,4,5,6,7,8};
int(*p)[2];
p=a;
则*(*(p+2)+1)的值为。
23.在turboC中,int型数据占2字节,则定义
structnode
{
charx[10];
inty;
union{floata;
longb;
}ab;
}t;
后,sizeof(t)=。
24.设有一个名为“ww1.c”的C程序,
其主函数为main(intargc,char*argv[]),如果在执行时,输入的命令行为:
ww1aabbcc↙
则形式参数argc的值是______。
25.执行下列程序段后,(**q-1)的值为____________。
inta,*p,**q;
a=100;
p=&a;q=&p;
26.C语言源程序中主函数名由系统规定为__________,程序员是不能改变的。
27.有数学表达式:
-3,其C语言表达式为________________________。
28.已知函数定义为:
intstat(inta,float*p)
{......}
则此函数的两个参数类型分别是、。
29.设有数组a[10];则首地址可以写成_________,
数组元素a[3]的地址可以写成__________。
30.要使以下程序段中的函数调用语句printf(“***”);执行10次,应在①处填入整数___________。
for(i=1;i<=___①___;i+=2)printf(“***”);
31.用只读方式打开e:
\20051234目录下的名为“aa.dat”的文件,正确的打开
语句为FILE*fp;fp=______________________。
32.判断两个浮点型变量x和y是否相等一般用:
if(<1e-6)…。
33.已知赋值语句zhang.year=1985;可判断zhang是类型的变量。
三、程序分析题
1.下面程序的运行结果为
#include
voidmain()
{inta,b,c,d;
a=4;b=6;
c=++a;
d=(cprintf("%d,%d,%d,%d",a,b,c,d);
}
2.下面程序的运行结果为
#include
voidfun(intx,inty)
{
inta,b;
floatd;
a=x+14;
b=y-4;
d=(float)(b/a);
printf("d=%f\n",d);
}
voidmain(void)
{
intb=9,a=6,c;
c=b/a;
printf("c=%d\n",c);
fun(a,b);
}
3.设从键盘上输入HelloWorld!
下面程序的运行结果为
#include
voidmain(void)
{charss[20];
inti;
gets(ss);
for(i=0;ss[i]!
='\0';i++)
if(ss[i]>='A'&&ss[i]<='Z')
ss[i]=ss[i]+32;
puts(ss);
}
4.下面程序的运行结果为
#include
inti=1;
voidother(void);
voidmain(void)
{intb=-10;
printf("b=%d\n",b);
other();
i=i+10;
other();}
voidother()
{staticintb;
i=i+32;
printf("i=%d,b=%d\n",i,b);
b=i;
}
5.下面程序的运行结果为
#include
voidmain(void)
{inta[10]={78,89,98,66,54,76,45,82,62,95};
intka,ki,j;
ka=ki=0;
for(j=1;j<10;j++)
{if(a[ki]>a[j])ki=j;
if(a[ka]}
printf(“%d,%d\n%d,%d\n”,ki,a[ki],ka,a[ka]);
}
6.运行时假定键盘输入数据为:
12345678910
下面程序的运行结果为
#include
voidmain(void)
{inti,a[10];
int*p;
p=a;
for(i=0;i<10;i++)
scanf(“%d”,p++);
for(p=a;pif(*p%2)printf(“%3d”,*p);
}
7.下面程序的运行结果为(要求注明输出格式!
)
#include
voidmain(void)
{
inta=10,b=11;
intc=0,d=0;
printf("%5d,%5d\n",a++,--b);
printf("%5d",a&&b);
printf("%5d",!
a);
printf("%d\n",!
c);
printf("%5d",d+=a);
}
8.下面程序的运行结果为
#include
voidmain(void)
{
inti,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++)
printf(“%d+%d=%d”,i,j,i+j);
printf(“\n”);
}
}
9.下面程序的运行结果为
#include
inta=1,b;
voidfun(void);
voidmain(void)
{staticintc;
intb=-5;
printf("a=%d,b=%d,c=%d\n",a,b,c);
fun();
a+=1;c+=2;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
voidfun()
{intc=10;
a+=1;b+=2;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
10.下面程序的运行结果为
#include
main()
{
charstr[5],*p;
inti;
for(i=0;i<4;i++)
str[i]=’A’+i;
str[i]='\0';
p=str;
while(p{printf("%s\n",p);
p++;
}
}
11.下面程序的运行结果为
#include
voidmain(void)
{structstud
{
intno;
char*name;
floatscore;
}stu1,stu2;
stu1.no=1001;
stu1.name="Wangyong";
printf("Inputscore:
");scanf("%f",&stu1.score);
stu2=stu1;
printf("No:
%d\nName:
%s\nScore:
%5.1f\n",
stu2.