C语言22次.docx
- 文档编号:24885612
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:19
- 大小:25.68KB
C语言22次.docx
《C语言22次.docx》由会员分享,可在线阅读,更多相关《C语言22次.docx(19页珍藏版)》请在冰豆网上搜索。
C语言22次
四川省普通高等学校计算机应用知识和能力
第二十二次等级考试
二级(C与C++语言)笔试试卷
时间:
2005年4月16日
上午9:
00—11:
00
第一部分
软件技术基础
(共15分)
一、是非判断题(每小题1分,共10分)
(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)
1.C++语言中所定义的类实际上也是一种数据类型。
(1)
2.数据结构的表示包括数据逻辑结构和存储结构两方面的表示。
(2)
3.冒泡排序算法是一种只能实现升序排序,而不能实现降序排序的排序算法。
(3)
4.线性表采用链式存储时,结点的存储地址必须是连续的。
(4)
5.栈顶的位置是随着进栈和退栈操作而变化的。
(5)
6.在软件生存期内,软件必须进行维护,维护不会产生副作用。
(6)
7.采用动态重定位进行地址转换,允许程序在执行过程中在内在中移动。
而静态重定位则不可以。
(7)
8.在软件的需要分析阶段,要直接面向用户,主要考虑用户的经济承受能力和费用的支付问题。
(8)
9.需求分析阶段的主要任务应由系统分析员主持完成。
(9)
10.操作系统是最重要的系统软件。
(10)
二、选择题(每小题1分,共5分)
1.以下特征中哪个不是算法的特征(11)。
11(A)可行性(B)确定性(C)有穷性(D)唯一性
2.在多道程序设计系统中,处于后备状态的作业要经过(12)调度后才能真正执行。
12(A)作业调度(B)作业调度和进程调度
(C)进程调度(D)作业调度和设备调度
3.为解决CPU和I/O设备之间速度匹配问题,常采用“缓冲区”方法。
“缓冲区”的结构多为(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.下列程序运行的结果是(16)
#include
voidswap(intx,inty)
{x^=y;y^=x;x^=y;}
main()
{
inta=010,b=1;
swap(a,b);
printf("%d,%d\n",a,b);
}
16(A)10,1(B)8,1(C)1,8(D)1,10
2.有以下程序
#include
#include
main()
{
char*p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s,%s",p,q);
}
若输入:
abcdef<回车>,则输出为(17)。
17(A)def,def(B)abc,def(C)abc,d(D)d,d
3.下列程序的输出是(18)。
#include
voidmain()
{
inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
cout< } 18(A)003(B)103(C)112(D)012 4.关于类概念的描述中,(19)是错误的。 19(A)类就是C语言中的结构体类型 (B)类是创建对象的样板 (C)类是具有共同行为的若干对象的统一描述体 (D)类是抽象数据类型的实现 5.下列程序的运行结果是(20)。 #include main() { voidfu(); fu(); fu(); } voidfu() { staticinta=0; printf("a=%d,",! a? 1: 8); } 20(A)a=8,a=8,(B)a=1,a=8(C)a=8,a=1,(D)a=1,a=1, 6.以下程序中,输出值是(21)。 #include #defineM3 #defineNM+1 #defineNNN*N/2 main() { printf("%d\n",NN); } 21(A)3(B)4(C)6(D)8 7.若有语句: chars1[]="string1",s2[8],*s3,*s4="string2";则(22)是对库函数strcpy的错误调用。 22(A)strcpy(s1,"string2");(B)strcpy(s4,"string1"); (C)strcpy(s3,"string1");(D)strcpy("string2",s2); 8.以下(23)为不正确的if语句。 23(A)if(x>y);(B)if(x==y)x+=y; (C)if(x! =y)x=x*xelsex+=1;(D)if(x 9.关于C++函数参数的描述中,错误的是(24)。 24(A)实参个数与形参个数可以不同 (B)缺省参数必须放在形参表的最右端 (C)用引用变量作形参可以实现地址传递 (D)重载函数可以有缺省参数 10.若有如下定义: structnode { intdata; structnode*next; } 且已建立下面的链表结构,指针p,q分别指向图中所示结点,则不能将q所指结点插入链表末尾的一组语句是(25)。 head…… 25(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; 二、读程序回答问题(每个选择3分,共45分) 1.下列程序运行的结果为(26)。 #include #include voidfun(char*s,intm) { chart,*p1,*p2; p1=s; p2=s+m-1; while(p1 {t=*p1++;*p1=*p2--;*p2=t;} } main() { chara[]="ABCDEFG"; fun(a,strlen(a)); puts(a); } 26(A)GFEDCBA(B)AGADAGA (C)GAGGAGA(D)AGAAGAG 2.读下列C程序,选择正确的输出结果。 #include #include voidfun(charstr[][10],intn) { chart[20]; inti,j; for(i=0;i for(j=i+1;j if(strlen(str[i]) { strcpy(t,str[i]); strcpy(str[i],str[j]); strcpy(str[j],t); } } main() { charstr[][10]={"abc","aabcd","abed","a","acdefg"}; inti; fun(str,5); for(i=0;i<5;i++) printf("%2d",strlen(str[i])); printf("\n"); for(i=0;i<5;i++) puts(str[i]); } (1)main函数中,第一个for循环的输出结果为: (27)。 27(A)65431(B)13456 (C)76542(D)24567 (2)main函数中,第二个for循环的输出结果为: (28)。 28(A)abc(B)a(C)acdefg(D)a aabcdabcaabcdabc abedabedabedaabcd aaabcdabcabed acdefgacdefgaaabcd 3.以下是一个C++程序,读程序并回答问题。 #include intfun(intu,intv) { inttemp; while(v! =0) { temp=u%v; u=v; v=temp; } returnu; } voidmain() { intu,v; intt; cout<<"Inputtwointegers: "; cin>>u>>v; t=fun(u,v); cout< cout< } 若从键盘中输入1015;回答下列两个问题: (1)第一条输出语句的输出结果为(29)。 29(A)5(B)10(C)15(D)30 (2)第二条输出语句的输出结果为(30)。 30(A)5(B)10(C)15(D)30 4.以下程序的运行结果是(31)。 #include chang(char*c,intfg) { if(*c=='') return1; elseif(fg&&*c<='z'&&*c>='a') *c+='A'-'a'; return0; } main() { intflag=1; charch; do { ch=getchar(); flag=chang(&ch,flag); putchar(ch); }while(ch! ='\n'); } 程序运行时,从第一列开始输入以下字符, Thisisabook! 31(A)tHISISABOOK! (B)thisIsABook! (C)ThisIsABook! (D)ThisIsaBook! 5.以下程序的运行结果是(32): #include main() { inta=1,b=2,c=3; a++; c+=b; { intb=4,c; c=2*b; a+=c; printf("%d,%d,%d,",a,b,c); } printf("%d,%d,%d\n",a,b,c); } 32(A)10,4,8,10,2,5(B)6,2,4,6,2,4(C)10,4,8,10,2,8(D)9,4,8,2,2,5 6.以下程序的输出是(33)。 #include main() { intx=1,y=0,a=0,b=0; switch(x) { case1: switch(y) { case0: a++;break; case1: b++;break; } case2: a++;b++;break; case3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 33(A)a=1,b=0(B)a=2,b=1(C)a=1,b=1(D)a=2,b=2 7.若有以下程序段: inta[]={4,0,2,3,1},k,j,t; for(j=1;j<5;j++) { t=a[j]; k=j-1; while(k>=0&&t>a[k]) {a[k+1]=a[k];k--;} a[k+1]=t; } 则该程序段的功能是(34)。 34(A)对数组a进行插入排序(升序) (B)对数组a进行插入排序(降序) (C)对数组a进行选择排序(升序) (D)对数组a进行选择排序(降序) 8.选择下面程序运行的结果。 #include intm[3][3]={{1},{2},{3}}; intn[3][3]={1,2,3}; main() { printf("%d\n",m[1][0]+n[0][0]); printf("%d\n",m[0][1]+n[1][0]); } 第1条printf语句行输出的结果是(35)。 35(A)0(B)1(C)2(D)3 第2条printf语句行输出的结果是(36)。 36(A)0(B)1(C)2(D)3 9.选择下面程序运行的结果(设int占2个字节) #include main() { structdate { intyear,month,day; }today; union { longi; intk; charc; }mix; printf("date=%d\n",sizeof(structdate)); printf("mix=%d\n",sizeof(mix)); } 第1条printf语句行输出的结果为(37)。 37(A)date=2(B)date=4(C)date=6(D)前3个答案都是错误的 第2条printf语句行输出的结果为(38)。 38(A)mix=2(B)mix=4(C)mix=6(D)前3个答案都是错误的 10.读下面程序,程序的命名为MyCopy.c。 /*---------MyCopy.c---------*/ #include main(intargc,char*argv[]) { if(argc! =3) printf("\nFormat: MyCopy else { FILE*source,*desine; source=fopen(argv[1],"rb"); desine=fopen(argv[2],"wb"); if(source==NULL) printf("ERROR: Can'topensourcefile%s! \n",argv[1]); elseif(desine==NULL) printf("ERROR: Can'topensourcefile%s! \n",argv[2]); else { while(! feof(source)) fputc(fgetc(source),desine); } fclose(source); fclose(desine); } } (1)程序的功能是(39)。 40(A)将磁盘文件的信息显示在屏幕上 (B)将一个磁盘文件复制到另一个磁盘文件中 (C)将两个磁盘文件合并 (D)以上答案都不对 (2)当编译、连接后,在命令行键入: MyCopyFILE1FILE2<回车>,则程序将实现(40)。 41(A)将FILE1的信息显示在屏幕上 (B)将FILE1和FILE2合并 (C)将一个FILE2复制到FILE1中 (D)将一个FILE1复制到FILE2中 注意: ①请把下面“程序填空”中各小题答案写在主观题答题纸上 ②每一个空只填一个语句或一个语句所缺的部分内容 三、程序填空(每空2分,共30分) 1.以下程序的功能是将磁盘文件a.dat中的10个整数读入并进行升序排序。 #include voidsort(int*p,intn) { inti,j,t; for(i=0;i for(j=i+1;j if(①) {t=p[i];p[i]=p[j];p[j]=t;} } main() { inta[10],i; FILE*fp; fp=fopen("a.dat","r"); for(i=0;i<10;i++) ②; fclose(fp); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); ③; for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); } 2.下列程序用递归算法实现,输入任意一个整数,在各数位之间插入空格后输出。 #include main() { longintn; voidfunc(long); scanf("%ld",&n); ①; } voidfunc(②) { if(m>=0) ③; printf("%d",m%10); } 3.程序功能: 有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。 折半查找法: 设数组长度为n,则将输入的数m与a[n/2]比较,若ma[n/2],则将a[n/2]到a[n]的数继续折半进行查找。 #include main() { inta[10]={12,32,45,62,71,76,80,85,90,95}; intnum,bott,top,mid; printf("Inputanumber: \n"); scanf("%d",&num); bott=0; top=9; while(bott<=top) { mid=①; if(num==a[mid]) {printf("%disthe%dnumber\n",num,mid+1);break;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 22