第二部分 非选择题(共80分)
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.设char a,b;则表达式a/b-‘c’的值的类型为 .
22.设int k=-1;执行printf(“%u”,k);后输出的值是 .
23.设for(k=0;k 0;k++)++k;则该循环共执行 次。
24.设int a =1,b=2;经表达式a=a∧b,b=a∧b,a=a∧b运算后a,b的值分别是 .
25.表示空类型的保留字是 .
26.被调函数在执行结束时,这个函数中定义的_______________类型的变量不被释放。
27.设struct student
{
int no;
char name[12];
float score[3];
}sl,* p = sl;
用指针法给sl的成员no赋值1234的语句是___________________.
28.C语言程序中对文本文件的存取是以________________为单位进行的。
29.设char string[] =“This_is_a_book!”;则数组的长度应是________________.
30.设int a[2][3] = {{2},{3}};则数组元素_____________________的值为3.
三、程序分析题 (本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处31.
int a = 200;
main()
{int i;for(i = 1;i = 5;i + +)
{a + + ;
printf(“﹪d,”,a);
s()
}
{
s()
{static int a = 20;
a + + ;
printf(“﹪d \ n”,a);
}
32.
# include “stdio.h”
main()
{
char c;
c = getchar();
if((c =‘a’ c =‘z’) ‖c =‘X’ c =‘Z’)
c = c - 23;
printf(“﹪c \ n”,c);
}
设从键盘上输入Next ↙
33.
# define N 7
main()
{int i,j,temp,a[N]={1,2,3,4,5,6,7};for(i = 0;i;i + + )
{j = N - 1 - i;temp = a[i];a[i]=a[j];
a[j]=temp;
}
for(i = 0;i;i + + )
printf(“﹪5d”,a[i]);
}
34.int x=30,y=50;
sub(x,y)
{ y=x y?x:y;
return y;
}
main( )
{
{int x=100;
printf(“%d\n”,sub(x,y));
}
printf(“%d,%d\n”,x,y);
}
35.设文件file1.c的内容为COMPUTER
#include “stdio.h”
main( )
{ FILE *fp;
char ch;
if((fp=fopen(“file1.c”,“r”))= =NULL)
{ printf(“Cannot open file \n”);
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);
if(ch =‘A’ ch =‘Z’)
fputc(ch+32,stdout);
}
fclose(fp);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.将一个十进制整数n转变为二进制数。
main( )
{ int i=0,j,n,num[20];
scanf(“%d”, ); /*第一空*/
while(n!=0)
{ num[i++]= ; /*第二空*/
n= ; /*第三空*/
}
for(j=i-1;j =0;j——)
printf(“%d”,num [j]);
}
37.一个一维数组和一个二维数组同处一个共用型,将数据输入一维数组后,在二维数组中输出。
main( )
{union data
{ int a[10];
int b ;/*第一空*/
};
union data ab;
int i,j;
for(i=0;i 10,i++)
scanf(“%d”, ); /*第二空*/
for(i=0;i 2;i++)
for(j=0;j 5;j++)
printf(“]”, );/*第三空*/
}
38. 先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Not found!”标志。
main()
{int i,x,a[10];
for(i = 0;i 10;i ++ )
scanf(“﹪d”,___________);
scanf(“﹪d”, x);
printf(“﹪d”,x);
for(i = 0;i 10;i ++)
if(_________________)break;
if (i _________10)
printf(“ position:﹪d \ n”,i);
else printf(“Not found! \ n”,x);
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)
39.输出100之内所有个位数字为6且能被3整除的自然数。(如:36,66,96……)
40. 求1到100之间的奇数之和及偶数之和,并将二者输出。
41. 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。