第二部分 非选择题(共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<N/2;i + + ) {j = N - 1 - i; temp = a[i];a[i]=a[j];a[j]=temp; } for(i = 0;i<N;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(″%5d″, );/*第三空*/
}
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”。
|