课程名称:VC++程序设计学分:4大纲编号06000702
试卷编号:2010B考试方式:闭卷满分分值:100考试时间:120分钟组卷日期:2010年6月20日组卷教师(签字):严悍审定人(签字):
学生班级:学生学号:学生姓名:
说明:1.所有试题做在答卷纸上
2.考试完毕后连考卷一起交上
一、选择题(选择一个最合适的答案。每题2分,共40分)
1、下面哪一个可以作为合法标识符?
A default
B register
C extern
D Void
2、执行下面语句,输出结果是______。
int a=13,b=9,c;
c=a/b+0.8;
cout< 3、执行下面语句,输出结果是______。 char c1=5; c1^=3; cout<<(int)c1< 4、执行下面语句,输出结果是______。 int a=5,b=6,c=7,d=8,m=2,n=2; (m=ad); cout< 5、下面for循环次数是________。 for(int i=1;i<=5;sum++) sum+=i; A.0 B.4 C.5 D.无数次 6、执行下面语句,输出结果是______。 int x=3; do{ cout<<(x-=2)<<""; }while(!(--x)); A1B30C1–2D死循环int x=1,i=1; for(;x<50;i++){ if(x>=10)break; if(x%2!=0){ x+=3;continue; } x-=-1; } cout< 8、执行下面程序,输出结果是______。 #include int c_multiple(int a,int b){ for(int i=(a>b?a:b);i<=a*b;i++) if(i%a==0&&i%b==0) return i; return a*b; } void main(){cout< 9、执行下面程序,输出结果是______。 #include int f(int Int){ if(Int==1) return1; return(Int+f(Int-1)); }; void main(){cout< 10、执行下面程序,输出结果是______。 #include #define P5 #define R2+P void main(){ float a1=P*R*R;cout< 输出结果为: A75B245C49D25 11、下面哪一个数组说明语句是正确的? A char s4[2][3]={"xyz B char s1[]="xyz"; C char s3[][]={'x','y','z'}; D char s2[3]="xyz";int b[3][3]={0,1,2,0,1,2,0,1,2},t=1; for(int i=0;i<3;i++) for(int j=i;j<=i;j++) t+=b[i][i]+b[j][j]; cout< 13、下面哪一条语句不正确: enum Gender{female,male};//A struct Person{ char name[20]; Gender sex;//B Person father;//C }; Person members[30];//D 14、设有以下枚举说明语句: enum weekday{Mon=1,Tues,Wed,Thurs,Fri,Sat,Sun=0}week; 下面那一条赋值语句是错误的? A week=weekday(1); B week=1; C week=Mon; D week=(weekday)1; 15、尝试执行下面语句,输出结果是______。 int a=2,*pa=&a; int b=3,*pb=&b; *pa*=*pa**pb; cout<A2B6C12D语法错 16、尝试执行下面语句,输出结果是______。 int a[]={1,2,3,4,5,6,7,8}; int*p=a+4; int b=3+++*p++; cout<A8B9C10D语法错 17、下面哪一个表达式不能访问二维数组b的第i行第j列元素? A b[i][j]B*(*(b+i)+j)C*(b[i]+j)D*(b+i)[j] 18、对于缺省构造函数,下面哪一种说法是错误的? A只有当类中没有显式定义任何构造函数时,编译器才自动生成一个公有的缺省构造函数。B无参构造函数一定是缺省构造函数。 C缺省构造函数一定是无参构造函数。 D一个类中最多只能有一个缺省构造函数。 19、假设对象a和b都是类A的对象,下面哪一条语句不会执行类A的拷贝构造函数? A b=a; B void f(A x);f(a); C A b=a; D return a;20、下面哪一行语句有错? class A{ int i; protected: void setI(int a=2){i=a;} public: int getI(){return i;} }; class B:public A{ public: void f(){ setI(3);//A cout< void main(){ B b; b.setI(4);//C cout< } 四、写程序,根据要求编写程序(30分) 1、如果一个正整数是其因子之和,则该数称为完数。例如6的所有因子为1,2,3,而6=1+2+3,因此6是一个完数。编程找出1000之内的所有完数。共14分 按要求实现下面函数: 1、int getFactors(int a,int f[]) 计算整数a的所有不重复因子,从1开始,各因子放入到数组f中,返回因子个数。(4分) 2、int getSum(int a[],int num) 返回数组a中的num个元素之和。(3分) 3、void printArray(int a[],int num) 打印输出数组a中的num个元素。(3分) 4、main函数8分 找出1000之内所有完数,并按下面格式输出:6factors are123 要求调用前面定义的函数。(4分) 2、Course(课程)与SpecialtyCourse(专业课程)类。共16分 已有一个Date类表示日期,不需要编程实现。 class Date{ int year,month,day; public: Date(int y,int m,int d); void print();//打印年-月-日 }; 建立一个Course类表示大学课程,一门课程作为一个对象。 class Course{ char name[40];//课程名称 int credit;//学分数 Date setDate;//开设日期 public: Course(char*name,int credit,int sYear,int sMonth,int sday); void setName(const char*cname); const char*getName(); virtual void show(); ... }; 2.1实现构造函数Course::Course(char*name,int credit,int sYear,int sMonth,int sday);形参分别为名称、学分数、开设年、月、日。(4分) 2.2实现成员函数Course::show();输出课程名称、学分数、开设日期。(3分) 2.3建立一个SpecialtyCourse类表示专业课程,除了要表示课程的属性之外,还要求描述专业名称。注意利用已有的类。(9分) 1)实现该类的构造函数: SpecialtyCourse(char*name,int credit, int sYear,int sMonth,int sday,char*specname)形参分别为课程名称、学分数、开设年、月、日、专业名称。 2)实现该类的一个成员函数:void show(),要求显示所有属性。 编程题参: 1、 #include /* 计算整数a的所有因子,从1开始,因子放入到数组f中,返回因子个数*/ int getFactors(int a,int f[]){ int index=0; for(int i=1;i<=a/2;i++) if(a%i==0) f[index++]=i; return index; } /* 返回数组a中num个元素之和 */ int getSum(int a[],int num){ int sum=0; for(int i=0;i return sum; } /* 打印输出数组a中num个元素 */ void printArray(int a[],int num){ for(int i=0;i void main(){ for(int m=2;m<1000;m++){ int f[32]; int num=getFactors(m,f); if(getSum(f,num)==m){ cout< cout< } } 以下是完整程序 #include #include class Date{ int year,month,day; public: Date(int y,int m,int d){ year=y; month=m; day=d; } void print(){ cout< }; class Course{ char name[40];//名称 int credit;//学分数 Date setDate;//开设日期 public: Course(char*name,int credit,int sYear,int sMonth,int sday) :setDate(sYear,sMonth,sday){ this->credit=credit; setName(name); } void setName(const char*cname){ if(strlen(cname)>=4&&strlen(cname)<=39) strcpy(name,cname); else strncpy(name,cname,39); } const char*getName(){return name;} virtual void show(){ cout<<"名称:"< }; class SpecialtyCourse:public Course{ char specialtyName[40];//专业名 public:SpecialtyCourse(char*name,int credit,int sYear,int sMonth,int sday, char*specname) :Course(name,credit,sYear,sMonth,sday){ setSpecialtyName(specname); } void setSpecialtyName(const char*sname){ if(strlen(sname)>=4&&strlen(sname)<=39) strcpy(specialtyName,sname); else strcpy(specialtyName,"unknown"); } const char*getSpecialtyName(){return specialtyName;} void show(){ Course::show(); cout<<"专业名称:"< }; void main(){ SpecialtyCourse c1("面向对象分析与设计 c1.show(); } 第4页共4页下载本文