2010年9月全国计算机二级C++笔试试题解析
2010年9月计算机二级C语言笔试试题及答案公布范文
2010年9月计算机二级C语言笔试试题及答案公布(含解析)一、选择题(1)答案:(C)解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
(2)答案:(B)解析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
(3)答案:(B)解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。
所以出栈时一定是先出D,再出C,最后出A。
(4)答案:(A)解析:从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。
当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法,故本题答案应该为选项A)。
(5)答案:(D)解析:滥用GOTO 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。
(6)答案:(D)解析:软件工程包括3个要素,即方法、工具和过程。
方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
(7)答案:(A)解析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
(8)答案:(C)解析:关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。
(9)答案:(C)解析:数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。
2010.9.C语言笔试答案解析
2010年9月全国计算机等级考试二级笔试试卷C语言程序设计答案和解析一、选择题(1)【答案】B【解析】线性表的顺序存储结构指的是用一组地址连续的存储单元依次存放线性表中的各个元素,而链式存储结构的存储空间是可以不连续的,除了存储元素本身的信息外,还需要存储下一个元素的地址,用来表示数据元素之间的前后件关系。
所以,线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构。
(2)【答案】C【解析】栈被定义为只允许在表的一端进行插入和删除的线性表。
插入删除的一端为栈顶,另一端称为栈底,当有新元素进栈时,栈顶指针向上运动;当有元素出栈时,栈顶指针向下运动。
所以,在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化。
(3)【答案】D【解析】软件测试的目的是为了发现程序中的错误。
(4)【答案】A【解析】软件危机主要表现在:1、软件的需求增长得不到满足。
2、软件开发成本和进度无法控制,成本不断提高。
3、软件质量难以保证。
4、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
所以选项A 不属于。
(5)【答案】A【解析】软件的生命周期是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。
(6)【答案】D【解析】继承广义的地说,是指能够直接获得已有的性质和特征,而不必重复地定义它们。
在面向对象的软件技术中,继承是指一个子类直接继承其父类的全部描述(数据和操作),这些属性和操作在子类中不必定义。
(7)【答案】D【解析】层次型、网状型和关系型这三种都是数据库的数据模型,数据模型就是数据之间的联系方式。
(8)【答案】C【解析】两个实体集之间的联系分为3类:一对一联系(1 :1)、一对多联系(1 :n)和多对多联系(n :n)。
在本题中,一个工作人员可以使用多台计算机,而一台计算机可以被多个人使用,则实体工作人员与实体计算机之间的联系是多对多。
(9)【答案】C【解析】模式的三个即被层次反映了模式的3个不同环境以及它们的不同要求,其中内模式处于最底层,它反映了数据在计算机物理结构中的实际存储形式,概念模式处于中层,它反映了设计者的数据全局逻辑要求,而外模式是处于最高层,反映了用户对数据的要求。
全国计算机等级考试二级C语言机试真题2010年9月
全国计算机等级考试二级C语言机试真题2010年9月(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充fun函数,该函数的功能是:判断一个年份是否为闰年。
例如,1900年不是闰年,2004是闰年。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]#include<stdio.h>#include<conio.h>int fun(int n)int fiag=0;if(n%4==0)if( (1) )fiag=1;if( (2) )flag=1;return (3) ;void main()int year;clrscr();printf("Input the year:");scanf("%d", &year);if(fun(year))printf("%d is a leap year./n", year);elseprintf("%d is not a leap year./n", year);(分数:30.00)填空项1:__________________ (正确答案:[1] n%100 !=0[2] n%400==0[3] flag)解析:[解析] 题的关键是要知道闰年的定义,如果年份能被4整除但不能被100整除,或者能被400整除,这两种情况满足之一都是闰年。
填空1:显然此处属于第一种情况,能被4整除但不能被100整除。
所以这里应该填n%100!=0,只有满足这个条件,flag才能被赋值1。
填空2:此处属于第二种情况,能被400整除,所以应该填n%400==0。
填空3:从程序中可以知道,当满足以上两种情况之一时,flag就被赋值1,显然flag属于标志单元。
再看主函数中对fun()函数的调用,显然需要返回的值不是真就是假,即函数fun()中标志单元flag的内容。
2010年9月国家二级(ACCESS)笔试真题试卷(题后含答案及解析)
2010年9月国家二级(ACCESS)笔试真题试卷(题后含答案及解析) 题型有:1. 选择题 2. 填空题选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1.下列叙述中正确的是( )。
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对正确答案:B解析:与顺序存储结构相比,线性表的链式存储结构需要更多的空间存储指针域,因此,线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构。
2.下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.上述三种说法都不对正确答案:C解析:栈是限制仅在表的一端进行插入和删除的运算的线性表,通常称插入、删除的这一端为栈顶,另一端称为栈底。
3.软件测试的目的是( )。
A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误正确答案:C解析:软件测试的目的主要是在于发现软件错误,希望在软件开发生命周期内尽可能早的发现尽可能多的bug。
4.下面描述中,不属于软件危机表现的是( )。
A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高正确答案:A解析:①对软件开发的进度和费用估计不准确;②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
5.软件生命周期是指( )。
9月全国计算机等级考试二级c语言笔试试题及答案范文资料讲解
2010年9月全国计算机等级考试二级C语言笔试试题班级:姓名:一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%b D)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0 C )字符斜杠:‘\’D)字符串:"\007"(16)表达式a+=a-=a=9的值是A)9B)_9C)18D)0(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是A)a<>b+c B)ch=getchar()C)a==b+c D)a++(18)有以下程序#include<stdio.h>main(){int a=1,b=0;if(!a)b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0{case 0: a++; break; {case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C)switch((int)x%2)D)switch((int)(x)%2){case 0: a++; break; {case 0.0: a++; break;case 1: b++; break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }(20)有以下程序#include <stdio.h>main(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环(22)有以下程序#include<stdio .h>main(){char s[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuv B)字符t的ASCII码值C)t D)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){char x[]=”STRING”;x[0」=0;x[1]=’\0’;x[2」=’0’;printf(”%d %d\n”,sizeof(x),strlen(x));}程序运行后的输出结果是A)6 1B)7 0C)6 3D)7 1(24)有以下程序#include<stdio.h>Int f(int x);main(){int n=1,m;m=f(f(f(n)));printf(”%d\n”,m);}int f(int x){return x*2;}程序运行后的输出结果是A)1B)2C)4D)8(25)以下程序段完全正确的是A)int *p; scanf("%d",&p); B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf("%d",p); D)int k, *p:; *p= &k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4];B)int **p;C)int *(p「4」);D)int (*p)「4」; (27)下列定义数组的语句中,正确的是A)int N=10;B)#define N 10int x[N]; int x[N];C)int x[0..10]; D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0}; C)int c[2+3];D)int i=5,d[i];(29)有以下程序#include<stdio.h>void f(int *p);main(){int a[5]={1,2,3,4,5},*r=a;f(r);printf(”%d\n”;*r);}void f(int *p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int*a;int n){int i、j、k、t;for (i=0;i<n一1;1+=2){k=i;‘for(j=i;j<n;j+=2)if(a[j]>a〔k])k=j;t=a〔i];a〔i]=a[k];a〔k]=t;}}main(){int aa「10」={1、2、3、4、5、6、7},i;fun(aa、7);for(i=0,i<7; i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7 C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1 (31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(s l ,s2)==1)ST;D)if(sl-s2==0)ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是A)while(*t=*s){t++;s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序(strcat函数用以连接两个字符串)#include<stdio.h>#include<string .h>main(){char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJK B)ABCDIJK C)IJK D)EFGIJK(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>void fun(char*p){int i=0;while (p[i]){if(p[i]==’ ’&&islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;i++;}}main(){char s1[100]=”ab cd EFG!”;fun(s1);printf(”%s\n”,s1);}程序运行后的输出结果是A)ab cd EFG!B)Ab Cd EFg!C)aB cD EFG!D)ab cd EFg!(35)有以下程序#include<stdio.h>void fun(int x){if(x/2>1)fun(x/2);printf(”%d”,x);}main(){fun(7);printf(”\n”);}程序运行后的输出结果是A)1 3 7B)7 3 1C)7 3D)3 7(36)有以下程序#include<stdio.h>int fun(){static int x=1;x+=1;return x;}main(){int i;s=1;for(i=1;i<=5;i++)s+=fun();printf(”%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序#inctude<stdio.h>#include<stdlib.h>Main(){int *a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#include<stdio.h>main(){int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6(39)若有以下语句Typedef struct S{int g; char h;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量(40)有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”、C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<I二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010年9月全国计算机等级考试二级C真题
2010年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是______。
A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是______。
A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是______。
A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是______。
A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指______。
A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指______。
A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是______。
A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是______。
A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是______。
2010年9月全国计算机等级考试二级C语言试题及答案
2010年9月全国计算机等级考试二级C语言笔试试题及答案一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))(1)下列选项中不属于软件生命周期开发阶段任务的是A)详细设计B)概要设计C)软件维护D)软件测试(2)树是结点的集合,它的根结点数目是A)有且只有1 B)1或多于1 C)0或1 D)至少2(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承B)对象的多态C)对象的封装D)对象的分类(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和A)语句成分B)变量成分C)对象成分D)传输成分(5)冒泡排序在最坏情况下的比较次数是A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2(6)下列叙述中,不属于软件需求规格说明书的作用的是A)作为确认测试和验收的依据B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)便于用户、开发人员进行理解和交流D)便于开发人员进行需求分析(7)下列叙述中错误的是A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个函数可单独作为一个C程序文件存在(8)下列不属于软件工程的3个要素的是A)方法B)过程C)工具D)环境(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)每个C程序文件中都必须有一个main()函数B)在C程序的函数中不能定义另一个函数C)C程序可以由一个或多个函数组成D)在C程序中main()函数的位置是固定的(11)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(12)下列定义变量的语句中错误的是A)double int_; B)int _int; C)char For D)float USS(13)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用(14)以下选项中,合法的一组C语言数值常量是(15)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);C)scanf("%d",p); D) scanf("%d",a,b,c);(17) 有以下程序main(){int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d \n",a,b,c);程序输出的结果是A)***a=25,b=13,c=19 B)***a=26,b=14,c=19C)### a=25,b=13,c=19 D)### a=26,b=14,c=19(19)下列程序段的输出结果是int a=1234;float b=123.456;double c=12345.54321;printf("-,%2.1f,%2.1f",a,b,c);A)无输出B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5(20)有以下程序main(){int a=0,b=0;a=10; /*给a赋值b=20; 给b赋值*/printf("a+b=%d\n",a+b); /* 输出计算结果*/}程序运行后输出结果是A)30 B)a+b=30 C)a+b=0 D)出错(21)若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#includemain(){ char c;do{ switch(c=getchar()){ case ′a′:case ′A′:case ′e′:case ′E′:case ′i′:case ′I′:case ′o′:case ′O′:case ′u′:case ′U′:v1+=1;default:v0+=1;v2+=1;}} while(c!=′\n′);printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12 (22) 有以下程序#includemain(){int y=9;for( y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)732 B)433 C)852 D)874(23) 设有以下程序段int x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次(24)有以下程序fun(int x,int y){return(x+y);}main(){int a=1,b=2,c=3,sum;sum=fun((a++,b++b,a+b),c++);printf("%d\n",sum);}执行后的输出结果是A)5 B)7 C)8 D)3(25)执行下面的程序段后,变量k中的值为int k=3, s[2];A)不定值B)35 C)31 D)20(26)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL(27)以下程序段的描述,正确的是x=-1;do{x=x*x;} while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(28)有以下程序fun(int x,int y){static int m=0,i=2;i+=m+1;m=i+x+y; return m;}main(){int j=1,m=I,k;k=fun(j,m); printf("%d",k);k=fun(j,m); printf("%d\n",k)}执行后的输出结果是A)5,5 B)5,11 C)11,11 D)11,5(29)有以下程序fun(int x){int p;if(x==0║x= =1) return(3);p=x-fun(x=2);retum p;}main(){ prinf("%d\n",fun(7));}执行后的输出结果是A)7 B)3 C)3 D)0(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A)p向高地址移了一个字节B)p抽高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价(31)有以下程序{int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)4 (32)下列程序执行后的输出结果是void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){ int i=0; func1(i); printf("\n");}A)hello B)hel C)hlo D)hlm (33)在下述程序中,判断i>j共执行的次数是main(){ int i=0, j=10, k=2, s=0;for (;;){ i+=k;if(i>j){ printf("%d",s);break;} s+=i;}}A)4 B)7 C)5 D)6 (34)以下函数返回a所指数组中最大值所在的下标值fun(int *a,int n){ int i,j=0,p;p=j;for(i=j;iif(a[i]>a[p]);return(p);在下划线处应填入的内容是A)i=p B)a[p]=a[i]C)p=j D)p=i(35)下列程序执行后的输出结果是main(){ int a[3][3], *p,i;p=&a[0][0];for(i=1; i<9; i++)p[i]=i+1;printf("%d\n",a[1][2]);}A)3 B)6 C)9 D)随机数(36) 有以下程序#includevoid fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/ {int t,i,j;for(i=0;ifor(j=i+1;jif (a}main(){int c[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for (i=0;i<10;i++) printf("%d,",c);printf("\n");}程序运行的结果是A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,(37)以下程序的输出结果是#includevoid prt (int *x, int*y, int*z){ printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){ int a=10,b=40,c=20;prt (&a,&b,&c);prt (&a,&b,&c);}A)11,42, 3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,21(38) 有以下程序:#includevoid fun(char *t,char *s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){char ss[10]=”acc”,aa[10]=”bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序运行结果是A) accxyy , bbxxyy B) acc, bbxxyyC) accxxyy,bbxxyy D) accbbxxyy,bbxxyy(39) 有以下程序#includemain(){ FILE *fp; int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n); fclose(fp);}程序运行后的输出结果是A)20 30 B)20 50 C)30 50 D)30 20 (40) 有以下程序main(){int x[3][2]={0},I;for(I=0;I<3;I++) scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若运行时输入:246<回车>,则输出结果为A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6 (41)有以下程序int add(int a,int b){return+b};}{int k,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);(41)有以下程序#include <string.h>main(int argc,char *argv[]){int i=1,n=0;while(i<arge){n=n+strlen(argv[i]);i++;}printf(“%d\n”,n);}该程序生成的可执行文件名为:proc.exe。
2010年9月全国计算机二级C语言考试试题分析
2010年9月全国计算机二级C语言考试试题分析来源:希赛教育 2010/9/18 【考试大:中国教育考试第一门户】模拟考场视频课程字号:T T2010年9月全国计算机二级C语言真题相关推荐:笔试试题试题答案文字版Word版下载上机试题及答案和网友交流免费在线估分考后成绩查询2010年9月18日,进行了2010年下半年的计算机等级考试。
本次考试的难度与前几次考试难度差不多,只是考查得更加灵活,偏重了对数组与指针及一些算法的实现等应用性较强内容的考查,但出题还是紧扣大纲,无超纲试题。
计算机等级考试二级C语言已开考多次,出题方式基本趋向成熟,现在出题一般都是按模板进行,即每次考试同一个阶段的试卷内容基本对应着相同的考查知识点。
本文将对此次考试二级C语言考试的考题知识点分布进行分析总结。
具体见表1所示:表1 2010年9月计算机等级考试二级C语言考试考题知识分布知识点分数说明重要程度数据结构与算法线性表的存储结构(2),栈(4),查找(2),二叉树(2)★★★程序设计基础4面向对象(2),结构化程序(2)★★软件工程基础6软件测试(2),软件危机(2),软件生命周期(2),★★数据库设计基础10数据模型(2),对应关系(2),数据库模式(2),关系运算(2),数据库设计(2)★★★C程序设计的初步知识11C程序基本概念(1),程序设计步骤(1),C程序的运行(1),表达式(3),常量(1),数据类型所占存储空间(2),逻辑表达式(2)★★★顺序结构程序设计4十进制与八进制数的输出(2),数据的格式输入(2)★★选择结构程序设计4switch结构(1)、if语句(3)★★循环结构程序设计9While结构(5),for循环(4)★★★函数10函数递归调用(2)、参数的传递(4)、函数嵌套调用(2)、静态变量(2)★★★指针与数组24指针引用字符数组元素(2),strlen与sizeof(2),指针变量(6),指针数组(2),数组的定义(4),字符串操作(6),数组(2)★★★★★编译预处理与动态存储分配2动态存储分配(2)★结构体与联合体2结构体(2),★位运算2位运算(2)★文件操作2文件指针的定义(2)★在本次考试中,主要有以下几个突出的特点:(1)本次考试中增强了对知识灵活性的考查,如选择题中的第18题、第21题与第23题等的出题方式就相当灵活,另外,对数组与指针及一些算法的实现等偏应用方面的内容考查的分值明显增多,这说明计算机等考中二级C语言的考试已经越来越注重对编程及其应用能力等相关知识的考查。
2010年9月全国计算机等级考试二级C语言笔试试题答案及解析
1、软件生命周期中的活动不包括A、软件维护B、市场调研C、软件测试D、需求分析参考答案:B2、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的系统的系能需求B、制定软件集成测试计划 D、需求规格说明书审评参考答案:C3、在黑盒测试方式中,设计测试用例的主要根据是A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图参考答案:A4、在软件设计中不使用的工具是A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)参考答案:D5、有以下程序#include <sthio.h>Main(){int s=0,n;For (n=0;n<3;n<++){switch(s){ case 0;Case 1;s+=1;Case 2;s+=2;break;Case 3;s+3;Case 4;s+=4;}printf(("%d\n",s);}}程序运行后的结果是A、1,2,4B、1,3,6C、3,10,14D、3,6,10 参考答案:C6、若k是int类型变量,且有以下for语句For(k=-1;k<0;k++) printf(****\n");下面关于语句执行情况的叙述中正确的是A、循环体执行一次B、循环体执行两次C、循环体一次也不执行D、构成无限循环参考答案:A7、有以下程序#include <sthio.h>Main(){char A,B,C;B='1';C='A'For(A=0;A<6;A++){if(A%2) putchar(B+A);Else putchar(C+A);}}程序运行后输出的结果是A、1B3D5FB、 ABCDFEC、 A2C4E6D、参考答案:C8、设有如下定义语句Int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A、*(k+2)B、 k+2C、*k+2D、*k+=2参考答案:A9、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。
2010年9月全国计算机二级C++考试真题及答案
2010年9月全国计算机二级C++考试真题及答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对答案:D解析:线性表的链式储存肯定要比顺序储存占据更多的空间(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对答案:D解析:C应该是:栈顶指针随栈中元素的变化而变化(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)下列关于函数参数的叙述中,正确的是A)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相向D)函数的形参在函数被调用时获得初始值答案:D解析:A——不必声明的是形参,而不是其类型B——形参内存空间在栈上,实参则不一定C——仅仅在函数执行期内(12)下列关于对象初始化的叙述中,正确的是A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化答案:C解析:A——可以而且必须对对象进行初始化,这就是为什么你自己不写构造函数系统都要‘硬’给你整个默认的原因。
2010年9月全国计算机等级考试二级C语言笔试试题答案及解析
2010年9月全国计算机二级C语言笔试试题:文字版一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C )字符斜杠:…\‟D)字符串:"\007"(16)表达式a+=a-=a=9的值是A)9B)_9C)18D)0(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是A)a<>b+cB)ch=getchar()C)a==b+cD)a++(18)有以下程序#include<stdio.h>main(){int a=1,b=0;if(!a)b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0{case 0: a++; break; {case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C)switch((int)x%2)D)switch((int)(x)%2){case 0: a++; break; {case 0.0: a++; break;case 1: b++; break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }(20)有以下程序#include <stdio.h>main(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环(22)有以下程序#include<stdio .h>main(){char s[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuvB)字符t的ASCII码值C)tD)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){char x[]=”STRING”;x[0」=0;x[1]=‟\0‟;x[2」=‟0‟;printf(”%d %d\n”,sizeof(x),strlen(x));}程序运行后的输出结果是A)6 1B)7 0C)6 3D)7 1(24)有以下程序#include<stdio.h>Int f(int x);main(){int n=1,m;m=f(f(f(n)));printf(”%d\n”,m);}int f(int x){return x*2;}程序运行后的输出结果是A)1B)2C)4D)8(25)以下程序段完全正确的是A)int *p; scanf("%d",&p);B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf("%d",p);D)int k, *p:; *p= &k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4];B)int **p;C)int *(p「4」);D)int (*p)「4」;(27)下列定义数组的语句中,正确的是A)int N=10;B)#define N 10int x[N]; int x[N];C)int x[0..10]; D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0};C)int c[2+3];D)int i=5,d[i];(29)有以下程序#include<stdio.h>void f(int *p);main(){int a[5]={1,2,3,4,5},*r=a;f(r);printf(”%d\n”;*r);}void f(int *p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int*a;int n){int i、j、k、t;for (i=0;i<n一1;1+=2){k=i;…for(j=i;j<n;j+=2)if(a[j]>a〔k])k=j;t=a〔i];a〔i]=a[k];a〔k]=t;}}main(){int aa「10」={1、2、3、4、5、6、7},i;fun(aa、7);for(i=0,i<7; i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(s l ,s2)==1)ST;D)if(sl-s2==0)ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是A)while(*t=*s){t++;s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序(strcat函数用以连接两个字符串)#include<stdio.h>#include<string .h>main(){char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJKB)ABCDIJKC)IJKD)EFGIJK(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>void fun(char*p){int i=0;while (p[i]){if(p[i]==‟ ‟&&islower(p「i-1」))p[i-1]=p[i-1]-…a‟+…A‟;i++;}}main(){char s1[100]=”ab cd EFG!”;fun(s1);printf(”%s\n”,s1);}程序运行后的输出结果是A)ab cd EFG!B)Ab Cd EFg!C)aB cD EFG!D)ab cd EFg!(35)有以下程序#include<stdio.h>void fun(int x){if(x/2>1)fun(x/2);printf(”%d”,x);}main(){fun(7);printf(”\n”);}程序运行后的输出结果是A)1 3 7B)7 3 1C)7 3D)3 7(36)有以下程序#include<stdio.h>int fun(){static int x=1;x+=1;return x;}main(){int i;s=1;for(i=1;i<=5;i++)s+=fun();printf(”%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序#inctude<stdio.h>#include<stdlib.h>Main(){int *a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#include<stdio.h>main(){int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6(39)若有以下语句Typedef struct S{int g; char h;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量(40)有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”、C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<I二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010年9月真题和详细解析
绝密★启用前2010年9月全国计算机等级考试二级笔试试卷C语言程序设计及参考答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对答案:选B 【解析】线性表的顺序存储结构:每个结点只需要存放表中的数据元素;线性表的链式存储结构:每个结点除了存放表中的数据元素外,还要存放指针域,用来指示其后继结点的存储位置信息;所以链式存储结构需要存储空间一般多余顺序存储结构。
(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对答案:选C 【解析】栈是一端固定、一端活动的顺序存储结构,其中固定的一端为栈底,活动的一端为栈顶。
当有新元素进栈时,栈顶指针向上移动;当有元素出栈时,栈顶指针向下移动。
在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,所以选C。
(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误答案:选 D 【解析】软件测试的目的:尽可能多的发现软件中的错误,以查找错误为中心。
软件调试的任务;在软件测试的基础上,诊断和改正程序中的错误。
(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高答案:选A 【解析】软件危机包括成本、质量、生产率等问题,主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件维护程度底;软件成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用的增长。
【免费下载】9月全国计算机等级考试二级C语言真题及答案
2010 年9 月全国计算机等级考试二级笔试试卷C 语言程序设计(附答案)(考试时间90 分钟,满分100 分)一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制C)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小B)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A )内模式B )概念模式C )外模式D )设计模式(10)有三个关系R 、S 和T 如下: R S T AB C a12b21 c 31则由关系R 和S 得到关系T 的操作是A )自然连接B )交C )投影D )并(11)以下关于结构化程序设计的叙述中正确的是A )一个结构化程序必须同时由顺序、分支、循环三种结构组成B )结构化程序使用goto 语句会很便捷C )在C 语言中,程序的模块化是利用函数实现的D )由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A )确定算法后,整理并写出文档,最后进行编码和上机调试B )首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C )先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D )先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A )C 程序在运行过程中所有计算都以二进制方式进行B )C 程序在运行过程中所有计算都以十进制方式进行C )所有C 程序都需要编译链接无误后才能进行D )C 程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是A )a%(int)(x-y)B )a=x!=y;C )(a*y)%bD )y=x+y=x(15)以下选项中能表示合法常量的是A )整数:1,200B )实数:1.5E2.0 C)字符斜杠:‟\‟ D)字符串:”\007”(16)表达式a+=a-=a=9 的值是A )9B )-9C )18D )0(17)若变量已正确定义,在if(W)printf(“%d\n”,k);中,以下不可替代W 的是A )a<>b+cB )ch=getchar()C )a==b+cD )a++(18)有以下程序#includemain(){ int a=1,b=0;if(!a) b++;A B C Dc 31A D c 4else if(a==0)if(a) b+=2;else b+=3;printf(“%d\n”,b);}程序运行后的输出结果是A)0 B)1 C)2 D)3(19)若有定义语句int a,b;double x;则下列选项中没有错误的是A)switch (x%2){ case 0: a++; break;case 1: b++; break;default: a++; b++; }B) switch ((int)x/2.0){ case 0: a++; break;case 1: b++; break;default : a++; b++; }C) switch((int)x%2){ case 0: a++; break;case 1: b++; break;default : a++; b++; }D)switch((int)(x)%2){ case 0.0: a++; break;case 1.0: b++; break;default : a++; b++; }(20)有以下程序#includemain(){ int a=1,b=2;while(a<6) {b+=a; a+=2;b%=10;} printf(“%d, %d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,1(21)有以下程序#includemain(){ int y=10;while(y--);printf(“y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y=-1 C)y=1 D)while 构成无限循环(22)有以下程序#includemain(){ char s[ ]=”rstuv”;printf(“%c\n”,*s+2);}程序运行后的输出结果是A)tuv B) 字符t 的ASCII 值C)t D)出错(23)有以下程序#include <stdio.h>#include <string.h>main(){ char x[ ]=”STRING”;x[0]=‘0’; x[1]=‘\0‘; x[2]=‟0‟;printf(“%d %d\n”,sizeof(x),strlen(x));}0和\0 表示一样程序运行后的输出结果是A) 6 1 B) 7 0 C) 6 3 D) 7 1(24)有以下程序#includeint f(int x);main(){ int n=1,m;m=f(f(f(n)));printf(“%d\n”,m);}int f(int x){ return x*2; }程序运行后的输出结果是A)1 B)2 C)4 D)8(25)以下程序段完全正确的是A)int *p; scanf(“%d”,&p); 不需要&B) int *p; scanf(“%d”,p);C) int k, *p=&k; scanf(“%d”,p);D) int k,*p; *p=&k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4]; B)int **p; C)int *(p[4]); D)int (*p)[4];(27)下列定义数组的语句中,正确的是A) int N=10; B) #define N 10 int x[N]; int x[N]; C) int x[0..10]; D) int x[ ];(28)若要定义一个具有5 个元素的整型数组,以下错误的定义语句是A)int a[5]={0}; B) int b[ ]={0,0,0,0,0}; C)int c[2+3]; D) int i=5,d[i]; 不能是变量(29)有以下程序void f(int *p);main(){ int a[5]={1,2,3,4,5},*r=a;f(r );printf(“%d\n”,*r); }void f(int *p){ p=p+3;printf(“%d,”,*p);}程序运行后的输出结果是A)1,4 B)4,4 C) 3,1 D)4,1(30)有以下程序(函数fun 只对下标为偶数的元素进行操作)#includevoid fun(int *a,int n){ int i,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2) if(a[j]>a[k]) k=j;t=a[i]; a[i]=a[k]; a[k]=t; }}main(){ int a[10]={1,2,3,4,5,6,7},i;fun(a,7);for(i=0;i<7;i++)printf(“%d,”,a[i]);printf(“\n”);}程序运行后输出结果是A)7,2,5,4,3,6,1,B)1,6,3,4,5,2,7,C)7,6,5,4,3,2,1,D)1,7,3,5,6,2,1,(31)下列选项中,能够满足“若字符串s1 等于字符串s2, 则执行ST”要求的是A)if(strcmp(s2,s1) ==0) ST;B) if(s1==s2) ST;C) if(strcpy(s1,s2) ==1) ST;D) if(s1-s2==0) ST;(32)以下不能将s 所指字符串正确复制到t 所指存储空间的是A)while(*t=*s){t++,s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s); D)for(i=0,j=0;t[i++]=s[j++]; );(33)有以下程序(strcat 函数用以连接两个字符串)#include <stdio.h>#include <string.h>main(){ char a[20]=”ABCD\0EFG\0”, b[ ]=”IJK”;printf(“%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJK B)ABCDIJK C)IJK D)EFGIJK(34)有以下程序,程序中库函数islower(ch)用以判断ch 中的字母是否为小写字母#include <stdio.h>#include <ctype.h>void fun(char *p){ int i=0;while(p[i]){ if(p[i] ==‟ …&&islower(p[i-1])) p[i-1]=p[i-1]-‟a‟+‟A‟;i++;}}main(){ char s1[100]=”ab cd EFG !”;fun(s1);printf(“%s\n”,s1);}程序运行后的结果是A) ab cd EFG ! B) Ab Cd EFg ! C) aB cD EFG ! D) ab cd EFg !(35)有以下程序#includevoid fun(int x){ if(x/2>1)fun(x/2);printf(“%d ”,x);}main(){ fun(7);printf(“\n”);}程序运行后的输出结果是A)1 3 7 B)7 3 1 C)7 3 D)3 7(36)有以下程序#includeint fun(){ static int x=1;x+=1;return x;}main(){ int i, s=1;for(i=1;i<=5;i++)s+=fun();printf(“%d\n”,s);}程序运行后的输出结果是A)11 B)21 C)6 D)120(37)有以下程序`#include <stdio.h>#include <stdlib.h>main(){ int *a,*b,*c;a=b=c=(int *)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#includemain(){ int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6 平台上编绎运行,程序运行后输出结果是A)2,4 B)1,4 C)4,8 D)10,6(39)若有以下语句typedef struct S{int g ; char h;} T;以下叙述中正确的是A)可用S 定义结构体变量B)可用T 定义结构体变量C)S 是struct 类型的变量D)T 是struct S 类型的变量(40)有以下程序#includemain(){ short c=124; c=c ;printf(“%d\n”,c);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B) |248 C)& 0248 D) <<1二、填空题(每空2 分,共30 分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010年9月全国计算机等级考试二级笔试试卷C语言程序设计
机密★启用前2010年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上诉三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开放生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可以被多个人使用,则实体工作人员与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a; long b; double x,y; 则以下选项中正确的表达式是A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0 C)字符斜杠:'\' D)字符串:"\007"(16)表达式a+ =a- =a=9 的值是A)9 B)-9 C)18 D)0(17)若变量已正确定义,在if(W) printf("%d\n",k ); 中,以下不可能替代W的是A)a<>b+c B)ch=getchar() C)a==b+c D)a++(18)有以下程序#include<stdio.h>main(){ int a=1, b=0;if(!a) b++;else if(a==0) if(a) b+=2;else b+=3;printf("%d\n",b);}程序运行后的输出结果是A)0 B)1 C)2 D)3(19)若有定义语句int a,b;double x ; 则下列选项中没有错误的是A)switch (x%2) B)switch( (int)x/2.0){ case 0: a++; break; { case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C)switch ((int)x%2) D)switch( (int)(x)%2){ case 0: a++;break; { case 0.0: a++; break;case 1: b++;break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }(20)有以下程序# include <stdio.h>main(){ int a=1, b=2;二级C语言程序设计试卷第3页(共11页)while (a<6) {b+=a; a+=2; b%=10;}printf ("%d, %d\n", a, b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,1(21)有以下程序# include <stdio.h>main(){ int y=10;while(y--) ;printf ("y=%d\n", y) ;}程序执行后的输出结果是A)y=0 B)y=-1 C)y=1 D)while构成无限循环(22)有以下程序# include <stdio.h>main(){ char s[]="rstuv" ;printf ("%c\n" , *s+2) ;}程序运行后的输出结果是A)tuv B)字符t的ASCII码值C)t D)出错(23)有以下程序# include <stdio.h># include <string.h>main(){ char x[]="STRING" ;x[0]=0; x[1]='\0' ; x[2]='0' ;printf ("%d %d\n ", sizeof(x) , strlen (x) ) ;}程序运行后的输出结果是A)6 1 B)7 0 C)6 3 D)7 1(24)有以下程序#include <stdio.h>int f ( int x );main( ){ int n=1 , m;m=f ( f ( f ( n) ) ) ; printf ("%d\n" , m);int f ( int x){ return x*2; }程序运行后的输出结果是A)1 B)2 C)4 D)8(25)以下程序段完全正确的是A)int *p;scanf("%d", &p); B)int *p; scanf("%d" , p);C)int k, *p=&k; scanf("%d", p); D)int k, *p; *p=&k; scanf("%d",p);(26)有定义语句:int *p[4]; 以下选项中与此语句等价的是A)int p[4]; B)int **p; C)int *(p[4]); D)int (*p)[4];(27)下列定义数组的语句中,正确的是A)int N=10; B)#define N 10int x[N]; int x[N];C)int x[0..10]; D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义句是A)int a[5]={0}; B)int b[]={0,0,0,0,0};C)int c[2+3]; D)int i=5,d[i];(29)有以下程序#include <stdio.h>void f ( int *p) ;main( ){ int a[5] ={1, 2, 3, 4, 5} , *r=a;f(r) ; printf ("%d\n", *r) ;}void f ( int *p){ p=p+3; printf("%d," , *p); }程序运行后的输出结果是A)1,4 B)4,4 C)3,1 D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include <stdio.h>void fun ( int *a, int n ){ int i , j , k , t ;for ( i = 0 ; i<n-1; i+=2 ){ k=1;for ( j=i ; j<n; j+=2) if ( a[ j ] >a[ k ] ) k = j ;t=a[ i ] ; a[ i ]=a[ k ] ; a[ k ] = t ;二级C语言程序设计试卷第5页(共11页)}main(){ int aa[10]={1, 2, 3, 4, 5, 6, 7}, i ;fun (aa,7) ;for ( i = 0; i<7; i++) printf ("%d , ", aa[i] ) ;printf ("\n ") ;}程序运行后的输出结果是A)7,2,5,4,3,6,1, B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1, D)1,7,3,5,6,2,1,(31)下列选项中,能够满足“若字符串sl等于字符串s2,则执行ST”要求的是A)if(strcmp(s2,sl)==0)ST; B)if(sl==s2)ST;C)if(strcpy(s1,s2)==1)ST; D)if(s1-s2==0)ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是A)while(*t=*s){t++;s++;} B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s); D)for(i=0,j=0;t[i++]=s[j++]; );(33)有以下程序(strcat函数用以连接两个字符串)# include <stdio,h># include <string.h>main(){ char a[20]="ABCD\0EFG\0", b[ ]="IJK" ;strcat (a, b) ; printf ("%s\n", a) ;}程序运行后的输出结果是A)ABCDE\0FG\0IJK B)ABCDIJK C)IJK D)EFGIJK(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#include <stdio.h>#include <ctype.h>void fun (char *p){int i=0;while(p[i] ){if (p[i])==' '&& islower(p[i-1]) p[i-1]= p[i-1]- 'a'+'A ';i++;}}main(){char sl[100]="ab cd EFG !";fun(sl); printf("%s\n" , sl);}程序运行后的输出结果是A)ab cd EFG ! B)Ab Cd EFg !C)aB cD EFG ! D)ab cd EFg !(35)有以下程序#include <stdio.h>void fun (int x){ if (x/2>1) fun(x/2) ;printf ( "%d ", x) ;}main (){ fun(7) ; printf("\n") ; }程序运行后的输出结果是A)1 3 7 B)7 3 1 C)7 3 D)3 7(36)有以下程序#include <stdio.h>int fun(){ static int x=1;x+=1; return x;}main(){ int i , s=1;for (i=1 ; i<=5 ; i++) s+=fun( );printf(" %d\n" , s);}程序运行后的输出结果是A)11 B)21 C)6 D)120(37)有以下程序#include <stdio.h>#include <stdlib.h>main(){ int *a, *b, *c;a=b=c=(int *)malloc(sizeof ( int ) );*a=1;*b=2,*c=3;a=b;二级C语言程序设计试卷第7页(共11页)printf("%d, %d, %d\n", *a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#include <stdio.h>main(){ int s , t , A=10; double B=6;s=sizeof(A) ; t=sizeof (B) ;printf("%d, %d\n", s, t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6(39)若有以下语句typedef struct S{ int g; char h; }T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量(40)有以下程序# include <stdio.h>main(){ short c=124;c=c ______;printf("%d\n", c);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)| 248 C)&0248 D)<<1二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010 年 9 月全国计算机等级考试二级笔试试卷 c语言程序设计
2010 年9 月全国计算机等级考试二级笔试试卷C 语言程序设计(考试时间90 分钟,满分100 分)一、选择题(1)~(10)、(21)~(40)每题 2 分,(11)~(20)每题 1 分,70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是()。
A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是()。
A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是()。
A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是()。
A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指()。
A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指()。
A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是()。
A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010年9月全国计算机二级C++笔试试题解析一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对答案:D解析:线性表的链式储存肯定要比顺序储存占据更多的空间(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对答案:D解析:C应该是:栈顶指针随栈中元素的变化而变化(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)下列关于函数参数的叙述中,正确的是A)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相向D)函数的形参在函数被调用时获得初始值答案:D解析:A——不必声明的是形参,而不是其类型B——形参内存空间在栈上,实参则不一定C——仅仅在函数执行期内(12)下列关于对象初始化的叙述中,正确的是A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化答案:C解析:A——可以而且必须对对象进行初始化,这就是为什么你自己不写构造函数系统都要‘硬’给你整个默认的原因。
B——定义之后就不能再初始化了。
class A{};int _tmain(int argc, _TCHAR*argv[]){A a;a.A();return 1;}如上例,编译器提示:error C2274: “函数样式转换”: 位于“.”运算符右边时非法D——可以使用默认的构造函数。
(13)下列关于基类和派生类关系的叙述中,正确的是A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员答案:D解析:A——可以有多个。
B——至少私有的是无论如何都访问不到的。
C——恩街自动调用。
(14)下列关于赋值运算符“=”重载的叙述中,正确的是A)赋值运算符只能作为类的成员函数重载B)默认的赋值运算符实现了“深层复制”功能C)重载的赋值运算符函数有两个本类对象作为形参D)如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符答案:A解析:C——1个形参。
D——谁说不能?能的。
(15)下列关于模板的叙述中,正确的是A)如果一个类中存在纯虚函数,这个类就是类模板B)函数模板不能有形式参数表C)类模板是一种参数化类型的类,是类的生成器D)类模板中不能包含构造函数答案:C解析:A——那是抽象类,不是模板。
B——我靠,形参都没有了么还搞啥模板啊,应该是模板参数表不能为空。
D——呃……这个确实能。
(16)下列关于C++预定义流对象的叙述中,正确的是A)cin是C++预定义的标准输入流对象B)cin是C++预定义的标准输入流类C)cout是C++预定义的标准输入流对象D)cout是C++预定义的标准输入流类答案:A解析:首先,cin,cout肯定是对象。
(17)下列选项中,正确的C++标识符是A)6_groupB)group~6C)age+3D)_group_6答案:D解析:不解释(18)下列选项中,正确的C++表达式是A)counter++3 B)element3+ C)a+=b D)’a’=b答案:C解析:不解释(19)下列循环语句中有语法错误的是A)int i; for( i=1; i<10;i++)cout<<‘*‘;B)int i,j;for(i=1,j=0;i<10;i++,j++)cout<<‘*‘;C)int i=0;for(;i<10;i++)cout<<‘ *‘;D)for(1)cout<<‘*‘;答案:D解析:死循环是这样的:for(;1;)(20)下列定义语句中,错误的是A)int px*;B)char*acp[10];C)char(*pac)[10];D)int(*p)();答案:A解析:不解释(21)下列函数原型声明中,错误的是A)int fnction(int m,int n);B)int function(int,int);C)int function(int m=3,int n);D)int function(int &m,int&n);答案:C解析:不解释(22)若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是A)2 B)5 C)4 D)9答案:C解析:不解释(23)若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为A)x.Operator/(Y)B)operator/(x,Y)C)Y.operator/(x)D)operator/(y,x)答案:C解析:不解释(24)若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是A)+和=B)=和<<C)==和<<D)=和[]答案:D解析:至少‘+’,‘<<’可以这么重载:class A{public:friend A operator +(A&,A&);friend A operator <<(A&,int);};借用马克思的一句话:C++认为‘=’和‘[]’运算符必须是非静态的。
(25)有函数模板声明和一些变量定义如下:template <class Tl,class T2,class T3>T1 sum(T2,T3);double dl,d2;则下列调用中,错误的是A)sum<double,double,double>(dl,d2);B)sum<double;double>(d1,d2);C)sum<double>(d1,d2);D)sum(d1,d2);答案:D解析:我也是第一次看到这种推演的办法,不过这道题似乎并不是考推演,因为D答案太明显了。
扩展:本题提示了模板函数在实例化运行过程中,通过实参来对模板进行推演。
形如下面代码段也是成立的。
template <class V,class W>double Func(V v,W w){double u = w + v;return u;}int _tmain(int argc, _TCHAR*argv[]){double d1 = 1.2;double d2 = 2.2;double d = Func(1,d2);return 1;}(26)有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game”时,str中的字符串是A)"I love this game"B)"I love thi"C)"I love"D)"I"答案:D解析:cin认为空格是一个结束符,这是我都没有想到的。
至于你信不信,我不管,我反正是信了。
如果要获得带空格的字符串的话,用cin.get(……)(27)有如下程序:#include<iostream>#include<cmath>using std::cout;class Point{public:friend double distance(const Point &p); //p距原点的距离Point(int xx=0,int yy=0):x (xx),y(yy){} //①private:int x,y;};double distance(const Point &p) { //②return sqrt(p.x*p.x+p.y*p.y);}int main(){Point p1(3,4);cout<<distance(p1); //③return 0;}下列叙述中正确的是A)程序编译正确B)程序编译时语句①出错C)程序编译时语句②出错D)程序编译时语句③出错答案:C解析:sqrt调用不明确。
(28)有如下程序:#include<iostream>using namespace std;class CD{public:~CD(){cout<<'C';}private:char name[80];};int main(){CD a,*b,d[2];return 0;}运行时的输出结果是A) CCCCB) CCCC) CCD) C答案:B解析:*不创建自然不析构。
(29)某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是A)const void Show();B)void const Show();C)void Show()const;D)void Show(const);答案:C解析:常不常函数,表示在后头。