技能培训专题:系统测试题5

有以下程序: Class Date { public: Date(int y,int m,mt d); { year=y; month=m; day=d; } Date(int y=2000) { year=y; month=10; day=1; } Date(Date &D) { year=d.year; month=d.month; day=d.day; } Void prin

A.2

B.3

C.4

D.5


正确答案:B
解析: 本题考核拷贝构造函数。上述程序中,拷贝构造函数一共被调用了3次:第一次是在执行语句Date date3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句return temp时,系统初始化一个匿名对象时使用了拷贝构造函数。


下列程序的运行结果是()。 include main() {stmct date {int year,month,day; }today;

下列程序的运行结果是( )。

#include<stdio.h>

main()

{stmct date

{int year,month,day;

}today;

primf("%d\n",sizeof(struct date));

}

A.8

B.6

C.10

D.12


正确答案:B
解析:解答本题需要注意两个知识点:①结构体变量的长度是其内部成员长度的总和,本题中,struct date中包含year、month、day这3个整型变量,一个整型变量占2个字节:②sizeof是求所占字节数的运算符。


下列程序的运行结果为() include main() {struc tdate {int year,month,day; )today;

下列程序的运行结果为( )

#include<stdio.h>

main()

{ struc tdate

{int year,month,day;

)today;

printf("%d\n",sizeof(struct date));

}

A.8

B.6

C.10

D.12


正确答案:B
解析:解答本题需要注意两个知识点:①结构体变量的长度是其内部成员长度的总和,本题中,struct date中包含year、month、day这3个整型变量,一个整型变量占2个字节;②sizeof是求所占字节数的运算符。


已知学生记录描述为 struct student { int no; char name[20]; char sex; struct { int year; int month; int day; } birth; }; struct student s;变量s中的“生日”应是“1985年4月4日”,下列对“生日”的正确赋值方式是______。

A.year=1985;month=4;day=4;

B.birth.year=1985;birth.month=4;birth.day=4;

C.s.year=1985;s.month=4;s.day=4;

D.s.birth.year=1985;s.birth.month=4;s.birth,day=4;


正确答案:D


有以下程序:

class Date

{

public:

Date(int y,int m,int d);

{

year=y;

month=m

day=d;

}

Date(int y=2000)

{

year=y;

month=10;

day=1;

}

Date(Date &d)

{

year=d.year;

month=d.month;

day=d.day;

}

void print( )

{

cout<<year<<"."<<month<<"."<<day<<endl;

}

private:

int year,month,day;

};

Date fun(Date d)

{

Date temp;

temp=d;

return temp;

}

int main( )

{

Date datel(2000,1,1),date2(0,0,0);

Date date3(datel);

date2=fun(date3);

return 0;

}

程序执行时,Date类的拷贝构造函数被调用的次数是

A.2

B.3

C.4

D.5


正确答案:B
解析:本题考核拷贝构造函数。上述程序中,拷贝构造函数一共被调用了3次:第一次是在执行语句Date dare3(datel);时,用已经建立的对象datel对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句return temp;时,系统初始化一个匿名对象时使用了拷贝构造函数。


系统测试题51.输入某年某月某日,判断这一天是这一年的第几天?#include main() int day,month,year,sum,leap; printf(nplease input year,month,dayn); scanf(%d,%d,%d,&year,&month,&day); switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; /*SPACE*/ case 4:【?】;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf(data error);break; /*SPACE*/ 【?】; /*SPACE*/ if(year%400=0|(【?】) leap=1; else leap=0; /*SPACE*/ if(【?】) sum+; printf(it is the %dth day.,sum);2.已知X、Y、Z分别表示09中不同的数字,编程求出使算式 XXXX+YYYY+ZZZZ=YXXXZ成立时X、Y、Z的值,并要求打印该算式。#include #include main() int x,y,z; /*SPACE*/ for(x=0;【?】;x+) for(y=0;y10;y+) if(y=x) continue; for(z=0;z10;z+) /*SPACE*/ if(z=x【?】z=y) continue; /*SPACE*/ if(1111*(x+y+z)=【?】+1110*x+z) printf(x=%d,y=%d,z=%dn,x,y,z); /*SPACE*/ printf(%d+%d+%d=%dn,1111*x,1111*y,1111*z,【?】); exit(0); 3.编程求任意给两个日期(Y0年M0月DO日和Y1年M1月D1日)相差的天数。#include #include int f(int y) return(y%4=0&y%100!=0|y%400=0);int mday(int y,int m) return(31-(m=4)+(m=6)+(m=9)+(m=11)-(3-f(y)*(m=2);int yday(int y,int m,int d) return(d+31*(m1)+(m3)+(m5)+(m7)+(m8)+(m10)+30*(m4)+(m6)+(m9)+(m11)+(28+f(y)*(m2);int yend(int y,int m,int d) return(365+f(y)-yday(y,m,d);main() int y1,m1,d1,y2,m2,d2,n,i; printf(y1,m1,d1=); scanf(%d,%d,%d,&y1,&m1,&d1); /*SPACE*/ if(m112|d1【?】) exit(0); printf(y2,m2,d2=);scanf(%d,%d,%d,&y2,&m2,&d2); /*SPACE*/ if(m212|d2【?】) exit(0); if(y1y2|y1=y2&m1m2|y1=y2&m1=m2&d1d2) n=y1; y1=y2; y2=n; n=m1; m1=m2; m2=n; n=d1; d1=d2; d2=n; else /*SPACE*/ n=yend(y1,m1,d1)+【?】; /*SPACE*/ for(i=【?】;i%d.%d.%d:n=%dn,y1,m1,d1,y2,m2,d2,n);4.用二分法求方程2X3+4X2+3X-6=0在(-10,10)之间的根 ,其中 Xn代表X的n次方。#include # include main() float x0,x1,x2,fx0,fx1,fx2; do printf(Enter x1&x2:); scanf(%f,%f,&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6; /*SPACE*/ while (fx1*fx2【?】); do x0=(x1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6; /*SPACE*/ if(fx0*fx1【?】) x2=x0; fx2=fx0; else x1=x0; fx1=fx0; /*SPACE*/ while(【?】=1e-5); printf(x=%6.2fn,x0);5.不用第三个变量,实现两个数的对调操作。#include main() int a,b; scanf(%d %d,&a,&b); printf(a=%d,b=%dn,a,b); /*SPACE*/ a= 【?】 ;

已知学生记录描述为:

struct student

{ int no;

char name[20],sex;

struct

{ int year,month,day;

} birth;

};

struct student s;

设变量s中的"生日"是"1984年11月12日",对"birth"正确赋值的程序段是

A.year=1984;month=11;day=12;

B.s.year=1984;s.month=11;s.day=12;

C.birth.year=1984;birth.month=11;birth.day=12;

D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;


正确答案:D


已知学生记录描述为: struct student { int no; char name[20],sex; struct { int year,month,day; } birth; }; struct student s; 设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )。

A.year=1984;month=11;day=12;

B.s.year=1984;s.month=11;s.day=12;

C.birth.year=1984;birth.month=11;birth.day=12;

D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;


正确答案:D
解析:本题考查结构体变量的基本概念。引用结构体成员的方式为:结构体变量名.成员名“.”是“成员运算符”(分量运算符),如果成员本身又是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行赋值或存取以及运算,所以选项D)正确。


有以下程序: class Date { public: Date(int y,int m,int D) ; { year =y; month=m; day=d; } Date(int y=2000) { year=y; month=10; day=1; } Date(Date &D) { year=d.year; month=d.month; day=d.day; } void print () { cout<<year<<"."<<month<<"."<<day<<end1; } private: int year,month,day; }; Date fun(Date D) { Date temp; temp=d; return temp; } int main() { Date date1(2000,1,1),date2(0,0,0); Date date3(date1); date2=fun(date3); return 0; } 程序执行时,Date类的拷贝构造函数被调用的次数是

A.2

B.3

C.4

D.5


正确答案:B
解析:本题考核拷贝构造函数。上述程序中,拷贝构造函数一共被调用了3次:第一次是在执行语句Datedate3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化:第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句returntemp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。


下面结构体的定义语句中,不正确的是______。

A.structdate { int month; int day; int year; } Struct date datel;

B.stmctdate { intmonth; int day; int year; } datel;

C.struct { int month; int day; int year; } date 1;

D.#define DATE stmct date DATE { int month; int day; int year; }datel;


正确答案:A


有以下程序include using namespace std;static int days[]= { 31,28,31,30,31,30,31

有以下程序 #include <iostream> using namespace std; static int days[]= { 31,28,31,30,31,30,31,31,30,31,30,31 }; class date { private: int month, day, year; public: date( int m, int d, int y ) { month = m; day = d; year = y; } date() {} void disp() { cout<<year<<"-"<<month<<"-"<<day<<end1; } date operator+( int day ) { date dt = *this; day+= dt.day; while ( day > days[dt.month - 1 ] ) { day -= days[ dt.month - 1 ]; if ( ++dt.month == 13 ) { dt.month = 1; dt.year++; } } dt.day = day; return dt; }; int main() { date d1( 6, 20, 2004 ), d2; d2: d1 + 20; d2.disp(); return 0; } 执行后的输出结果是

A.2004-7-10

B.2004-6-20

C.2004-7-20

D.程序编译时出错


正确答案:A
解析:本题考核运算符的重载。本题通过将“+”运算符重载为类date的成员函数实现简单的对象加法。

更多 “技能培训专题:系统测试题5” 相关考题
考题 有以下程序: Class Date {public: Date(int y,int m,int d); {year=y; month=m; day=d;} Date(int y=2000) {year=y; month=10; day=1;) Date(Date &D) {year=d.year; month=d.month; day=d.day;} void print() {cout<<year<<“.”<<moA.2B.3C.4D.5正确答案:B解析: 本题拷贝构造函数一共被调用了3次:第一次是在执行语句Date date3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传住调用,因此实参对象date3要对形参对象d进行初始化,第三次是在执行fun函数中的返回语句returntemp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。

考题 单选题程序:  class MyDate{   private int year; private int month; private int day;  public MyDate(int year,int month,int day){  this.year=year;  this.month=month;      this.day=day; }  //Override Method }  为了让new MyDate(1980,11,9)==new MyDate(1980,11,9) 返回true,必须在Override Method处覆盖哪个方法?()AhashCodeBequalsCtoStringDnotify正确答案:D解析:暂无解析

考题 程序:   class MyDate{   private int year;   private int month;   private int day;   public MyDate( int year, int month,int day){   this.year=year;   this.month=month;   this.day=day;  }   //Override Method  }   为了让new MyDate(1980,11,9)==(判断是否相等)new MyDate(1980,11,9) 返 回true,必须在Override Method处覆盖哪个方法?()A、 hashCodeB、 equalsC、 toStringD、 notify正确答案:B

考题 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】下面程序的功能是计算并输出某年某月的天数,函数IsLeap Year()能够判断是否是闰年。【C++程序】include < iostream >using namespace std;(1) Month {Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };class Date {public:Date( int year, Month m_ month) {this→year = year;if( (2) ) month: Jan;else month = m_ month;};~Date(){};bool IsLeap Year( ) {return ((year%4= =0 &&year% 100 ! =0)|| year%400= =0);};int CaculateDays( ) {switch(m_month ) {case (3) ;{if (4) return 29;else return 28;}case Jan: case Mar: case May: case Jul: case Aug: case Oct: case Dec: return 31;case Apr: case Jun: case Sop: case Nov: return 30;}}private:int year;Month month;};void main( ) {Date day(2000,Feb);cout < <day. (5) ( );}正确答案:(1)enum(1)enum 解析:枚举类型变量month定义,这里填入enum。

考题 单选题程序:  class MyDate{   private int year; private int month; private int day;  public MyDate(int year,int month,int day){  this.year=year;  this.month=month;      this.day=day; }  //Override Method }  为了让new MyDate(1980,11,9)==new MyDate(1980,11,9) 返回true,必须在Override Method处覆盖哪个方法?()AhashCodeBequalsCtoStringDnotify正确答案:B解析:暂无解析

考题 下列程序的运行结果为()。include main(){stmct date {int year,month,day; }today; pr下列程序的运行结果为( )。 #include <stdio.h> main() { stmct date {int year,month,day; }today; printf("%d\n",sizeof(struct date)); }A.8B.6C.10D.12正确答案:B解析:解答本题需要注意两个知识点:①结构体变量的长度是其内部成员长度的总和,本题中,stmct date中包含year、month、day这3个整型变量,一个整型变量占2个字节:②sizeof是求所占字节数的运算符。

考题 以下程序的运行结果是()。includemain(){st,uct date {int year,month,day;}today; pri以下程序的运行结果是( )。 #include <stdio.h> main() { st,uct date {int year,month,day;}today; printf("%d\n",sizeof(struct date)); }A.6B.8C.10D.12正确答案:A解析:结构体变量的长度是其内部成员总长度之和,在本题中,structdate中包含year,month,day三个整型变量。通常一个整型变量占2个字节,因此,用sizeof求得该结构体变量的长度为6个字节。

考题 程序:  class MyDate{   private int year; private int month; private int day;  public MyDate(int year,int month,int day){  this.year=year;  this.month=month;      this.day=day; }  //Override Method }  为了让new MyDate(1980,11,9)==new MyDate(1980,11,9) 返回true,必须在Override Method处覆盖哪个方法?() A、 hashCodeB、 equalsC、 toStringD、 notify正确答案:B

考题 有以下程序:includeusingnamespacestd;staticintdays[]={31,28,31,30,31,30,31,31,30有以下程序: #include <iostream> using namespace std; static int days[]={ 31,28,31,30,31,30,31,31,30,31,30,31 }; class date { private: int month,day,year; public: date( int m,int d,int y ) { month = m; day = d; year = y; } date() {} void disp() { cout<<year<<"-"<<month<<"-"<<day<<end1; } date operator+( iht day ) { date dt = * this; day += dt.day; while ( day > days[ dt.month - 1 ] ) { day -= days[ dt.month - 1 ]; if ( ++dt.month == 13 ) { dt.month = 1; dt.year++; } } dt.day = day; return dt; } }; int main() { date dl( 6, 20, 2004 ), d2; d2 = dt + 20; d2.disp(); return 0; } 执行后的输出结果是( )。A.2004-7-10B.2004-6-20C.2004-7-20D.程序编译时出错正确答案:A解析:本题通过将“+”运算符重载为类date的成员函数实现简单的对象加法。类date中的“+”运算符重载函数中,将传入的实参值day,加到类date的私有成员变量day上,并实现变量month和year的相应变化,从而达到日期对象相加的目的。

考题 阅读以下说明和C++抖程序,将应填入(n)处的字句写在答题纸的对应栏内。【说明】下面程序的功能是计算并输出某年某月的天数。【C++程序】include<iostream>using namespace std;(1) Month{Jan,Feb,Mar,Art,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};class Date{public:Date(int year,Month m_month){(2) =year;if (m_month<Jan‖m_month>Dec) month=Jan;else month=m_month;};~Date(){};bool IsLeapYear(){return ((year%4==0 && year%1001!=0)‖year%400==0);};int CaculateDays(){switch( (3) ){case Feb:{if( (4) )return29;e1Se return 28;}case Jan:case Mar:case May:case Jul:case AUg:case Oct:case Dec:retllrn 31;case Apr:case Jun:Case Sep:case Nov:roturu30;}};private:int year;Month month;};void main(){Date day(2000,Feb);tout<<day. (5) ();}正确答案:(1)enum(2)this->year(3)month(4)IsLeapYear()(5)Cacu lateDays(1)enum(2)this->year(3)month(4)IsLeapYear()(5)Cacu lateDays 解析:程序的空(1)所在行的目的是定义一枚举类型用来表示一年12个月,所以空1应填上enum;在类Data中定义了两个私有变量year和m_month分别用来存储年份和月份,在Data类的构造函数中,要求给出年份和月份来构造一个Data类的对象,因为构造函数中参数名称和私有变量的名称相同,为了在构造函数中使用私有变量year,必须加上 this指针,所以空(2)应填上this->year。 函数CaculateDays用宋计算某一年某个月的天数,不论是否是闰年,除2月份以外,所有的大月都是31天,小月都是30天;如果是闰年,2月份是29天,否则是28天。根据分析,空(3)应填上m month用来判断月份是大月、小月或者二月,空(4)用来判断是否是闰年,调用函数IsLeapYear()即可得到结果。