说明:请将单项选择题(1~50 空)的正确答案涂写考试答题卡,将填空(51~
75 空)等文字题按【】中的序号写入下面文字答题卡,否则不得分。
、阅读程序题文字答题卡:(每空2 分,共24 分)
三、完善程序填空题文字答题卡:(每空2分,共26 分)
1题【63】
2题
【64】
【65】
【66】3题
【67】
【68】
【69】
4题
【70】
【71】
【72】
5题
【73】
【74】
【75】
、单项选择题(每空1 分,共50分)
请将正确答案按【】中的序号写入答题卡,否则不得分
1.在 C 语言中,一条语句以】字符作为结束符。
A) , B ) ; C) . 2.以 4 组标识符中,能作为变量名使用【】 。 A) age , struct , s1 B) 2A , b_3, main C) ELSE ,a[2],m123 D) _abc , INT ,abcd 3.判char 型变量 ch 是否为数字字符的正确表达式为 【】 。 A) 0<=ch<=9 B) '0'<=ch<='9' C) ( 0<=ch )&& D) ('0'<=ch )&& 大写字母 A 的 ASCII 码值是 65, 97, D) 无符号 4.已知小写字母 a 的 ASCII 码值是 输出大写字母 B 的是 【】 。 A ) putchar( 'A'+1 ); C) putchar( 98-32); 5.空字符串的长度是 【】 A ) 0 B) 1 6.整型变量 a 定义后赋初值的结果是 int a=2.8*6 ; A ) 12 B ) 若有以下说明语句,则该语句 char a='\077' ; A) 使 a 的值包含 C) 使 a 的值包含 下面的程序结果为: main() {
int x=023 ; printf ( "%d\n" , --x); }
A ) 17
B ) 18 源程序执行后,屏幕上显示 【】 。 main () { int a ; float b ; a=4; b=9.5; printf ( "a=%d , b=%4.2f\n" , a , } A) a=%d , b=%f\n C)a=4,b=9.50 10.设 int x=10 ; x+=x%= (-6) +4; A) 0 B) 16
16 7. 8. 9. 列语句中不能 B ) putchar D ) putchar C)2 】。 】。 C) 'b'-32); B);
D) 17 D ) 18 1 个字符 3 个字符 【】 。 B) D) 使a 的值包含 4个字符 说明不合法 C )23 D )24
b)
;
B) D) 则 x=
a=%d ,b=%f a=4,b=9.5
【】 。 C ) 18
D ) 10
11.C 语言的下列运算符中,运算对象必须是整型数据
A ) %
B ) /
C) && D ) *
12..若有代数式
bc),则下面不正确C 语 言表达式是 【】 。
A ) a/b/c*e*3
B ) 3*a*e/b/c C) 3*a*e/b*c
D ) a*e/c/b*3 13.下面程序的输出结【】 。
main ()
{
int x=0 , y=1 , z=0; if ( x=z=y ) x=3; printf
n ”,x ,z);
}
A ) 3,0 B) 0,0 C ) 0, 1 D) 3,1
17.下面的程序 main() {
int x=100 ,a=10,b=20, ok1=5 ,
ok2=0 ; if ( a
if (b!=15 )
if ( !ok1 ) x=1;
int a=-1, b=4, k ;
k= ( a++<=0 )&& (!(b--<=0 ));
}
printf ( "%d , %d , %d\n" , k , a ,b);
}
A)1,1,2 B) 1,0,3 C) 0,1,2 D)
0,0,
3
14 .下面哪个表达式的值为 4 【】 。
A ) 11/3 B) 11.0/3
C )(float )11/3
D )( int )(11.0/3+0.5)
1.下面程序的输出结果是 【】 。
main ()
int x=2 ,
y=-1 ,
z=2;
if (x if (y<0) z=0; else z+=1 ; printf ( “ %dn ”, z);} A ) 3 B) 1 C) 2 D) 0 1.下列程序的运行结果是 【】 。 main () if (ok2) x=10; int k=0 ; while ( k=0) k=k-1 ; else x=-1; printf ( "%d\n" ,x ); } 的输出是 【】 。 A ) -1 B ) 0 18.执行下面程序后的输出结果是 【】 int x=1 , y=1, z=1; x+=y+=z ; printf ( “ %dn ”,x A ) 3 B ) 2 19.有如下程序段,则输出结果是 【】 int a=10 ; switch (a ) { case 9: a+=1 ; case 10: a+=1; case 11: a+=1; case 12: a+=1; } printf (“ a=%dn ”, a ); A ) 11 B ) 12 20.下面的程序 main () { int i ; for ( i=0 ; i<10 ;i++); printf ( "%d\n" ,i ); } 的输出结果是 【】 。 A ) 0 B ) 123456789 21.do 语句的循环次数为 【】 。 int a=10 ; do { a-- ;} while ( a!=0) C ) 1 D ) 不确定的值 A ) 10 B ) 9 22.设有类型说明为: int i=1 ; 则执行语句: A ) 7 B ) 6 23.对以下程序段的叙述正【】 C) 1 D) 4 C ) 13 D ) 10 C ) 0123456789 D ) 10 C ) 11 D ) 12 while( i++<5 );”后,变量 i 的值是 【】 A ) while 循环之行 10 次 B ) 无限循环 C) 循环体一次也不执行 D ) 循环体被执行一次 24.以下语句段中,【】不是死循环。 A ) int i=100 ; while ( 1) {i=i%100 ; i++; if ( i>100 ) break; } B )for (;;); C )int k=32764 ; do {k++ ; k++ ; }while (k>0 ) D)int s=32764 ; while (( s++%2 ) ||( s%2)) s++; 25.使用如下语句定义一个 char 型二维数组 str,用来存放字符串 "Pascal" 、"Basic" 、"C++" , char str[M][N]; 则M 和N最合理取值应该是【】。 A)3 和 7 B) 2 和 7 C) 2 和 6 D) 3 和 6 26.设己定义 int a[5 ]={0,1,2} ; 则 a[4] 数组元素的值为【】。 A)不确定值 B) 定义错误 C) 4 D) 0 27.运行下面程序段的输出结果是【】。 static int a[7]={1,3,5} ; printf("%d\n",a[3] ); A) 0 B) 5 C) 3 D) 不确定数 28.设有说明 char a[ ]= "No smoking!"; 则以下不能正确输出的语句是【】。 A) printf("%c", &a ); B) printf("%s", a ); C) puts( a ); D) puts ("No smoking!"); 29.当执行下面的程序时,如果输入ABC ,则输出结果是【】。 #include "stdio.h" #include "string.h" main() { char ss[10]="1,2,3,4,5"; gets(ss); strcat(ss, "6789"); printf("%s\n",ss); } A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789 30.以下程序的输出结果是【】。 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); } A) 1,5,9, B) 1,4,7, C) 3,5,7, D) 3,6,9, 31.若定义 int i,*p; 使 p 指向 i 的赋值语句是 【】 。 A) p=&i; B) *p=&i; C) *p=i; D) p=*&i; 32.变量的指针,其含义是指该变量【】。 A) 值B) 地址C) 名D) 一个标 志 33.下列程序的运行结果是 main() { int a=3, b=6, *y=&b, *k; k=x; x=y; y=k; printf("%d %d\n", *x, *y); } A) 6 3 B) 3 6 C) 编译出错 D) 0 0 34.若有以下定义 : char a[2][5]={9,8,7,6,5,4,3,2,1,0},*p=a[0],**q=&p; 则对 a 数组元素的正确引用形式【】。 A) *(q+1) B) q[1][1] C) *(* q+1) D) *q[1] 35.以下叙述中不正确的是 【】。 A) 在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效 36.在调用函数时,如果实参是数组名,它传递给形参的是【】。 A) 数组的首地址B) 数组第一个元素的值 C) 数组中全部元素的值D) 数组元素的个数 37.下面程序的输出是【】。 int m=13 ; int fun2(int x , int y) {int m=3 ; return(x*y-m) ; } main() {int a=7 , b=5; printf( “n%”,d fun2(a, b)/m) ; } A)1 B)2 C)7 D)10 38.在一个 C 源程序文件中,若要定义一个只允许在该源程序文件中所有函数使用的变量,则该变量需要的存储类别是【】。 A) static B) extern C) register D) auto 39.不合法的 main 函数命令行参数表示形式是 【】 。 A) main(int a , char *c[]) B) main(int arc , char **arv) C) main(int argv , char *argc[]) D) main(int argv , char *argc) 40. 若定义 enum color {red , green , blue , purple , yellow , black , orange} cl ;, c1=green+blue ;后,以下选项中 cl 的结果正 确的是 【】 。 A) greenblue B) purple C)yellow D)编译出错 41.设有以下说明和定义: typedef union{long i ; int k[5] ; char c ; }DATE ; struct date {int cat ;DATE cow ; double dog ; }too ; DATE max ; 则执行语句 printf ( “,%sd ”izeof (struct date )+sizeof(max)) ;后的结果是 【 A) 26 B)30 C)18 D)8 42.C 语言可以处理的文件类型是 【】 。 A )文本文件和数据文件 B)文本文件和二进制文件 C)数据文件和二进制文件 D)以上答案都是错误的 43.若 fp 是指向某文件的指针, 文件操作结束之后, 关闭文件指针应使用下列 句 A ) fp=fclose() ; B) fp=fclose ; C) fclose ; D) fclose(fp) ; 44.若调用 fputc 函数输出字符成功,则其返回值是 【】 。 A)输出的字符 B)0 C) 1 D )EOF 45.已知函数的调用形式: fread(buffer ,size ,count ,fp) ; 其中 buffer 代表的是 A)一个整型变量,代表要读入的数据项总数 B) 一个文件指针,指向要读入的文件 C) 一个指针,指向要存放读入数据的地址 D)一个存储区,存放要读入的数据项 46.函数 rewind 的作用是 【】 。 A) 使位置指针重新返回文件的开头 B) 将位置指针指向文件中所要求的特定位置 C) 使位置指针指向文件的末尾 D) 使位置指针自动移至下一个字符的位置 47.编译预处理命令以 【】 结尾。 A) ; B) . C) \ D) 回车键 48.下列程序的运行结果是 【】 。 #define N 2 #define M N+1 执行语句 】语 #define NUM (M+1)*M/2 main() { int i, n=0 ; for (i=0; i printf( “%d\n ”,n); } A) 5 B) 6 C) 8 D) 9 49.下列程序的运行结果是【】。 #define M 3 #define N M+1 #define NN N*N/2 main() { printf("%d\n",5*NN); } A) 17 B) 18 C) 30 D) 40 50.以下程序段的输出结果是【】。 main() { char s[]="\\141\141abc\t"; printf ("%d\n",strlen(s)); } A) 9 B) 12 C) 13 D) 14 二、阅读程序题(每空2 分,共24 分) 请将正确答案按【】中的序号写入文字答题卡,否则不得分。1.执行下面程序段后, x 的值是【51】;i 的值是【52】 int i , x; for (i=1 ,x=1 ; i<=50 ; i++) { if ( x>=10 ) break ; if ( x%2==1 ) { x+=5 ; continue ;} x-=3; } 2.以下程序的输出结果是【 53】。 main( ) { int arr[10], i, k=0; for( i=0; i<10; i++) arr[i]=i ; for( i=0; i< 4; i++) k+=arr[i]+i; printf("%d\n", k); } 3.下列程序的输出结果是【 54】。 #include main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; printf("%d,%d\n",*(*a+8),*a[2]); } 4.下列程序的输出结果是【 55】。 #include { char *p1,*p2,str[20]= ” xyz ”; p1=” abc”; p2=” ABC”; strcpy(str,strcat(p1,p2)); printf( “ %s” ,str); } 5.下列程序的输出结果是【 56】。 main() { int a[5]={12,21,13,6,18}; int *p,*s; for(p=a,s=a; p-a<5; p++) if (*p>*s ) s=p; printf("%d\n",*s); } 6.下列程序的输出结果是【 57】。 #include #include int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; main() { int i,(*b)[4]; for (i=0; i<2; i++) { b=a+i; printf("%d ",*(b[i]+1)); } printf ("\n"); } 7.以下程序的输出结果是【 58】。 void fun2(int *a , int b) { *a=*a+10 ;b=b+100 ; return; } main() { int x=5 , y=8 ; fun2(&x , y) ; printf("x=%d y=%d\n" , x,y); } 8.下列程序的输出结果是【 59】。 int b=2 ; int func(int *a) { b += *a ; return(b) ; } main() { int a=2 , res=2; res += func(&a) ; printf("%d \n" , res); } 9.以下程序的输出结果是 int a=0 ; fun3(int x) { static int a=3 ; a=a+x; return a; } main() { int k=2 , m=1 ; a+=fun3(k) ; printf("%d\n " ,a);【 60】 a+=fun3(m) ; printf("%d\n" , a);【61】 } 10.以下程序的运行结果是【 62】。 struct s {int a ; float b ; char *c ; } main() { static struct s x={19 ,83.5,”zhang”} ; struct s *px=&x ; printf( “%d ,%.1f , %s\n”, x .a, (*px).b , &px->c[1]) ; } 三、完善程序填空题(每空2 分,共26分) 请将正确答案按【】中的序 号写入答题卡,否则不得分。 1.输入一个百分制成绩,要求输出成绩等级‘ A'、‘B'、‘C'、‘D'、‘E'。90至100分为 ‘A ',80至 89分为‘B',70至 79分为‘ C',60至 69分为‘D',60分以下至 0分为‘E'。 #include int x; scanf("%d",&x); switch ( 【 63】 ) { case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; case 6: printf("D\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("E\n"); break; } } 2.用秦九绍算法求多项式的值,公式如下 a n x n+a n-1x n-1+? +a1x+a0=(((a n x+a n-1)x+a n- 2)x+ ? +a1)x+a0 请完善如下程序。 #define N 20 main() { float a[N+1]; int n,i; float x,sum; printf("\n Input N and x:"); scanf("%d%f",&n,&x); for(i=n;i>=0;i--) { printf("Please input number %d:",i); scanf("%f",&a[i]); } sum= 【 64】 ; for(i=n-1;i>=0;i--) sum= 【 65】 ; printf("\n%.2f", 【 66】 ); } 3.下面函数的功能为:使用二分法查找key 的值。数组中元素已递增排序,若找到key 则 返回对应的下标,否则返回 -1。 int binary (int a[],int n,int key) { int low,high,mid; low=0; high=n-1; while ( 【 67】 ) { mid=(low+high)/2;