C语言期中测试试卷

  • 格式:doc
  • 大小:56.00 KB
  • 文档页数:6

10-11第2学年C语言期中测试试卷 学号___________姓名_______________ 一、选择题(单选题,每小题2分,共15题,30分) 1.字符'a'的ASCII码值是97,以下语句不能正确输出字符'a'的是__________。 A)putchar('a'); B)putchar('\x61'); C)putchar(97); D)putchar("a"); 2.有定义:int a=7; float x=2.5, y=4.7, z; 则语句z=x+a%3*(int)(x+y)%2/4; printf(“%f \n”, z ); 的输出是_________。 A)3.000000 B)2.500000 C)2.750000 D)2.000000 3.以下程序的正确输出是__________。 main() { int a=32767, b; b=a+1; printf("%d,%d", a, b); } A)32767, -32768 B)32767, 32768 C)32767, 0 D)32767, 1 4.执行下列程序段后,输出结果为____________ int x=8,y=7; int a,b,c; a=(--x==y++)?--x : ++y; b=x++; c=y; printf(“%d,%d,%d”,a,b,c); A) 6,6,8 B)7,8,7 C)1,9,7 D)6,6,6 5.main ( ) { int a ; printf (“%d\n”, (a=3*5 , a*4 , a+5 ) ) ; } 输出结果为: A)65 B)20 C)15 D)10 6.若i、j、sum已定义为int型变量,则以下程序段的输出是________。 for(sum=0, i=0; i<=4; i++) for(j=0; j<4; j++) sum+=1; printf("sum=%d\n", sum); A)sum=20 B)sum=24 C)sum=25 D)sum=30 7.有以下程序 段 main() { int a=1, b; for(b=1;b<=10;b++) { if(a>=10) break; if(a%2==1) {a+=5;continue; } a-=3; } printf("%d\n",b); } 程序运行后的输出结果是 A) 3 B) 4 C)5 D) 6 8.以下语句的输出是__________。 char s[20]="ATS\0JK"; printf( "%d, %s\n", strlen(s), s); A)6, ATS B)3, ATS C)3, ATS\0JK D)6, ATS\0JK 9.函数fun定义如下: void fun( ) { printf("Hello world!\n"); } 则对函数fun的正确调用方式是__________。 A) fun ; B) fun(void); C) fun( ); D) fun(1); 10.main ( ) { int x=1 , y=2 , z=3 ; if (x=y+z) printf (“# # # # “) ; else printf (“* * * * “) ; } 程序输出为: A)有语法错误不能通过编译 B)输出* * * * C)可以通过编译,但不能通过连接,因而不能运行 D)输出# # # # 11.若程序中定义了以下函数 double myadd(double a,double b) { return (a+b);} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( ) A)double myadd(double a,b); B)double myadd(double,double); C)double myadd(double b,double a); D)double myadd(double x,double y); 12. #include func (int a , int b) { int c ; c = a+b ; return c ; } main ( ) { int x=6 , y=7 , z=8 , r ; r=func ((x-- , y++ , x+y ) , z-- ) ; printf (“%d \n “, r ) ;

} 程序输出为: A) 11 B) 20 C) 21 D) 31 13.下面程序的功能是输出以下形式的金字塔图案: * *** ***** ******* main( ) { int i, j; for(i=1; i<=4; i++) { for(j=1; j<=4-i; j++) printf(“ ”); for(j=1; j<=_______; j++) printf(“*”); printf(“\n”); } } A)i B)2*i-1 C)2*i+1 D)i+2 14.下述对C语言字符数组的描述中错误的是: A)字符数组可以存放字符串 B)字符数组中的字符串可以整体输入、输出 C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 15.#include #include void fun ( char str[ ] , int m ) { char s ; int i,j; i=0 ; j=m-1; while ( i{ s= str[i++] ; str[i]= str[j - -] ; str[j]=s ; } } main ( ) { char a[ ] = “ABCDEFG” ; fun ( a , strlen ( a ) ) ; puts ( a ) ; } 程序输出为: A)GFEDCBA B)AGADAGA C)AGAAGAG D)GAGGAGA 二、试写出以下程序的输出结果(每小题3分,共6题,18分) 1.#include main() {char k; while( (k=getchar())!=‟\n‟) { switch(k) {case „1‟:k=k+1; putchar(k); case „2‟:k=k+2; putchar(k); default:k=k-1; putchar(k); } } } 程序运行时从键盘输入125,输出结果为_______________________ 2. int change(int x, int y, int z) { int t; t=x; x=y; y=z; z=t; return z; } main( ) { int x, y, z; x=50; y=500; z=0; z=change(x, y, z); printf("x=%d, y=%d, z=%d\n", x, y, z); } 运行结果:____________________ 3. main() { char str1[40], str2[20]; int i, j ; printf("Input string 1 and string 2:\n"); scanf("%s%s", str1, str2); i=0; while(str1[i]!='\0') i++; for(j=0; str2[j]!='\0'; j++) str1[i+j]=str2[j]; str1[i+j]='\0'; printf("%s\n", str1); } 如果从键盘输入:how are you 则输出为______________________ 4. void fun (int n) { int t; t=n/10; printf(“%d”,n%10); if (t) fun (n/10); printf(“%d”,n%10); } main() { int n; scanf(“%d”,&n); fun(n); } 程序运行时输入5467,输出为___________________ 5. main() { int a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i ++) { for(j=0;j<4;j ++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s =a[i][j]; } } printf("%d\n",s); } 程序运行结果为_______________________ 6. void ss(char s[ ],char t) { int i=0; while (s[i]!=‟\0‟) { if (s[i]==t) s[i]=t-„a‟+‟c‟; i++; } }