![]() ![]() |
|
1997年4月全国计算机等级考试二级C语言笔试试题及答案 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:06:33 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、 选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分) (21) C语言中最简单的数据类型包括 A.整型、实型、逻辑型 B.整型、实型、字符型 C.整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型 (22) C语言中,运乍对象必须是整型数的运算符是 A.% B.\ C.%和\ D.* * (23) 为表示关系x≥y≥z,应使用C语言表达式 A.(x>=y)&&(y>=z) B(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) (24) 下述对C语言字符数组的描术中错误的是 A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入、输出 C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 (25) 设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是 A.1 B.0 C.4 D.3 (26) 以下程序的输出结果是 main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A.10 10 B.9 9 C.9 10 D.10 9 (27) 定义如下变题和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 for(i=0;i<3;i++) printf("%d",x[i][2-1]); A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 (28) 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A.a<>0 B.!a C.a=0 D.a (29) 阅读程序: #include main() { int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是 A.203 B.204 C.1a4 D.1a6 (30) 设有如下函数定义: int f(char *s) { char *p=s; while(*p!=’\0’) p++; return(p-s); } 如果在主程序中用下面的语句调用上述函数,则输出结果为 printf("%d\n",f("goodbey!")); A.3 B.6 C.8 D.0 (31) 以下说法中正确的是 A.C语言程序总是从第一个的函数开始执行 B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行 D.C语言程序中的main()函数必须放在程序的开始部分 (32) 执行下面的程序后,a的值为 main() { int a,b; for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3; continue; } b-=5; } } A.7 B.8 C.9 D.10 (33) 以下程序段的输出结果是 int x=3; do { printf("=",x-=2);} while(!(--x)); A.1 B.3 0 C.1-2 D.死循环 (34) 定义如下变量: int n=10; 则下列循环的输出结果是 while(n>7) { n--; printf("%d\n",n); } A.10 B.9 C.10 D.9 9 8 9 8 8 7 8 7 7 6 (35) 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A.7和5 B.6和3 C.7和4 D.6和4 (36) 设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是 A.aa数组成元素的值分别是"abcd"和ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符’a’和’A’的地址 (37) 以下程序的输出结果是 main( ) { int a=-1,b=4,k; k=(+ +a〈0)&&!(b - -〈=0); printf("%d%d%d\n",k,a B.; } A.104 B.103 C.003 D.004 (38) 设有以下定义: int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*prt)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是 A.*((*prt+1) [2]) B.*(*(p+5)) C.(*prt+1)+2 D.*(*(a+1)+2) (39) 下列程序的输出结果是 main( ) { char*p1,*p2,str[50]="xyz"; p1="abcd"; p2="ABCD"; strcpy(str+2,strcat(p1+2,p2+1); printf)"%s",str); } A.xyabcAB B.abcABz C.ABabcz D.xycdBCD (40) 执行下面的程序后,a的值是 #define SQR(X) X*X main( ) { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d\n",a); } A.10 B.1 C.9 D.0 (41) 下列程序执行后输出的结果是 #include f(int a) { int b=0; static c=3: a=c+ +,b+ +; return (a); } main( ) { int a=2,i,k; for(i=0;i〈2;i=+ +〉 k=f(a+ +); printf("%d\n",k); } A.3 B.0 C.5 D.4 (42) 下列程序的输出结果是 main( ) { int a[5]={2,4,6,8,10},*P,* *k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",* *k); } A.4 4 B.2 2 C.2 4 D.4 6 (43) 阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i〈3;i++〉 n[i]=0; k=2; for (i=0;i〈k;i++〉 for (j=0;j〈k;j++〉 n[j]=n[i]+1; printf("%d\n",n[1]); } 下述程序运行后输出结果是 A.2 B.1 C.0 D.3 (44) 字符’0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是 #include main( ) { union { int i[2]; long k; char c[4]; }r,*s=&r; s->i[0]=0x39; s->i[1]=0x38; printf("%c\n",s->c[0]) } A.39 B.9 C.38 D.8 (45) 设有以下定义: typedef union { long i;int k[5];char c;}DATE; struct date { int cat;DATE cow;double dog;}too; DATE max; 则下列语句的执行结果是 printf("%d",sizeof(struct date)+sizeof(max)); A.25 B.30 C.18 D.8 (46) 执行以下程序后,y的值是 main ( ) { int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y + = * (p + x); printf("%d\n",y); } A.17 B.18 C.19 D.20 (47) 下列程序执行后输出的结果是 int d=1; fun (int q) { int d=5; d + =p + +; printf("%d". D.; } main( ) { int a=3; fun(a); d + = a + +; printf("%d\n", D.; } A.8 4 B.9 6 C.9 4 D.8 5 (48) 下列程序的输出结果是 main( ) { char ch[2][5]={"6934,"8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i + +) p[i]=ch[i]; for(i=0;i<2;i + +) for(j=0;p[i][j]>’\0’&&p[i][j]<=’9’;j+=2) s=10*s+p[i][j]-’0’; printf("%d\n",s); A.6385 B.69825 C.63825 D.693825 (49) 以下程序的输出结果是 fut (int**s,int p[2][3]) { **s=p[1][1]; } main( ) { int a[2][3]={1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fut(&p,a); primtf("%d\n",*p); } A.1 B.7 C.9 D.11 (50) 以下程序的输出结果是 #include"ctype.h" space (char *str) { int i,t;char ts[81]; for(i=0,t=0;str[i]!=’\0’;i+=2) if(! isspace(*str+i)&&(*(str+i)!=’a’)) ts[t++]=toupper(str[i]); ts[t]=’\0’; strcpy(str,ts); } mian( ) { char s[81]={"a b c d e f g"}; space(s); puts(s); } A.abcdeg B.bcde C.ABCDE D.BCDE 二、填空题(每空2分,共40分) 请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。 (1) 十进制数112.375转换成十六进制数为 【1】 。 (2) 存储200个32×32点阵的汉字信息需 【2】 KB。 (3) 数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为 【3】 。 (4) DOS命令分为内部命令与外部命令,TREE命令属于 【4】 命令。 (5) 自动批处理文件的文件名为【5】 。 (6)表示条件:10 (7) 下列程序的输出结果是【7】 main() { char b[]="ABCDEFG"; char *chp=&b[7]; while(--chp>&b[0]) putchar(*chp); putchar(’\n’); } (8) 下列程序的输出结果是【8】 。 int ast(int x,int y,int * cp,int * dp) { *cp=x+y; *dp=x-y; } main() { int a,b,c,d; a=4;b=3; ast(a,b,&c,&d); printf("%d %d/n",c,d); } (9) 以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空. main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while(【9】) { if(x>amax) amax=x; if(【10】) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } (10) 下面程序通过函数average计算数组中各元素的平均值,请填空. float average(int * pa,int n) { int i; float avg=0.0; for(i=0;iavg=【12】; return avg; } main() { int i,a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf("mean=%f\n",mean);} (11) 阅读程序: #include "string.h" #include "stdio.h" strle(char a[],char b[]) { int num=0,n=0; while(*(a+num)!=’\0’),num++; while(b[n]){ *(a+num)=b[n];num++;n++;} return (num);} main() { char str1[81],str2[81],*p1=str1,*p2=str2; gets(p1); gets(p2); printf("%d\n",strle(p1,p2)); } 运行上面程序,如果从键盘上输入字符串qwerty和字符串abcd则程序的输出结果是 【13】 。 (12) 以下程序的输出结果是 【14】 。 fun(int n,int *s) { int f1,f2; if(n = =1||n = =2) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2;} } main() { int x; fun(6,&x); printf("%d\n",x); } (13) 阅读程序: main() { char str1[]="how do you do" ,str2[10]; char *p1=str1,*p2=str2; scanf("%s",p2); printf("%s",p2); printf("%s\n",p1); } 运行上面的程序,输入字符串HOW DO YOU DO 则程序的输出结果是【15】 。 (14) 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空. #include main() { FILE * fp; char ch,fname[10]; printf("lnput the name of file\n"); gets(fname); if((fp=【16】)==NULL) { printf("Cannot open\n"); exit(0);} printf("Enter data\n"); while((ch=getchar())!=’#’) fputc(【17】,fp); fclose(fp); } (15) 以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回.请填空: #include struct list { char data; struct list * next; }; struct list * creat() { struct list * h,* p,* q; char ch; h=【18】 malloc(sizeof(struct list)); p=q=h; ch=getchar(); while(ch!=’?’) { p=【19】 malloc(sizeof(struct list)); p->data=ch; p->next=p; q=p; ch=getchar(); } p->next=’\0’; 【20】 }
1997年4月二级C笔试试卷参考答案 一 选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分) |
|
![]() ![]() |