笔试样卷 、选择题(每小题1分,共10分) 1.在C语言中,逻辑值“真”用(1)表示。 (1)(4)true(B)大于0的数C)非零整数D)非零的数 2.下列程序中有3个具有相同功能,只有(2)所完成的功能与其他程序不同 (2)(A)sum=0 (B)sum=0; while(i<=50) while(i++<50) sumt=i-++. sum+=i: (C)sum=0; (D)sum=0; while(i<50) while(++i<=50) sumt=t+i; 3.已知下列程序 #include ' stdio. h" main(int argc, char argvlD for(i=0; i<argc: i++) printf("%sIn", argvliD); 该程序的可执行文件名为 program.exe,运行程序时键入的命令行为: program apple orange banana 则执行结果为(3) (3)(A) PROGRAM PROGRAMEXE orange orange banana banana 4.在下列选项中,不正确的表达式是(4) (4)(4)a>b>c (C)a=1,b=2,c=3 D)p++ 5.若有定义inta||={1,2,3,45},p=a;则下面错误的运算式是(5) (5)(A)*(p+=3)(B)a3H++(O(a+=2)(D)++p,+中p,p 6.下列函数调用不正确的是(6) (6)(A)putchar(putchar(ch))(B)str=gets(s)(C) fclose(fp)(D)fopen(fp) 7.定义char*s且执行s= malloc(255)之后,能正确输入一个串的是(7) (7)(A) scanf("%s",&s); scan ); (D)scanf(%os",*s
笔试样卷 一、选择题(每小题 1 分,共 10 分) 1.在 C 语言中,逻辑值“真”用 (1) 表示。 (1)(A) true (B) 大于 0 的数 (C) 非零整数 (D) 非零的数 2.下列程序中有 3 个具有相同功能,只有 (2) 所完成的功能与其他程序不同。 (2) (A) sum=0; (B) sum=0; i=0; i=1; while(i<=50) while(i++<50) sum+=i++; sum+=i; (C) sum=0; (D) sum=0; i=0; i=0; while(i<50) while(++i<=50) sum+=++i; sum+=i; 3.已知下列程序: #include "stdio.h" main(int argc,char *argv[]) { int i; for(i=0;i<argc;i++) printf("%s\n",argv[i]); } 该程序的可执行文件名为 program.exe,运行程序时键入的命令行为: program apple orange banana 则执行结果为 (3) 。 (3) (A) (B) (C) (D) PROGRAM PROGRAM.EXE apple p apple apple orange a orange orange banana o banana banana b 4.在下列选项中,不正确的表达式是 (4) 。 (4) (A) a>b>c (B) x=a+b>c+d=y (C) a=1,b=2,c=3 (D) p++ 5.若有定义 int a[ ]={1,2,3,4,5},*p=a;则下面错误的运算式是 (5) 。 (5) (A) *(p+=3) (B) a[3]++ (C) (a+=2) (D) ++p, ++p, *p 6.下列函数调用不正确的是 (6) 。 (6) (A) putchar(putchar(ch)) (B) str=gets(s) (C) fclose(fp) (D) fopen(fp) 7.定义 char *s 且执行 s=malloc(255)之后,能正确输入一个串的是 (7) 。 (7)(A) scanf("%s",&s); (B) scanf("%c",&s[0]); (C) scanf("%s",s); (D) scanf("%s",*s)
8.已知:inta=1,b=2,c=3则表达式(a<<b^c)运行结果为(8) (8)(A)8 (B)-8 (C)7 D)-7 i char sll="abedefg"; printf("%s", &s 3D) 程序的运行结果为(9)。 (B)d (c) cdefg (D) defg 10. #include ' stdio. h void f( char *s,char“t) d int i=0,j=0 while("(s+i))i++ while(s[i++I=tIj++D; i charsll=xyz, tI="abc printf( 程序运行结果为(10) (10)(A)abc B) xyzabe (C) xyz (D) xyz abc 二、读程序,并选出正确的答案(每空3分共45分) 如下程序 #include <stdio. h mainO union EXAMPLE struct! int x; int b; j e=2 rinf("n%d,", e. in. x); printf("n%d", e. in y); printf("In%d", e.a); printf("In%d",e b); } 第一个prin行的输出为(1) (1)(4)4 (C6 D)7
8.已知:int a=1, b=2, c=3 则表达式~(a<<b^c)运行结果为 (8) 。 (8)(A)8 (B)-8 (C)7 (D)-7 9.main() { char s[]="abcdefg"; printf("%s",&s[3]); } 程序的运行结果为 (9) 。 (9)(A)c (B)d (C)cdefg (D)defg 10.#include "stdio.h" void f(char *s,char *t) { int i=0,j=0; while(*(s+i)) i++; while(s[i++]=t[j++]); } main() { char s[]="xyz",t[]="abc"; f(s,t); printf("%s\n",s); } 程序运行结果为 (10) 。 (10)(A)abc (B)xyzabc (C)xyz (D)xyz abc 二、读程序,并选出正确的答案(每空 3 分,共 45 分) 1.如下程序: #include <stdio.h> main() { union EXAMPLE{ struct{ int x; int y; }in; int a; int b; }e; e.a=1; e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("\n%d",e.in.x); printf("\n%d",e.in.y); printf("\n%d",e.a); printf("\n%d",e.b); } 第一个 printf 行的输出为 (11) 。 (11)(A) 4 (B) 5 (C) 6 (D) 7
第二个 printi行的输出为(12) (12)(A)5 (B)6 (D)8 第三个 printf行的输出为(13) (13)(4)4 第四个prin行的输出为(14) (C)6 D)7 2.阅读程序,写出程序循环3次分别输出为(15)、(16)、(17)。 extern int a; mainO d int i; for(i=1;i<4;i+) printf("%d, " a); {inta=100; static int b=10: printf("%d, d\n", a, b); (15)(A)1,10,10(B)10,101,10 (C)10,110 (D)1,101,10 (16)(A)11,101,20 (B)102,101,10(C)11,101,10 l01,11,20 (17)(A)102,10110(B)12,102,30(C)102,101,30(D)12,101,30 3.写出下列程序运行结果。 #include 'stdlib. h char ps10="1234’,ps2|10="5678",*sl=psl,s2=ps2; while(sl)sl++; tf("%sIn",ps1); 输出为:(18) printf("%sIn",ps2); 输出为:(19)
第二个 printf 行的输出为 (12) 。 (12)(A) 5 (B) 6 (C) 7 (D) 8 第三个 printf 行的输出为 (13) 。 (13)(A) 4 (B) 5 (C) 6 (D) 7 第四个 printf 行的输出为 (14) 。 (14)(A) 4 (B) 5 (C) 6 (D) 7 2.阅读程序,写出程序循环 3 次分别输出为 (15) 、 (16) 、 (17) 。 extern int a; main() { int i; for(i=1;i<4;i++) { ++a; printf("%d,",a); s(); } } int a=9; int s() { int a=100; static int b=10; ++a; printf("%d,%d\n",a,b); b+=10; } (15)(A) 1,10,10 (B) 10,101,10 (C) 10,11,10 (D) 1,101,10 (16)(A) 11,101,20 (B) 102,101,10 (C) 11,101,10 (D) 101,11,20 (17)(A) 102,101,10 (B) 12,102,30 (C) 102,101,30 (D) 12,101,30 3.写出下列程序运行结果。 #include "stdio.h" #include "stdlib.h" main() { char ps1[10]="1234",ps2[10]="5678",*s1=ps1,*s2=ps2; while (*s1) s1++; while(*s2) { *s1=*s2; s1++; s2++; } *s1='\0'; printf("%s\n",ps1); 输出为: (18) 。 printf("%s\n",ps2); 输出为: (19) 。 }
(18)(A)1234(B)5678(C)678 (D)12345678 (19)(A)3456(B)5678(O)12345678D)1234 4.下列程序: #include stdio. h f(int a) Hint b=0; static int c=3; for(i=1;<=2;i++) printi(k=%d\n", k) 程序运行的结果为(20) (20)(A)k=5 (B)k=5 (C)k=5 (D)k=5 k=11 k=12 k=7 若将函数中的 static int c=3:换成intc=3;则程序运行结果为(21)。 (21)(E)k=5 (F)k=5 (G)k=5 H)k=5 5. #include a: fl. c't mainO d int a, b; scanf("%d, %d", &a, &b); fl(a, b); printf(a=d, b=%od\n", a, b 软盘上1c文件的内容如下 int x,y; nt t: if(x>y)t=x;x=y;y=;) 程序运行输入的数据为:10,5 输出结果为(22) (22)(A)a=5b=10(B)a=10,b=5O)程序不能运行(D)函数调用有错 6.若xy是整型变量,则执行以下语句后的x的值是(23),y的值是(24 i if(x>=10) break if(x%2=1)
(18)(A) 1234 (B) 5678 (C) 678 (D) 12345678 (19)(A) 3456 (B) 5678 (C) 12345678 (D) 1234 4.下列程序: #include "stdio.h" f(int a) {int b=0; static int c=3; b=a+c++; return(b); } main() {int a=2,i,k=0; for(i=1;i<=2;i++) { k=f(a++)+k; printf("k=%d\n",k); } } 程序运行的结果为 (20) 。 (20)(A) k=5 (B) k=5 (C) k=5 (D) k=5 k=11 k=12 k=6 k=7 若将函数中的 static int c=3;换成 int c=3;,则程序运行结果为 (21) 。 (21)(E) k=5 (F) k=5 (G) k=5 (H) k=5 k=11 k=12 k=6 k=7 5. #include "a:f1.c" main() { int a,b; scanf("%d,%d",&a,&b); f1(a,b); printf("a=%d,b=%d\n",a,b); } 软盘上 f1.c 文件的内容如下: f1(x,y) int x,y; {int t; if(x>y) {t=x;x=y;y=t;} } 程序运行输入的数据为:10,5 输出结果为 (22) 。 (22)(A) a=5,b=10 (B) a=10,b=5 (C) 程序不能运行 (D) 函数调用有错 6.若 x,y 是整型变量,则执行以下语句后的 x 的值是 (23) ,y 的值是 (24) 。 for (y=1,x=1;y<=50;y++) { if (x>=10) break; if (x%2==1) { x+=5;continue; }
(B)6(C)7(D) (24)(A)6(B)2(C)4(D)8 7. maino i char a]("ab", efgh","ijk", mnop",st3 char*b5=ab",efgh",ijk",mnop",st] int i: ptr=b for(i=0 LI: printf("%s",ptrliD) printf("\n"); printf("%s",(a+i)); printf("\n) L1行输出结果为(25) (25)(A)abef (B) abefg (C)abefghijkmnopst (D) abefghijkmnop 三、程序填空(每空3分,共45分) 1.打印以下的扬辉三角形(要求打印出10行 maino {intk1010,; for(i=0;<10;i++) for(=0:ji+1;j++) if(=0) (kilLi=1; printf(" 1");3 (kill=l; printf(" 1;1 (klilljl=l; printf(" 1);3 else printf("%3d,k]illjD;
x-=3; } (23)(A) 1 (B)6 (C) 7 (D)10 (24)(A) 6 (B)2 (C) 4 (D)8 7.main() { char a[5][10]={ "ab","efgh","ijk","mnop","st"}; char *b[5]= {"ab","efgh","ijk","mnop","st"}; char **ptr; int i; ptr=b; for(i=0;i<4;i++) L1:printf("%s",ptr[i]); printf("\n"); for(i=0;i<=4;i++) printf("%s",*(a+i)); printf("\n"); } L1 行输出结果为 (25) 。 (25)(A) abef (B)abefg (C)abefghijkmnopst (D)abefghijkmnop 三、程序填空(每空 3 分,共 45 分) 1.打印以下的扬辉三角形(要求打印出 10 行)。 1 1 1 1 2 1 1 3 3 1 … #include "stdio.h" main() {int k[10][10],i,j; for (i=0;i<10;i++) { for (j=0;j<i+1;j++) { if (j==0) {k[i][j]=1; printf(" 1");} else if(i==1) { k[i][j]=1; printf(" 1");} else if( (26) ) { k[i][j]=1; printf(" 1");} else { (27) printf("%3d", k[i][j]);} }