1、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以下程序的
2、正确输出是_。main() int a=32767, b;b=a+1;printf(“%d,%d“, a, b);A)32767, -32768 B)32767, 32768 C)32767, 0 D)32767, 14执行下列程序段后,输出结果为_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 5main ( ) int a ;printf (“%dn”, (a=3*5 , a*4 , a+5 ) ) ; 输出结果为:A)65
3、 B)20 C)15 D)106若 i、j、sum 已定义为 int 型变量,则以下程序段的输出是_。 for(sum=0, i=0; i=10) break; if(a%2=1)a+=5;continue; a-=3; printf(“%dn“,b); 程序运行后的输出结果是 A) 3 B) 4 C)5 D) 6 8以下语句的输出是_。 char s20=“ATS0JK“; printf( “%d, %sn“, strlen(s), s);A)6, ATS B)3, ATS C)3, ATS0JK D)6, ATS0JK9函数 fun 定义如下:void fun( ) printf(“Hel
4、lo world!n“); 则对函数 fun 的正确调用方式是_。A) fun ; B) fun(void); C) fun( ); D) fun(1);10main ( ) 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);并将其放在调用语句之
5、后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )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
6、n “, r ) ; 程序输出为:A) 11 B) 20 C) 21 D) 3113下面程序的功能是输出以下形式的金字塔图案:*main( ) int i, j;for(i=1; i#include void fun ( char str , int m ) char s ;int i,j;i=0 ; j=m-1;while ( imain()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); 程序运行时从键盘输
7、入 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=%dn“, x, y, z); 运行结果:_ 3 main() char str140, str220;int i, j ;printf(“Input string 1 and string 2:n“);scanf(“%s%s“, str1, str2);i=0; while(str1
8、i!=0) i+; for(j=0; str2j!=0; j+) str1i+j=str2j;str1i+j=0;printf(“%sn“, 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”,fun(n); 程序运行时输入 5467,输出为_5. main() int a44=1,2,-3,-4,0,-12,-13,14 ,-21,23,0,-24,-31,32
9、,-33,0; int i,j,s=0; for(i=0;ivoid invert ( char str ) int i=0,j,k;j=strlen(str)-1;while(imain() int i,j,n; char ch=A;scanf(“%d“, if(n11) for(i=1; i=n; i+) for(j=1; _ (9)_; j+) printf(“%2c“,ch);_ (10)_printf(“n“);else printf(“n is too large!n“);printf(“n“);四、编程题(共 3 题,第 1 题 11 分,第 2 题 11 分,第三题 10 分,
10、共 32 分)1 编写一个函数 int prime(int x)判断参数 x 是否为素数,若是,返回 1,若不是返回0,在主函数中定义并初始化一个一维数组 a,其初值为: 10,23,9,16,17,3 在主函数中输出该数组中为素数的元素,统计并输出该数组中素数的个数。2定义函数 getsum 求二维数组两条对角线元素之和,函数原型为:int getsum(int b 4); 在主函数中定义数组 int a44; 按下图所示初始化值初始化该数组,调用函数 getsum 求出该数组对角线之和。在主函数中以矩阵方式输出该数组并输出其对角线之和。请写出完整的程序。3 6 4 6 a = 8 3 1 3 4 7 1 2 2953 3在主函数中定义 char s100用于存放字符串。请编写一个函数 sort 将字符串中的字符按从小到大的顺序进行排序。要求在主函数中输入字符串,存入 s,以 s 为参数调用函数sort,排序后的结果字符串在主函数中输出。