printf(M%d\nM,z);
A.1B.2
C.5D.6
25.设staticinta[3]={l,2,3};int*p[]={&a[0],&a[l],&a[2]};
则与数组元素a[l]等价的是()
A.*p[l]B・p[l]
C.*p+lD.p+1
26.设struct
{charname[10];
intage;
}stu[2]={{”Tom",25},{〃Mary",26}}?
p=stu;
则执行语句printf("%s%d\rT,p->name,stu[1].age);后输出结果是()
A.Tom25B・Tom26
C.Mary25D.Mary26
27.设typedefdoubleDB;,则与DBu[5];的等价形式是()
A.doubledb[5];B・doubleDB[5];
C.doubleu;D.doubleu[5];
2&设charch,str[4],*strp;,则正确的赋值语句是()
A.ch=”MBA”;B.str=nMBAn;
C.stip=”MBA“;D.*strp=”MBA”;
29.设typedefchar*POINT;
POINTp,q[3],*r;,则p、q和1•分别是字符型的()
A.变量、一维数组和指针变量
B.变量、二维数组和指针变量
C.指针变量、一维数组指针和二级指针变量
D.指针变量、一维指针数组和二级指针变量
30.若变量定义时未初始化,则其值不确定的是()
■
A.静态全局变量B.局部变量
C.静态局部变量D.全局变量
31.设struct{inta;charb;}Q,*p=&Q;,则够谡的表达式是()
B.
(*p).b
D.p->a
32.在某文件中,若全局变量与局部变量同名,贝!
)()
A.视为同一个变量B.变量作用域不确定
C.不允许D.允许33•设宏定义#defineP(x)x/x
则执行语句printf(u%d\nn,P(4+6));后的输出结果是()
A.lB.8.5
C.11
D.11.5
34•屈于C语言基本数据类型的是(B)
A.指针型
C.数组型
B.无符号整型
D.结构型
35.C语言的长整型数值在计算机中占用的字节个数是()
A.1
C.3
36.C语言屮,
A.1
C.4
B.2
D.4
”\x3d”在内存屮占用的字节数是(B)
B.2
D.5
37•设intx;则执行printf(n%x\nH^xAx);的结果是()
A.OB.1
C.ffD.ffff
38.对于while语句,错误的说法是()
•••
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循坏体有可能一次也不执行
D.循环体中可以包含若干条语句
39.设inta=9,b=20;则printf(,'%d,%d,%d\n,,,a+b,a—的输出结果是()
C、28,10,19
D、30,10,20
A、2&9,19B、29,9,20
40.执行下列语句
inta=8,b=7,c=6;
if(ac){a=c;c=b;}printf("%d,%d,%d\n",a,b,c);
后输出的结果是()
A.6,7,7B.6,7,8
C.8,7,6D.8,7,8
41.设staticcharx[]=,,12345,,;chary[;那么()
A、x数组的长度等于y数组的长度
B、x数组的长度大于y数组的氏度
C、x数组的长度少于y数组的长度
D、x数组与y数组的存储区域相同
42.设inti,x[3][3]={l,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;i<3;i++)
printfC%d",x[i][2-i]);的输出结果是()
A.l47
B.l59
C.357D.369
43.设intb[]={l,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为()
A.lB.2
C.3D.4
44.设inta,*p;则语句p=&a;中的运算符“&”的含义是()
A.位与运算B.逻辑与运算
C.取指针内容D.取变量地址
45.若函数能被其它编译单位引用,那么函数定义时的存储类型应选用()
A.autoB.static
C.externD.register
46.下面函数定义有错误的是()
•••
A・fl(xl,x2)
intxl,x2;
intxl;intx2;
{函数体}
{函数体}
47.C语言屮计算a?
正确的表达是(
)
{函数体}
{函数体}
C.fl(intx1,x2)D.fl(intx1Jntx2)
A.aA3
C.a**3
4&下列定义正确的是(
A.anumt={a,b}x;
C.anum{'+T—'}x;
B.pow(a,3)
D.power(a,3)
)
B.enumt{l,2}x;
D.cnumt{a,b}x;
49•设有定义:
unionu{inta[4];floatb[3]};
charc[16];}aa;
则printf(/,%d\n",sizeof(aa));的输出是()
A.32
B.16
C.12D.8
50.在下列有关宏替换的叙述中,正确的说法是()
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
51•下列程序的运行结果是()
#defineA5
#defineBA+l
main()
{inta;
a=B;
printf("%d\n,fa—);
}
A.6B.5C.4D•出错
52.设有如下定义:
structsk
{inta;
floatb;
{data;int*p;
若要使p指向data中的a成员,正确的赋值语句是()
A.p=&a;B・p=data.a;C・p=&data.a;D.*p=data.a;
53.下列四组选项中,均是合法转义字符的选项是()
A.'n‘\\’B.•Mil1‘\017‘
C.‘\01&'\f'\x4b,C.'\\0''\ior'\xaf
54.设intx=0,*px;,则经过()后,*px的值为0。
A.px=&x;B.*px=&x;C・px=x;D.constint*px=&x;
55.以下程序的输出结果是()
#includevoidmain(){
printf(H\n*sl=%15s*M,HchinabejingM);printf(,,\n*s2=%-5s*,,,"chi");
A.
*sl=chinabejing*
s2=**chi*
c.
B・
*sl=chinabejing
*s2=*chi*
D・
sl=chinabcjing*
*s2=*chi*
*sl=chinabcjing*
*s2=*chi*
56.有关以下函数的哪些说法是正确的()
intadd(intx;inty)
{intz;z=x+y;
returnz;
}
A.此函数能单独运行
C.此函数通过main函数能调用
57.设有如下枚举类型定义:
B.此函数存在语法错误
D.此函数没有语法错误
enumnumber{first=1,second,ten=l,eleven};
枚举项eleven的值为()
A.0B.1C.2
58.下面的程序()
A、输出的是1B、输出的是1和・2
D.4
C、输出的是3和0
D、是死循环
main()
{intx=3;
do{
printf(”%d\n“,x・=2);
}while(!
(--x));
}
59.以下叙述中不正确的是()
A、预处理命令行都必须以#号开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、以下是正确的宏定义
#defineIBM_PC(注:
此处的_表示下划线)
60.sizcof(float)是()
A、一个双精度型表达式B、一个整型表达式
C、一种函数调用D、一个不合法的表达式
61.当运行以下程序时,从键盘输入:
AhaMA_Aha(_代表空格,代表回车),则下面程序的运行结果是()
#include
voidmain()
{chars[80],c=,a,;
inti=0;
scanf(”%s“,s);
whilc(s[i]!
='\0,)
{if(s[i]==c)s[i]=s[i]-32;
i++;
}
puts(s);
}
A、ahAMaB、AhAMAC、AhAMaahAD、ahAMaahA
62.以下scanf函数调用语句中对结构体变量成员的不正确引用是()
structpupil
{charname[20];
intage;
intsex;
}pup[5],*p;
p=pup;
A、scanf(H%s",pup[O].name);
B、scanf("%dn,&pup[O].agc);
C、scanf(”%d”,&(p・>sex));
D、scanf("%d'\p->age);
63.下面程序的输出是()
^defineSUB(X,Y)(X)*Y
main()
{inta=3,b=4;
A、12
C、16D.20
printf(“%d\n",SUB(a++,b++));
2.填空题
1.一个字符型变量所占内存的字节数是O
2.写出公式丄L+卫对应的C语言表达式。
25x
\/
3.执行语句printf(',%s\nM,MWorld\0Wide\0Webu);后的输出结果是。
4.设inta,b=5;,则执行表达式a=b-2==3后a的值是。
5.设chars[20]=nMyn;,则执行strcat(s,HSun!
n)后s的内容是。
6.设floatx=23.65;贝!
J执行语句printfC%d\n",(int)(x+0.5));后输出结是。
7.若定义函数char*fun(){-},则该函数的返回值类型是字符指针。
8.设intx=-9,y;,则执行y=x>=0?
x:
・x;后y的值是。
9.若函数调用语句为f(a,b,f(a+b,a-b,b));则函数f的参数个数是。
10.设inta=10;,则执行语句a+=a-=a+a;后a的值是。
11.在C语言中,预处理功能主要包括:
、文件包含和条件编译。
12.表达式4&5・3&&5的值是。
13.设intj=5;,则执行语句后j的值是。
14.设inta,b=2,c=3;执行表达式a=(b>c)?
(b+l):
(c+2),3
后a的值是。
15.设inta[3][2]={2,4,6,8,10};则*(a[1]+1)的值是。
16.在C语言中,++运算符的结合性是o
17.在C语言中,若函数的形参是整型变量,而对应的实参是整型数,则形实结合的方式是传递。
1&在C语言中,数组名除名字的功能之外还代表数组的o
19.设enumen{a,b=3,c=4};,则a的序值是。
20.continue语句可以出现在for>while和语句中。
21.设inty;执行表达式(y=4)||(y=5)||(y=6)后,y的值是。
22.设charch^A1;贝0printf(”%c“,(ch>='A'&&chv='Z')?
ch+32:
ch);的值是。
23.结构化程序设计的三种基本结构是:
选择结构、循环结构和o
24.下列程序
intx=3;
do{printf(n%d",-x);}while(!
x);
循环执行的次数是O
25.在C语言屮,一个二维数组可以看成若干个数组。
26.设inta⑶[4]={{1,3,5,7},{2,4,6,8}};则*(*a+l)的值为。
27.若函数定义为
intdata()
{floatx=9.9;
return(x);
}
则函数返回的值是。
28.设structstudent
{intno;charnamc[12];
floatscore[3];
}sl,*p=&sl;.
用指针变量p给si的成员no赋值1234的方法是。
29.已有定义inti;floatx;为将・10赋给i,410.34赋给x,scanf函数调用语句:
scanf(”%o%e",&i,&x);数据的输入形式是。
30.右移运算:
inta=7,c=a»l;变量c的值是。
31.存储”ch\\\i•“需要个字节。
32.for(a=2;a==l;)printf("%d",a・・);循环体执行的次数是。
33.若ch为char*类型,则sizeof(ch)的值为。
34.写出语句printf(n%d,%o,%xn,0x12,12,012);的输出结果,,
35.表达式98&&8&&31&6的值为。
36.下列程序段的输出是。
printf(M%o\nH,010«lAl);
37.表达式〜3&(2&1人4)的值为。
38.对于以下递归函数f,调用f(3)的返回值是。
f(intn)
{return((n<=0)?
n:
f(n-l)+f(n-2));
三、程序分析题
写出程序输出结果。
1.
voidmain()
{inta=l,b=2,c=3;
if(a<=c)if(b==c)printf(,,a=%d\nn,a);
elseprintf(”b=%d\n”,b);
printf("c=%d\nn,c);
}
2.
intf(intn)
{staticintm=5;
return++m+n;
}
voidmain()
{inti;
for(i=0;i<3;i++)printfC%5d",f(i));printfC\n〃);
}
3.
#defineSIZE4
voidmain()
{intn[SIZE]={8,3,4,l};
inti,j;
for(i=O;ivSIZE;i++){printf(”%d”,n[i]);
for(j=l;j<=n[i];j++)printf("*");
printf(M\nM);
4.
intfm(inta,intb)
{if(b==l)returna;
elsereturna+fm(a,b・1);
}
voidmain()
{
printfC%d\n〃,fm(4,3));
5.
voidmain()
{inta=10,b=20,c=30;
if(a>b)if(a>c)printf(”a=%d\n”,a);
elseprintf(nb=%d\nM,b);
printf(”c=%d\n”,c);
}
6.
SUM(intn)
{if(n==l)return1;
elsereturnn*n+SUM(n-1);
}
voidmain()
{printf(,'SUM=%d\n',,SUM(5));
}
7.
intfuc(intj)
{staticintk;
return(++k+j);
}
voidmain()
{intj;
for(j=l;j<=3;j++)printf(n%5dn,fuc(10));
printf(M\nn);
}
&
struct
{inta,b;
union{intM,N;charch[10];}in;
}Q?
P=&Q;
main()
{Q.a=3;Q.b=6;
Q.in.M=(*p).a+(*p).b;Q.in.N=p->a*p->b;
printf("%d,%d,%d\n",sizeof(Q.in),Q.in.M,Q.in.N);}
intfun(intx)
inty=0;
staticintz=3;
z++;++y;
return(x+y+z);
}
voidmain()
{
inti,x=2;
for(i=0;i<2;i++)
printf(n%5d",fun(x++));
}
10.
voidmain()
{
ints=0
for(i=l;;i++)
{
if(s>50)break;
if(i%2==0)s+=i;
}
printf(Mi=%d,s=%d\n",i,s);
}
11.
intgcd(intmjntn)
{if(m==n)returnm;
elseif(m>n)returngcd(m,n);
elsereturngcd(m,n-m);
}
voidmain()
{
printf(wGcd=%d\n,r,gcd(24,36));
}
12.
#include
voidmain()
{inti=0;
charc,s[]=”SABC”;
while(c=s[i])
switch(c)caseA:
i++;bi・eak;
case'B‘汁+i;
default:
putchar(c);i++;
}
putcharC*1);
}
}
13.
#includc
intal=300,a2=400;
voidsubl(intx.inty)
{al=x;
x=y;
y=al;
}
voidmain()
{inta3=l00,a4=200;
subl(a3,a4);
subl(al,a2);
printf("%d,%d,%d,%d\nn,a1,a2,a3,a4);
14.
structprob
{char*a;
intb;
}x[]={MZhangSan'1,19,"LiSi”,21,“WangWu”,20};
voidmain()
{inti,ml,m2;
ml=m2=x[0].