一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选、多选或未选均无分.
1.下列不属于保留字的是()
A.default
B.register
C.sruct
D.unsign
2.下列不能作为常量的是()
A.0582
B.0xa5
C.’\n’
D.2.5e-2
3.设typedeflongclass;,则class是()
A.整型变量
B.长整型变量
C.长整型数据类型的新标识符
D.新的而非长整型数据类型的标识符
4.设charc=’A’;inti=l,j;,执行j=!c&&i++;后,i和j的值分别是()
A.1和0
B.1和1
C.2和0
D.2和l
5.设inta;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是()
A.1和2
B.2和3
C.3和4
D.4和5
6.下列关于函数定义正确的是()
A.fun(intx,y){intz;returnz;}
B.voidfun(intx,inty){returnx+y;}
C.fun(x,y){intx,y;doublez;z=x+y;returnz;}
D.doublefun(intx,inty){doublez;z=x+y;returnz;)
7.下列用户自定义标识符正确的是()
A.4a
B.b_1
C.-&
D.*p
8.下列程序段中循环体执行的次数是()
intx=-1;
do
{
x=x*x;
}while(!x);
A.0
B.1
C.2
D.无限
9.实现字符串连接的系统函数名是()
A.strcat
B.strcmp
C.strcpy
D.strlen
10.若实参是一个数组名,在调用函数时,实参向形参传递的是()
A.数组的长度
B.数组的首地址
C.数组每个元素的值
D.数组每个元素的地址
11.设inta[][4]={l,2,3,4,5,6,7};,则a[1][3]的值是()
B.3
C.4
D.7
12.若定义一个只限本源文件使用的全局变量,则该变量的存储类别是()
A.extern
C.static
D.auto
13.设chark=’a’;floatj=2.0;,执行k+=5/j;printf("%c",k);后,输出结果是()
A.a
B.b
C.c
D.d
14.下列程序段正确的是()
A.chars[]={‘xyz’};
scanf(‘‘%s",s);
B.float*p,i;
p=*p+i;
C.chars[5]=‘word’;
puts(s);
D.inta[5]={0},*p=a;
*p=*(p+1);
15.关于编译预处理命令,叙述正确的是()
A.预处理命令都以"#"开头
B.预处理命令必须位于程序的首部
C.预处理命令只能实现宏定义和条件编译的功能
D.每个程序必须在开头使用预处理命令#include
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案.错填、不填均无分.
16.设floata,b,c;,若a、b和c分别为三角形的三条边长,它们"能构成等边三角形"的逻辑表达式是____________.
17.设inti;floatf=3.14;,执行i=(int)f;后,变量f的值是____________.
l8.设chars[]="\t\’Name\\Address\n";,s的长度是____________.
19.执行printf("%d\n",3&&2&5);后的结果是____________.
20.算术运算符的优先级比关系运算符的优先级____________.
21.单目运算符的结合性是____________.
22.设intx=1,y=3,z;,执行z=x>y++x:y++;后,z的值是____________.
23.设intm=3;floatn=12.6;charch=’a’;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a<回车换行>,则scanf语句应是____________.
24.若定义函数时类型缺省,则该函数默认的类型是____________.
25.设inta[5]={l,3,5,7,9},*p=&a[2];,则++(*p)的值是____________.
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到各题右侧的空白处.
26.
voidmain()
intcolor=2;
switch(color)
casel:printf("red\n");break;
case2:printf("yellow\n");
case3:printf("blue\n");
}
27.
intm,n;
for(m=1;m<=3;m++)
for(n=1;n<=2*m-l;n++)printf"*");
printf("\n");
28.
floatx=3.6;
inti;
i=x;
printf(‘x=%5.3f,i=%d\n",x,i);
29.
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
for(i=0;i<=1;i++)
for(j=0;j<=2;j++)
{printf("%5d",a[i][j]);
b[j][i]=a[i][j];
printf(‘‘\n");
printf("arrayb:\n");
for(i=0;i<=2;i++)
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行.
30.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩.
#defineN10
structstudent
charname[20];
charsex;
intscore;
}stu[N];
floataver,sum=0;
for(i=0;i
{scanf("%d,%c%s",_________);/*第一空*/
sum=sum+_________;/*第二空*/
aver=___________;/*第三空*/
printf("aver=%6.2f\n",aver);
31.从键盘输入一串字符(以""作为结束标志),保存到文本文件text.txt中.
#include"stdio.h"
FILE_______;/*第一空*/
charch;
if((fp=fopen("text.txt’’,_______))==NULL)exit(0);/*第二空*/
while((ch=getchar())!=’’)fpute(ch,_________);/*第三空*/
fclose(fp);
32.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄.
递归公式如下:
age(n)=
intage(intn)
if(n==1)return(________);/*第一空*/
elsereturn(_________);/*第二空*/
printf(‘‘%d\n",_________);/*第三空*/
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.从键盘输入三个整数a、b和c,按照由小到大的顺序输出.
34.(1)编写一函数,将指针变量pl和p2所指向的整数值交换.
其中:函数头是voidswap(int*pl,int*p2)
(2)编写一个主程序,从键盘输入两个整数,调用上述函数实现两个数据的交换并输出.