笔试样卷 、选择题(每小题1分,共10分) 1.在C语言中,逻辑值“真”用(1)表示。 (1)(4)true(B)大于0的数C)非零整数D)非零的数 2.下列程序中有3个具有相同功能,只有(2)所完成的功能与其他程序不同 (2)(A)sum=0 (B)sum=0; while(ib>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(ib>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 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;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;iy) {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=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]);} }
printf("\n"); 2.软盘上已有一个数据文件 datal.dat,存储的数据形式为 258 16,17,18 要将该数据文件的数据取出,存放在一个数组中,并显示在屏幕上。请将程序完善。 i int i, a(10113; char fname[ 10 printf("input data filename: ); scanf("%s", fname);/输入的文件名为(28)* fp=fopen(fname, (29); for(i=0;iImax)Imax=x if( (33) )Imin=x; scanf("%f, &x); printf("nlmax=%f\nmin=%f\n",Imax, Imin); 4.下面的程序能将字符串 How do you do!反向输出到屏幕上。请完普程序
printf("\n"); } } 2.软盘上已有一个数据文件 data1.dat,存储的数据形式为: 1,2,3 4,5,6 7,8,9 10,11,12 13,14,15 16,17,18 19,20,21 22,23,24 25,26,27 28,29,30 要将该数据文件的数据取出,存放在一个数组中,并显示在屏幕上。请将程序完善。 #include "stdio.h" main() { int i,a[10][3]; char fname[10]; FILE *fp; printf("input data filename:"); scanf("%s",fname); /*输入的文件名为 (28) */ fp=fopen(fname,(29) ); for(i=0;ilmax) lmax=x; if ( (33) ) lmin=x; scanf("%f",&x); } printf("\nlmax=%f\nlmin=%f\n",lmax,lmin); } 4.下面的程序能将字符串 How do you do!反向输出到屏幕上。请完善程序
#include ' stdio. h"t maino i print("In How do you do! In") print(char *string (34) if(str= (35) return while(str)str++ 。/oc str); *strNULL (36) 5下列程序是将字符串tmp后移 length个位置,移出的字符移到串首。请完善程序 #include stdio. h" mainO i void backmoveO char temp[81; int length=3: gets(temp); backmove(temp, length); printf("%sIn", temp); void backmove(x, m) d int i, j, n; n=strlen(x); forgj=0; j maIn f FILE"fp; har ch, fname[ 10
#include "stdio.h" main() { print("\n How do you do! \n"); } print(char *string) { char *str= (34) ; if(*str== (35) ) return; while(*str)str++; --str; printf("%c",*str); *str=NULL; print( (36) ); } 5.下列程序是将字符串 temp 后移 length 个位置,移出的字符移到串首。请完善程序。 #include "stdio.h" #include "string.h" main() { void backmove(); char temp[81]; int length=3; gets(temp); backmove(temp,length); printf("%s\n",temp); return; } void backmove(x,m) char *x; int m; { int i,j,n; char ch; n=strlen(x); for(j=0;j main() { FILE *fp; char ch,fname[10];
printf("Input the file name: In"); if((fp=fopen((39 printf("cannot open fileln); tt0); while(ch= (40) fpute(ch, fp); fclose(fp);
printf("Input the file name:\n"); gets(fname); if((fp=fopen( (39) ,"w"))==NULL) { printf("cannot open file\n"); exit(0); } while(ch= (40) ) fputc(ch,fp); fclose(fp); }