精品重庆市计算机等级考试07年08年C语言二级考试试题及答案.docx
- 文档编号:29708329
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:59
- 大小:154.17KB
精品重庆市计算机等级考试07年08年C语言二级考试试题及答案.docx
《精品重庆市计算机等级考试07年08年C语言二级考试试题及答案.docx》由会员分享,可在线阅读,更多相关《精品重庆市计算机等级考试07年08年C语言二级考试试题及答案.docx(59页珍藏版)》请在冰豆网上搜索。
精品重庆市计算机等级考试07年08年C语言二级考试试题及答案
重庆市计算机等级考试07年——08年C语言二级考试试题及答案
二级C语言笔试试卷(A)
2007年4月
注意事项:
1.一、二题为客观题,请将答案涂在机读答题卡上
2.三、四、五、六题为主观题,请将答案做在答题纸上
一、单项选择题。
(每小题1分,共20分)
1.在C程序的函数调用时,主调函数中的实参和被调函数中的形参()。
(A)个数、次序必须相同,但数据类型可以不考虑
(B)个数、次序和对应参数的数据类型都应该相同
(C)个数、次序和数据类型均可以不相同
(D)对应参数数据类型应相同,但个数和次序可以不考虑
2.如a为int型,则与表达式a等价的C语言关系表达式是()
(A)a>0(B)a!
=0(C)a==0(D)a<0
3.循环语句for(a=0,b=0;(b!
=45)||(a<5);a++);的循环次数是()
(A)4(B)3(C)5(D)无数多次
4.设有字符数组a,则正确的输入语句是()。
(A)gets('a');(B)scanf("%c",a);
(C)scanf("%s",a);(D)gets("a");
5.enumcolor{red,green,yellow=5,white,black};定义了一枚举类型。
编译程序为值表中各标识符分配的枚举值依次为()。
(A)1、2、3、4、5(B)0、1、5、2、3
(C)0、1、5、6、7(D)3、4、5、6、7
6.运行完下列程序后,在屏幕上的内容是()。
voidmain()
{inta=0;
a+=(a=12);
printf("%d\n",a);
}
(A)0(B)6(C)12(D)24
7.若x,y为实数类型的变量,要判断x,y相等,最好使用下列关系表达式()。
(A)x==y(B)x-y==0
(C)fabs(x-y)<1e-8(D)labs(x-y)<1e-8
8.若有以下的定义、说明和语句,则值为101的表达式是()。
structCW
{inta;
int*b;
}*p;
intx0[]={11,12},x1[]={31,32};
structCWx[2]={100,x0,300,x1};
p=x;
(A)*p->b(B)p->a(C)++(p->a)(D)(p++)->a
9.以下程序的输出结果是()。
intx=3,y=4;
voidmain()
{intx,y=5;
x=y++;
printf("%d",x);
}
(A)3(B)4(C)5(D)6
10.在C语言中,函数默认的存储类型为()。
(A)auto(B)register(C)static(D)extern
11.有定义:
floaty,*p=&y;,假定变量y在内存中所占地址为100~103。
那么p的值为()。
(A)100(B)101(C)102(D)103
12.有定义:
inta[10],n,*p1=a,*p2=&a[9];,则正确的赋值语句为()。
(A)n=p2-p1;(B)n=p2*p1;(C)n=p2+p1;(D)n=p1/p2;
13.调用strlen("abcd\0ef\ng\0")的结果为()。
(A)4(B)5(C)8(D)10
14.执行下面程序中输出语句后,a的值是()。
#include
main()
{inta;
printf("%d\n",(a=3*5,a*4,a));
}
(A)65(B)20(C)15(D)10
15.若有定义inta,b,x;且变量都已正确赋值,下面选项中合法的if语句是()。
(A)if(a==b)x++;(B)if(a=
(C)if(a<>b)x++;(D)if(a=>b)x++;
16.执行下面的程序后,变量a的值是()。
#include
#defineSQR(X)X*X
voidmain()
{inta=10,k=2,m=3;
a/=SQR(m)/SQR(k);
printf("%d\n",a);
}
(A)10(B)1(C)5(D)0
17.若变量t为double类型,表达式(t=1,t+5,t)的值是()。
(A)1(B)6.0(C)1.0(D)6
18.在C语言中,下面关于数组的描述中正确的是()。
(A)数组的大小是固定的,但可以有不同类型的数组元素
(B)数组的大小是可变的,但所有数组元素的类型必须相同
(C)数组的大小是固定的,所有数组元素的类型必须相同
(D)数组的大小是可变的,可以有不同的类型的数组元素
19.下述程序的输出结果是()。
#include
voidmain()
{inta,b,c=241;
a=c/100%9;
b=-1&&-1;
printf("%d,%d\n",a,b);
}
(A)2,0(B)2,1(C)6,1(D)0,-1
20.若有以下说明和语句,则下列引用方式中不正确的是()。
structworker
{intno;
char*name;
}work,*p=&work;
(A)work.no(B)(*p).no(C)p->no(D)work->no
二、基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。
每空2分,共10分)
1.在C语言中,函数一般由两个部分组成,它们是函数首部和①。
2.任何程序都可调用标准函数exit(),当它被调用时就②程序的执行。
3.一个C语言程序在可以被执行之前,需要经过的4个处理程序是:
编辑程序、预处理程序、编译程序和③。
4.在C语言中无固有的输入和输出语句,但是用C语言编写的程序可以用函数调用的形式来实现输入、输出,这些函数由④提供。
5.C标准库函数rewind的作用是⑤。
备选项:
(A)主函数
(B)函数体
(C)函数首部
(D)用户自定义函数
(E)终止
(F)使读写指针指向文件的开头
(G)标准I/O库/系统
(H)连接程序
(J)判断文件指针是否指向文件末尾
三、程序填空题。
(每空2分,共20分)。
1.下面程序的功能是从键盘上输入一行字符,将其中的小写字母转换为大写字母后输出。
请填空完善程序。
#include
voidmain()
{charc;
while((c=①)!
='\n')
if(c>='a'&&c<='z')
printf("%c",c-32);
}
2.下面程序的功能是从当前目录下的文本文件“f1.txt”中读取前10个字符,依次显示在屏幕上;如果文本文件中不足10个字符,则读完为止;请填空完善程序。
#include
voidmain()
{FILE*fp;
inti;
charc;
if(②==NULL)
{printf("Can'topenthisfile!
\n");
return;
}
for(i=0;i<10;i++)
{if(feof(fp))
break;
c=fgetc(fp);
putchar(c);
}
fclose(fp);
}
3.下面程序的功能是输出数组中的各字符串,请填空完成程序。
#include
voidmain()
{char*a[]={"abcd","12345","efghijk","67890"};
char③;
intj=0;
p=a;
for(;j<4;j++)
④;
}
4.下面函数mfc用于求取两个正整数的最大公因子,请填空完善函数。
intmcf(inta,intb)
{inttemp;
while(b)
{temp=⑤;
a=b;
b=temp;
}
returna;
}
5.下面程序的功能是将字符串str的内容颠倒过来并输出,请填空完善程序。
#include
voidmain()
{charstr[]={"abcdefg"},*p1,*p2,ch;
p1=p2=str;
while(*p2!
='\0')
p2++;
⑥;
while(p1 {ch=*p1,*p1=*p2,*p2=ch; ⑦; p2--; } puts(str); } 6.下面函数yh的功能是构成一个杨辉三角形,请填空完成该函数。 #include #defineN11 voidyh(inta[][N]) {intj,k; for(j=1;j {a[j][1]=1; a[j][j]=⑧; } for(⑨;j for(k=2;k a[j][k]=⑩+a[j-1][k]; } 四、阅读程序题(每小题5分,共30分 1.下面程序的输出结果是()。 #include voidmain() {voidfun(int*k); intw=5; fun(&w); } voidfun(int*k) {(*k)++; printf("%d\n",*k++); } 2.下面程序的输出结果是()。 #include voidmain() {charch[2][5]={"1234","5678"},*p[2]; intj,k,s=0; for(k=0;k<2;k++) p[k]=ch[k]; for(k=0;k<2;k++) for(j=0;p[k][j]>'0'&&p[k][j]<='9';j+=2) s=10*s+p[k][j]-'0'; printf("s=%d\n",s); } 3.下面程序的输出结果是()。 #include intfunc(int,int); voidmain() {intk=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } intfunc(inta,intb) {staticintm=1,n=2; n+=m+1; m=n+a+b; returnm; } 4.下面程序的输出结果是()。 #include voidmain() {inta[10]={1,2,3,4,5,6,7,8,9,10},k,s,i; doubleave; for(k=s=i=0;i<10;i++) {if(a[i]%2) continue; s+=a[i]; k++; } if(k! =0) {ave=s/k; printf("%d,%f\n",k,ave); } } 5.在下列程序中,若输入为: todayisMonday! #include voidmain() {chars[40],c,*str=s; intnum=0,word=0; gets(str); while((c=*str++)! ='\0') {if(c=='') word=0; elseif(word==0) {word=1; num++; } } printf("%dwords\n",num); } 6.下列程序的输出结果是()。 #include unsignedf(unsignednum) {unsignedk=1; do {k*=num%10; num/=10; }while(num); returnk; } voidmain() {intx=35,y=550; printf("%d,%d\n",f(x),f(y)); } 五、编程序。 (每小题10分,共20分) 1.函数delspace的功能是删除一个字符串中所有的空格。 例如,输入字符串为"Thisisastring",则输出结果为"Thisisastring"。 测试用主函数如下所示,请编制函数delspace。 #include #include voidmain() {char*delspace(char*str); chars[81],*ds; gets(s); ds=delspace(s); printf("\nResult: %s\n",ds); } 2.已知两个3位数abc和cba之和为1333(即abc+cba=1333),编程序求出3个数字a、b和c。 二级C语言笔试试卷(A)参考答案 (2007年4月) 一、单项选择题。 (每小题1分,共20分) BBDCCDCCCDAAACABCCBD 二、基本概念选择填空题(每空2分,共10分) ①B②E③H④G⑤F 三、程序填空题。 (每空2分,共20分)。 ①getchar()②(fp=fopen("f1.txt","r")) ③**p④puts(p[j])或puts(*(p+j)) ⑤a%b⑥p2--⑦p1++ ⑧1⑨j=3⑩a[j-1][k-1] 四、阅读程序题(每小题5分,共30分) 1.62.s=13573.9,19 4.5,6.0000005.3words6.15,0 五、编程序。 (每小题10分,共20分) 1.参考程序及评分标准 char*delspace(char*str) {char*p=str;//2分 while(*p) {if(*p=='') strcpy(p,p+1); else p++; }//6分 returnstr;//2分 } 2.参考程序及评分标准 //参考程序一 #include voidmain() {intn,a,b,c;//2分 for(n=100;n<1000;n++) {a=n/100; b=n/10%10; c=n%10; if(a*100+b*10+c+c*100+b*10+a==1333) printf("abcis: %d%d%d\n",a,b,c); } }//8分 //参考程序二 #include voidmain() {intn,m,a,b,c;//2分 for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) {n=a*100+b*10+c; m=c*100+b*10+a; if(n+m==1333) printf("abcis: %d%d%d\n",a,b,c); } }//8分 二级C语言笔试试卷(A) 2007年11月 注意事项: 1.一题为客观题,请将答案涂在机读答题卡上 2.请将二、三、四、五题的答案做在答题纸上 一.单项选择题。 (每小题1分,共20分) 1.一个C程序的执行是从()。 (A)本程序的main函数开始 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 (C)本程序的main函数开始,到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始,到本程序main函数结束 2.设有C语句: intx=3,y=4,z=5;,则下面表达式中值为0的是()。 (A)x&&y(B)x<=y (C)x||y+z&&y-z(D)! ((x z||1)) 3.以下有关宏替换的叙述不正确的是()。 (A)宏替换不占用运行时间(B)宏名无类型 (C)宏替换只是字符串替换;(D)宏替换是在运行时进行的 4.在标准库函数的调用形式“fread(buffer,size,count,fp);”中,参数buffer代表的是()。 (A)一个整型变量,代表要读入的数据总数 (B)一个文件指针,指向要读的文件 (C)一个指针,指向读入数据存放的首地址 (D)一个存储区,存放要读的数据项 5.位运算中,操作数每左移一位,在没有溢出的情况下其结果相当于()。 (A)操作数乘以2(B)操作数除以2 (C)操作数除以4(D)操作数乘以4 6.下面程序运行后,变量m的值为()。 #include voidmain() {intm,n,k; m=(n=4)+(k=10-7); printf(〞m=%d\n”,m); } (A)4(B)3(C)7(D)14 7.下面程序运行结果(或出现的情况)是()。 #include voidmain() {intx=3,y=0,z=0; if(x=y+z) printf(〞****〞); else printf(〞####\n〞); } (A)有语法错误不能通过编译 (B)输出: **** (C)可以通过编译,但不能通过连接,因而不能运行 (D)输出: #### 8.已有定义intk=2;int*ptrl,*ptr2,且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。 (A)k=*ptr1+*ptr2;(B)ptr2=k; (C)ptr1=ptr2;(D)k=*ptr1*(*ptr2); 9.若有已经建好的链表结构如下,指针平p、q分别指向图示节点(b节点为插入c节点前的链表末尾); ab∧c pq 不能实现将q所指节点插入到链表末尾的一组语句是()。 (A)q->next=NULL;p=p->next;p->next=q; (B)p=p->next;q->next=p->next;p->next=q; (C)p=p->next;q->next=p;p->next=q; (D)p=(*p).next;(*q).next=(*p).next;(*p).next=q; 10.有定义inta=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b,c的值分别为() (A)345(B)435(C)444(D)445 11.下列程序的执行结果是()。 #include unionss {shortinti; charc[2]; }; voidmain() {unionssx; x.c[0]=10; x.c[1]=1; printf(〞%d〞,x.i); } (A)11(B)266(C)265(D)138 12.若有C语言inti=10;,则执行下面程序段后变量i的值是()。 switch(i) {case9: i+=1; case10: case11: i-=1; default: i+=1; } (A)10(B)11(C)12(D)9 13.在下列选项中,不正确的赋值语句是()。 (A)t/=5;(B)n1=(n2=(n3=0));(C)k=i==j;(D)a=b+c=1; 14.下面C程序运行后变量x的值是()。 #include voidmain() {inta,b,c,x; a=b=c=0;x=35; if(! a) x--; elseif(b) ; if(c) x=3; else x=4; printf(〞%d\n〞,x); } (A)34(B)4(C)35(D)3 15.设有以下宏定义: #defineN3 #defineY(n)(N+1*n) 则执行语句: z=2*(N*Y(5+1));后,z的值为()。 (A)30(B)72(C)48(D)54 16.在以下的四个运算符中,优先级最低的运算符是()。 (A)<=(B)/(C)! =(D)&& 17.已知’E’的ASCII码是69,则执行下面C语句的结果是()。 printf(〞%c〞,’D’-‘8’+’5’); (A)66(B)A(C)B(D)E 18.设有以下语句: inta=3,b=6,c;c=a^b<<2;执行后c的低8位二进制值是()。 (A)00011011(B)00010100(C)00011100(D)00011000 19.在C语言中,以下叙述错误的是()。 (A)函数被调用时,系统才为形参分配内存 (B)实参和对应形参的数据类型必须一致 (C)实参可以是变量、常量或表达式 (D)形参可以是变量、常量或表达式 20.字符串常量〞abc\nt\012\xa1*2〞在内存中所占的存储空间节数是()。 (A)11(B)13(C)15(D)18 二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项,并讲其号码填入各小题的空白处。 每空2分,共10分) 1.函数首部intmain(intargc,char*argv[])中argc表示的是①。 2.C语言能处理的文件类型可以是文本文件和②。 3.下面语句定义了共用体(联合体)变量a,则a占用③个字节。 uniondata{shortinti;charc;d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 重庆市 计算机等级考试 07 08 语言 二级 考试 试题 答案