四川省二级C语言23次考试试题.docx
- 文档编号:6261304
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:25
- 大小:24.96KB
四川省二级C语言23次考试试题.docx
《四川省二级C语言23次考试试题.docx》由会员分享,可在线阅读,更多相关《四川省二级C语言23次考试试题.docx(25页珍藏版)》请在冰豆网上搜索。
四川省二级C语言23次考试试题
四川省普通高等学校计算机应用知识和能力
第二十三次等级考试
二级(C与C++语言)笔试试卷
时间:
2005年10月15日
上午9:
00—11:
00
第一部分
软件技术基础
(共15分)
一、是非判断题(每小题1分,共10分)
(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)
1.数据在计算机内在中的表示是指数据的存储结构。
(1)
2.能影响中断响应次序的技术是中断优先级和中断屏蔽。
(2)
3.链表可以随机访问任意一个结点,而顺序表则不能。
(3)
4.作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。
(4)
5.Windows、OS/2、Linux微机操作系统都是多用户多任务操作系统。
(5)
6.数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。
(6)
7.流式文件和记录式文件都以字符为基本单位进行存取。
(7)
8.不定长文件是指字段的长度不固定。
(8)
9.软件工程的三要素包括方法、工具和环境。
(9)
10.软件结构是以指令为基础而组成的一种控制层次结构。
(10)
二、选择题(每小题1分,共5分)
1.若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能出栈的序列是(11)
11(A)1,4,3,2(B)2,3,4,1
(C)3,1,4,2(D)3,4,2,1
2.任何两个并发进程之间(12)
12(A)一定存在互斥关系(B)一定存在同步关系
(C)一定彼此独立无关(D)可能存在同步或互斥关系
3.以下哪个特征不是分时操作系统的主要特征(13)
13(A)中断管理(B)独立性
(C)交互性(D)多路性
4.以下的准则中哪个不是面向对象软件设计应遵循的(14)
14(A)抽象准则(B)独立性准则
(C)信息屏蔽准则(D)模块化准则
5.需求分析中开发人员主要从用户那里了解(15)
15(A)软件做什么(B)软件的结构
(C)输入的信息(D)软件的测试
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题(每小题1分,共10分)
1.若变量已定义并赋值,下列符合C语法的表达式是(16)
16(A)a:
=b+1(B)a=b=c+2
(C)int18.5%3(D)a=a+7=c+b
2.以下程序输出的结果是(17)
voidmain()
{chara[]="HelloChina";
s[5]=0;
puts(s);
}
17(A)Hello(B)China(C)HelloChina(D)O
3.有以下程序
#include
voidmain()
{char*p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s,%s\n",p,q);
}
若输入abcdef<回车>,则输出为(18)。
18(A)def,def(B)abc,def(C)abc,d(D)d,d
4.下列函数形式正确的是(19)。
19(A)doublefun(intx,inty)(B)fun(intx,y)
{z=x+y;{intz;
returnz;}returnz;}
(C)fun(x,y)(D)doublefun(intx,inty)
{intx,y;{doublez;
doublez=x+y;z=x+y;
returnz;}returnz;}
5.下列有关类和对象的说法不正确的是(20)。
20(A)对象是类的一个实例
(B)一个类只能有一个对象
(C)任何一个对象只能属于一个具体的类
(D)类与对象的关系和数据类型与变量的关系相似
6.派生类的对象对它的基类成员中(21)是可以访问的。
21(A)公有继承的公有成员(B)公有继承的私有成员
(C)保护继承的公有成员(D)私有继承的公有成员
7.已知学生的结构体描述如下:
structstudents
{intno;
charname[10];
charsex;
struct
{intday;
intmonth;
intyear;
}birth;
intscore;
};
用学生结构体定义了变量w:
structstudentsw;
设变量w中的"生日"是"1982年5月29日",下列对生日的正确赋值方法是(22)。
22(A)day=29;(B)w.day=29
month=5;w.month=5;
year=1982;w.year=1982;
(C)w.birth.day=29;(D)birth.day=29;
w.birth.month=5;birth.month=5;
w.birth.year=1982;birth.year=1982;
8.假定p1和p2是已赋值的int型指针,则下面有关运算中,(23)是非法的。
23(A)(p1+=4)=p2(B)p2=10-p1;
(C)if(p1!
=p2)printf("!
=");(D)p1+=(p2-p1);
9.关于C/C++语言,以下叙述正确的是(24)。
24(A)C是面向过程的程序设计语言,C++不支持面向过程的程序设计
(B)C语言支持图形设计,C++不支持
(C)C程序由函数组成,而C++程序由类组成
(D)C是C++的子集
10.设有以下语句:
charx=3,y=6,z;
z=x^y<<2;
则z的值是(25)。
25(A)00010100(B)00011100
(C)00011011(D)00011000
二、读程序回答问题(每个选择3分,共45分)
1.下列程序运行的结果为(26)。
#include
voidmain()
{
inta=2,b=-1,c=2;
if(a
if(b elsec+=1; printf("%d",c); } 26(A)3(B)2(C)1(D)0 2.下列程序运行的结果为(27)。 #include voidmain() { inta=15,b=21,m=0; switch(a%3) { case0: m++;break; case1: m++; switch(b%2) { default: m++; case0: m++;break; } } printf("%d",m); } 27(A)1(B)2(C)3(D)4 3.以下程序运行后,文件test中的内容为(28)。 #include #include voidfun(char*fname,char*st) { FILE*fp; inti; fp=fopen(fname,"w"); for(i=0;i fputc(st[i],fp); fclose(fp); } voidmain() { fun("test","world"); fun("test","hello"); } 28(A)world(B)worldhello(C)helloworld(D)hello 4.读下列程序: #include voidmain() { unionvalue {charch; intn; doublef; }Data; cout<<"sizeof(Data)="< Data.ch='a'; cout< Data.n=100; cout< Data.f=78.168; cout< } ①value是(29)。 29(A)共用体变量名(B)共用体名 (C)结构体变量名(D)结构体名 ②程序的运行结果是(30)。 30(A)sizeof(Data)=13(B)sizeof(Data)=8 aa 100100 78.16878.168 (C)13(D)8 aa 100100 78.16878.168 5.读下列程序: #include voidmain() { staticcharstr[50]="485057ehk105101",*p=str; intsum1=0,sum2=0; while(*p! ='\0') { if(*p>=48&&*p<=57) sum1++; elseif(*p>=101&&*p<=107) sum2++; else; p++; } cout< } ①程序的运行结果是(31)。 31(A)3,2(B)2,3(C)3,12(D)12,3 ②while(*p! ='\0')与(32)功能相同。 32(A)while(*p! =0)(B)while(*p=0) (C)while(*p<>'\0')(D)while(*p! 0) 6.读下列程序: #include #include voidfun(char*w,intn) { chart,*s1,*s2; s1=w; s2=w+n-1; while(s1 } voidmain() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); } ①输出结果是(33)。 33(A)7654321(B)1711717(C)1714171(D)1234567 ②若把程序中的语句: while(s1 while(s1 34(A)7654321(B)1711717(C)1714171(D)1234567 7.下列程序运行结果是(35)。 #defineX5 #defineYX+1 #defineZY*X/2 voidmain() { inta; a=Y; printf("%d",Z); printf("%d\n",--a); } 35(A)76(B)126(C)125(D)75 8.读下列程序: #include intx; voidsub(int*s,intx) { staticintt=0; x+=s[t]; t++; } voidmain() { inta[]={3,8,4,2},i; intx=0; for(i=0;i<4;i++) { sub(a,x); printf("%3d",x); } } ①程序的执行结果是(36)。 36(A)3842(B)3111517 (C)0000(C)2483 ②若把程序第二行的语句"intx;"删除,运行结果是(37)。 37(A)3842(B)3111517 (C)0000(C)2483 9.读下列程序分析运行结果 #include char*cat(char*str1,char*str2) { char*pt; for(pt=str1;*pt! ='\0';pt++); while(*str2! ='\0') *pt++=*str2++; return(pt); } voidmain() { char*p,s1[30]="210",s2[30]="45"; p=cat(s1,s2); printf("%d\n",p-s1); p=cat(s1,s2); printf("%d\n",p-s1); } ①主函数中,执行第一个输出函数后的结果为(38)。 38(A)5(B)6(C)7(D)8 ②主函数中,执行第二个输出函数后的结果为(39)。 39(A)5(B)6(C)7(D)8 10.下列程序的运行结果是(40)。 #include voidmain() { char*str[]={"One","Two","Three","Four"}; char**ptr=str; inti; for(i=0;i<3;i++) printf("%s",(ptr+1)[i]); } 40(A)newohree(B)Two (C)TwoThreeFour(D)指针运算非法,无输出 注意: ①请把下面“程序填空”中各小题答案写在主观题答题纸上 ②每一个空只填一个语句或一个语句所缺的部分内容 三、程序填空(每空2分,共30分) 1.以下程序可把输入的十进制数以十六进制的形式输出。 #include voidmain() { charb[17]="0123456789ABCDEF"; intc[64],d,i=0,base=16; longn; scanf("%ld",&n); do{ c[i]=①; i++; n=n/base; }while(n! =0); for(i--;i>=0;--i) { d=②; printf("%c",③); } printf("\n"); } 2.有一个数是43634,其左右对称,求比它大的对称数中最小的那个。 #include voidmain() { longinti=43634,j; intcount,ch[10]; do { i++; j=i; count=0; while(j) { ch[count]=j%10; j=①; count++; } if(②) break; }while (1); printf("%ld\n",③); } 3.以下程序能统计并输出1至100之间所有能被3整除但不能被7整除的所有正整数。 #include #defineM100 voidfun(intm,int*p,int*t) { inti,num=0; for(i=1;i<=m;i++) if(①) ②; *t=num; } voidmain() { inta[M],n,k; ③; for(k=0;k if((k+1)%5==0) printf("\n"); else printf("%3d",a[k]); printf("\n"); } 4.下面程序功能是从字符串s中删除任何在第二个字符串t中出现的字符,然后输出。 #include voidmain() { chars[81],t[20],*p1,*p2; inti; scanf("%s%s",①); printf("\n"); p1=s; for(i=0;*(p+i);i++) for(p2=t;*p2;p2++) while(②) strcpy(③); printf("%s",s); } 5.文件stu.txt中存放了一个学生各门课程的考试分数,数据之间以逗号分割。 下面程序将文件中的所有分数取出,计算出平均分,显示在屏幕上,还要把这个平均分数按原文件的数据格式记录在原文件中。 例如文件stu.txt中存放的为“60.5,81.1,93.5,90.5”,则程序运行后文件stu.txt中为“60.5,81.1,93.5,90.5,78.366669”。 #include voidmain() { intn=0; floatx=0.0,y; FILE*fp; fp=①; do { fscanf(②); if(feof(fp))break; x+=y; n++; }while (1); x=x/n; printf("average=%f",x); ③; fclose(fp); } 四川省普通高等学校计算机应用知识和能力 第二十三次等级考试 二级(C与C++语言)上机考试试卷(第一套)参考答案 一、程序调试题(文件名为test1-1.c)(40分) 磁盘上有一个名为test1-1.c的C程序文件,其功能是: 输入一个字符串,将其中的每一个连续的数字序列看作一个整数,将这些整数检索出来后依次放入一个longint型数组中,请改正程序中的错误,使程序能得出正确的结果. 注意: 不要增加或删除行,不要合适改程序结构. #include #include math.h*/ main() { charstr[100],*p=str,help[15]; staticlongintnum[50]; inti=0,k=0,m,sign=0; printf("\ninputthestring: "); scanf("%s",p); do {if(*p>=0&&*p<=9)/*改为: *p>=’0’&&*p<=’9’或*p>=48&&*p<=57*/ {sign=1; help[k++]=*p; } elseif(sign=1)/*改为: ==*/ {intn=0; while(--k>=0) num[i]+=(help[k]-48)*((longint)pow(n++,10));/*改为: pow(10,n++)*/ i++; k=0; sign=0; } else/*改为: else;*/ p++; }while(*(p-1)! ='\0'); for(m=0;m printf("%d,",num[m]);/*改为: %ld(即长整型格式输出)*/ } 评分标准: 每改对一处得6分,结果正确得4分 二、编程题(程序文件取名为test1-2.c)(60分) 请用函数调用方式编写程序,要求能实现: (1)在被调函数中求出1到1000之内能被7或11整除,但不能被7和11同时整除的所有整数,并把它们放到数组a中. (2)在主函数中将符合上述条件的整数个数和所有整数输出到屏幕以级文件test1-2.dat中 评分标准: 1.被调函数fun编写正确20分2.文件打开和关闭正确10分 3.函数调用正确5分4.屏幕输出和文件输出正确15分 5.输出格式正确5分6.程序结构合理5分 参考程序: #include #defineM1000 intfun(int*a) {intm,k=0; for(m=1;m<=M;m++) if((m%7==0&&m%11! =0)||(m%7! =0&&m%11==0)) a[k++]=m; returnk; } main() {inta[M],n,k; FILE*fp; clrscr();/*清屏函数*/ fp=fopen("test1-2.dat","w"); n=fun(a); printf("%d\n",n); fprintf(fp,"%d\n",n); for(k=0;k {printf("%5d",a[k]); fprintf(fp,"%5d",a[k]); if((k+1)%10==0) {printf("\n"); fprintf(fp,"\n"); } } fclose(fp); } 四川省普通高等学校计算机应用知识和能力 第二十三次等级考试 二级(C与C++语言)上机考试试卷(第二套)参考答案 一、程序调试题(文件名为test2-1.c)(40分) 磁盘上有一个名为test2-1.c的C程序文件,其功能是: 求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后,如: 876675896101401980431451777(原数组) 876675896101401980431451777980(增添后的数组) 请改正程序中的错误,合程序能得出正确的结果. 注意: 不要增加或删除行,不要合适改程序结构. #include #defineN80 voidfun(int*s,int*t,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川省 二级 语言 23 考试 试题