k:
c
c:
a);
A.1 B.2 C.3 D.4
6、关于for(表达式1;表达式2;表达式3),叙述正确的是(D)
A.表达式1不可以缺省 B.表达式2不可以缺省
C.表达式3不可以缺省 D.三个表达式都可以缺省
7、设int*p[4];,则标识符p是(B)
A.整型数组名 B.指针数组名 C.指针函数名 D.指向整型变量的指针
8、在循环结构中,continue语句的作用是(C)
A.继续执行本次循环 B.提前退出多重循环
C.提前结束本次循环 D.提前退出本重循环
9、数组定义及初始化正确的是(D)
A.chara[5]={}; B.inta[5]={0,1,2,3,4,5};
C.chara={"string"}; D.chara[]={'0','1','2','3','4','5'};
10、设intm;,与while(!
m)等价的是(C)
A.while(m!
=0) B.while(m=1) C.While(m=0) D.while(m!
=1)
11、设char*sl="12345",*s2="1234";,执行语句printf("%d\n",strlen(strcpy(sl,s2)));后的输出结果是(A)
A.4 B.5 C.9 D.10
12、下列不属于C语言数据类型的保留字是(A)
A.real B.void C.float D.double
13、设inti,j=7,*p=&j;,与赋值语句i=j;等价的是(D)
A.i=&p; B.p=*&j; C.p=&j; D.i=*p:
14、正确表示数学关系式x≥y≥z的C语言表达式是(B)
A.x>=y>=z B.(x>=y)&&(y>=z) C.(x>=y)&(y>=z) D.(x>=y)||(y>=z)
15、设structstudent{charname[10];charsex;}stu;,则sizeof(stu)的值是(C)
A.2 B.10 C.11 D.12
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
16、设inta=2,b=3;floatx=3.5,y=2.5;,表达式(float)(a+b)/2+(int)x%(int)y的值是_3.5_。
17、设inti;,语句for(i=l;i=10;i++)++i;循环的次数是_0_。
18、数组名作为实参传给被调用的函数时,形参获得的是_数组元素的首地址_。
19、设intx=9;,执行语句printf("%d\n",x<<2);后的结果是_36_。
20、设charc[5]={'c','d','\0','e','\0'};,执行语句printf("%s\n”,c);后的结果是_cd_。
21、设inta[2][3],p;,将数组a的最后一个元素赋值给变量P的正确语句是_P=a[1][2]_。
22、字符串"A"在内存中占用的字节数是_2_。
23、设intx=l,y=1;,则执行表达式--x&&y++后,y的值是_1_。
24、函数的自我调用被称为_递归_调用。
25、设charw;intx;floaty;doublez;,则表达式w*x+z-y的值的类型是_double_。
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到各题右侧的空白处。
26、voidmain()
{intn=9;
if(n++elseprintf("%d\n",n--);
}
运行结果:
10
27、voidfun(intx,inty,intz)
{z=x*x+y*y;
printf("%d\n",z);
}
voidmain()
{inta=31;
fun(5,2,a);
printf("%d\n",a);
}
运行结果:
29\n31
28、voidmain()
{inta[]={O,9,8,7,6,5,4,3,2,1},*p=a;
printf("%d,%d\n",*p+9,*(p+9));
}
运行结果:
9,1
29、func(inta)
{staticintm=O;
m+=a;
printf("%d\n",m);
}
voidmain()
{intk=4;
func(k);func(k);
}
运行结果:
4\n8
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30、求数组a的所有元素之和。
#defineN3
voidmain()
{inti,j,sum=0;
inta[N][N]={2,4,6,8,10,12,14,16,18};
for(i=0;ifor(j=O;______j++)/*第二空*/
sum=sum+______;/*第三空*/
printf("sum=%d\n",sum);
}
第一空:
i++;第二空:
ja[i][j]
31、键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。
#include
voidmain()
{inti,j,len;
chars[81],t;
gets(s);
puts(s);
len=strlen(s);
for(i=O;ifor(j=i+1;jif(______)/*第二空*/
{t=s[i];s[i]=s[j];______;}/*第三空*/
puts(s);
}
第一空:
j++;第二空:
s[i]>s[j];第三空:
s[j]=t
32、输入一个正整数,若是素数(或称质数)则输出“Yes”,否则输出“No”。
voidmain()
{inti,n;
scanf("%d",______);/*第一空*/
printf("%d",n);
for(i=2;iif(n%i==0)______;/*第二空*/
if(______)printf("Yes\n");/*第三空*/
elseprintf(”No\n”);
}
第一空:
&n;第二空:
break;第三空:
i>n+1
五、程序设计题(本大题共2小题,每小题8分,共16分)
33、从键盘输入一串字符(!
作为结束标志),保存到文件“user、dat”中。
解题思路:
按照文件读取的方法操作即可,步骤1:
定义FILE的指针变量保存打开文件时的指针,步骤2:
使用fopen打开文件,步骤3:
循环读取输入的一串字符并依次写入到文件中,步骤4:
关闭文件。
代码如下:
#include
#include
voidmain()
{charch;
FILE*fp;/*定义FILE的指针变量*/
if((fp=fopen("user.bat","wb"))==NULL)/*使用fopen打开文件并判断是否打开成功*/
{printf("Cannotopenfile!
\n");
exit(0);
}
while((ch=getchar())!
='!
')/*循环读取输入的一串字符并写入到文件中*/
fputc(ch,fp);
fclose(fp);/*关闭文件*/
}
34、某幼儿园入园分班规定如下:
输入某个孩子的年龄后,输出其分班情况(要求使用switch语句)。
解题思路:
用scanf输入年龄后将这个值保存在age中。
然后将age写在switch后的圆括号中,接着在switch后的大括号中使用case考虑age为1-6的每种情况,1-3对应一种情况输出内容后并使用break结束,其他情况以此类推。
代码如下:
#include"stdio.h"
voidmain()
{intage;
printf("inputage:
");/*提示输入年龄*/
scanf("%d",&age);/*输入年龄*/
switch(age)/*根据输入的年龄做判断*/
{case1:
case2:
case3:
printf("Lowerclass\n");break;/*考虑1-3岁的情况*/
case4:
printf("Middleclass\n");break;/*考虑4岁的情况*/
case5:
case6:
printf("Higherclass\n");break;/*考虑5-6岁的情况*/
default:
printf("Cank'tenter\n");break;/*除开上述情况的其他情况*/
}
}