C++语言程序设计.docx

上传人:b****5 文档编号:7361463 上传时间:2023-01-23 格式:DOCX 页数:14 大小:23.89KB
下载 相关 举报
C++语言程序设计.docx_第1页
第1页 / 共14页
C++语言程序设计.docx_第2页
第2页 / 共14页
C++语言程序设计.docx_第3页
第3页 / 共14页
C++语言程序设计.docx_第4页
第4页 / 共14页
C++语言程序设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C++语言程序设计.docx

《C++语言程序设计.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计.docx(14页珍藏版)》请在冰豆网上搜索。

C++语言程序设计.docx

C++语言程序设计

一、填空(每空2分,共20分)

1.C++目标程序经_______连接____后生成扩展名为exe的可执行程序文件。

2.16位计算机中整型占____2___个字节存储空间。

3.要在屏幕上显示"Hello,world!

"应执行语句cout<<"\"Hello,world!

\""。

4.表达式8&3的结果是___0_______。

5.作为语句的函数调用是通过__函数的副作用_____来体现的。

6.执行if(x>=0||x<=0)cout<<"abcd";elsecout<<"wxyz";屏幕上显示的是______abcd_________。

7.设一维整型数组data已进行了初始化,则其元素个数可由操作符sizeof通过表达式________sizeof(data/data[0])__________________计算出来。

8.若一全局变量只允许本程序文件中的函数使用,则定义它时应加上修饰符______static_________。

9.设有intw[3][4];,pw是与数组名w等价的数组指针,则pw应初始化为int(*pw)[4]=w;。

10.要使引用pr代表变量char*p;,则pr应初始化为___char*&pr=p;。

二、单项选择题(每空2分,共20分)

1.下列变量名中,(A)是合法的。

ACHINABbyte-sizeCdoubleDA+a

2.下列各种函数中,(C)不是类的成员函数。

A构造函数B析构函数C友元函数D拷贝构造函数

3.下列(A)是正确的语句。

A;Ba=17Cx+yDcout<<"\n"

4.循环while(inti=0)i--;执行次数是(A)。

A0B1C5D无限

5.设intf(int);和intg(int);是函数f和g的原形,以下将f作为语句调用的是(B

)。

Ag(f(3));Bf(g(3));Cg(f(3)+2);Dp=f(g(3)+1);

6.设int*p2=&x,*p1=a;p2=*b;则a和b的类型分别是(B)。

Aint*和intBint*和int**

Cint和int*Dint*和int*

7.设intx;,则经过(C)后,语句*px=0;可将x值置为0。

Aint*px;Bintconst*px=&x;

Cint*constpx=&x;Dconstint*px=&x;

8.设voidf1(int*m,long&n);inta;longb;则以下调用合法的是(B)。

Af1(a,b);Bf1(&a,b);

Cf1(a,&b);Df1(&a,&b);

9.以下结构类型可用来构造链表的是(B)。

Astructaa{inta;int*b;};Bstructbb{inta;bb*b;};

Cstructcc{int*a;ccb;};Dstructdd{int*a;aab;};

10.使用操作符setw对数据进行格式输出时,需要包含(C)文件。

Aiostream.hBfstream.hCiomanip.hDstdlib.h

三、回答问题(每题4分,共20分)

1.设int*p;,判断下列表达式的正确性(用T表正确,用F表错误)。

--++p(T)++(p--)(F)p----(F)(++p)--(T)

2.请初始化一维指针数组color,其初值表初值为"red","blue","white"和"black"。

char*color[]={"red","blue","white","black"};

3.设intx[]={99,98,97},&y=x[1];,

写出语句cout<

cout<

98,194

4.设intfp(chara,intb=0,doublec=100.0);,判断下列重载函数的正确性。

(用T表正确,用F表错误)。

intfp();(T)voidfp(char);(F)

intfp(char,int);(F)voidfp(char,int,int);(T) 

5.要使语句p1=newlong*;p2=newfloat*[15];能正常执行,写出p1和p2的定义。

 long**p1;float**p2;

四、(每题10分,共20分)

1.写出下列程序的执行结果。

#include

voidfun(int,int,int*);

voidmain()

{

intx,y,z;

fun(2,3,&x);

fun(4,x,&y);

fun(x,y,&z);

cout<

}

voidfun(inta,intb,int*c)

{b*=a;*c=b-a;}

4,12,44

2.下列程序向a盘上的文本文件aaa.dat输出0至100间的整数,请将程序补充完全。

#include

#include

voidmain(void)

{

ofstreamf1("a:

aaa.dat");

if(!

f1(或f1.fail())){

cerr<<"a:

aaa.datfilenotopen!

"<

exit

(1);

}

for(inti=0;i<=100;i++)f1<

f1.close();

}

 

五、(每题10分,共20分)

1.编程求数列1,

,……的所有大于等于0.000001的数据项之和并输出结果。

1、#include

voidmain()

{

intn=1,d=1;

doubles=0.0,s0;

while((s0=double(n)/d)>=0.000001)

{

s+=s0;

d++;

}

cout<

}

2.用递归方法设计函数intArrayMin(intd[],intsize);,其中d为数组,size为数组元素个数;ArrayMin返回d中的最小元素。

intArrayMin(intd[],intsize)

{

intk=d[size-1];

if(size==1)returnk;

if(k<=ArrayMin(d,size-1))returnk;

elsereturnArrayMin(d,size-1);

}

 

一、单项选择题

1.下列表达式中正确的是             。

(B)

        A.  (k++)++                    B.  k---j

        C.  k--/=5                      D.  (k+3)=5

2.已知 int f(int); 和 int g(int); 分别是函数f和g的原型。

下列语句中,将函数f作为语句调用的有                。

(D)

A. f(3)+g(3);           B. p/=f(3);           C. g(f(3));          D. f(g(3));

3.下面四个程序段中,输出23个*号的程序段是               。

(C)

A. for (int i=1; i<23; i++) cout <<’*’;

B. for (int i=23; i>=0; i--) cout <<’*’;

C. int i=23; while (i>0) { cout <<’*’; i--; }

D. int i=0; while (0<=23) { cout <<’*’; i++; }

4.要定义一个int型二维数组a,并使其各元素具有初值:

(B)

         2  3  0  0

         4  0  5  0

         0  0  0  0

则正确的定义语句是             。

 A.int a[][]={2,3,0,0,4,0,5,0,0,0,0,0};

   B.int a[][4]= {2,3,0,0,4,0,5,0,0,0,0,0};

   C.int a[3][4]= {{2,3},{4,,5}};

   D.int a[][]={{2,3,0,0},{4,0,5,0},{0,0,0,0}};

5.设有数组定义

       int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

    则表达式 *(*(a+2)+1) 的值是         。

(B)

     A. 5             B. 6             C. 9           D. 10

6关于析构函数的说法错误的是(C)

A析构函数只有一个

B析构函数无任何函数类型

C析构函数与构造函数一样可以有形参

D析构函数在对象被撤销是自动执行

7下列说法正确的是(C)

A使用new建立动态对象的语法和建立动态变量的情况完全不同

Bnew和构造函数不能一同使用

C使用new建立一个动态对象时,自动调用构造函数

D使用new建立的动态对象在不用时必须调用析构函数删除

8在使用不同类型的对象对一个对象赋值时,完成类型转换的事(A)

A构造函数    B析构函数   C友元函数   D外部函数

9已知类myClass中的一个成员函数说明如下:

       void SetMyClass(myClass& myData)

其中,myClass& myData 的含义是(D)

A指向类myClass的指针为myData

B将myData的地址赋给SetMyClass

C变量myClass与myData按位相与作为SetMyClass的参数

DmyData是类myClass的对象引用,用来作为函数SetMyClass的形参。

10设置虚基类的主要目的是(B)

A简化程序    B消除两义性    C提高运行效率     D减少目标代码

二.多项选择题

1有关析构函数说法正确的是(AD)

A析构函数在对象生存期结束时被自动调用

B析构函数名与类名相同

C定义析构函数时,可以指定返回类行为void

D析构函数不能指定参数

2一下类定义形式中正确的是(AB)

class MyClass1{}

class MyClass2{}

class Myclass3{int cc=’a’;}

class MyClass4{int cc;}

3下面程序段完全正确的是(ABD)

A struct myStruct{    B struct myStruct {     C class myClass{         D  class myClass{

  int num;             int num;              private:

                   private:

 float f1 ;              float f1;                 int i;                   int i;        

};                    };                    myClass member;        myClass * p;

 int i=num;           int i=num;               };                      };

4下列说法正确的是:

(ABC)

Amain函数内声明的局部对象的构造函数在对象声明时自动调用

Bmain函数内声明的局部对象的构造函数在main函数结束时自动调用

C全局对象和静态对象的构造函数在main函数执行之前被调用

D全局对象和静态对象的构造函数在main函数结束之后被调用

5下面说法正确的是(AB)

A构造函数可以进行类型转换

B构造函数用于确保编译器检出对象初始化方面的错误

C初始化和赋值是等价的

D程序必须用于定义的初始化和赋值进行操作

6对于下面的程序,有两义性的语句是(AD)

classA{public:

 void f1( );};

classB{public:

 void f1( ); void f2 ( );};

classC:

public A,private B{ public:

 void f2( ); void f3( );};

C data

A  data .f1( );     B  data.A:

 :

f1( );  C  data.f2( );   D void C:

 :

f3( ){ f1( ); }

7关于多重继承两义性的描述中正确的是(ABD)

A一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现两义性

B解决两义性的最常用的方法是对成员名的限定法

C基类和派生类是派生类中同时出现的同名函数,也存在两义性问题

D一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现两义性

8抽象类应含有(CD)

A.至少一个虚函数     B.至多一个虚函数是纯虚函数

C.至多一个虚函数     D.至少一个虚函数是纯虚函数

二、填空题

1.表达式x=x+1表示成增量表达式为          。

(++x  )

2.关系表达式x+y>5的相反表达式为                         (x+y<=5)

3.执行语句 i=10; do { cout <<’*’; i--; } while (i+3); 后,将显示出         个*号(14  )

4.设有下面的定义

int  s[10]={1,2,3,4,5,6,7,8,9,10};

int  sum=0;

请完善下面的语句实现求数组s的所有元素之和,并保存在变量sum中:

 for ( int            ;            ; j++ )                ;(j=0   j<10   sum+=s[j] )

5.假定a是一个二维数组,则a[i][j]的指针访问方式为                         。

(*(*(a+i)+j)   或  *(a[i]+j)  )

三、下列程序运行后的输出结果

1. # include 

int a=5;

void main() {

       int a=10,b=20;

       cout <

       {   int a=0,b=0;

           for (int i=1; i<6; i++) {

              a+=i; b+=a;

       }

              cout <

:

a<

       }

       cout <

}(10  20

    15  35  5

    10  20)

 

2. # include 

int LB(int *a,int n) {

       int s=1;

       for (int i=0; i

              s*=*a++;

       return s;

}

void main() {

       int a[]={1,2,3,4,5,6,7,8};

       int b=LB(a,5)+LB(&a[3],3);

       cout <<"b="<

}(10  12)

3. # include 

# include 

void main() {

       char *a[5]={"student","worker","cadre","soldier","peasant"};

       char *p1,*p2;

       p1=p2=a[0];

       for (int i=0; i<5; i++) {

              if (strcmp(a[i],p1)>0) p1=a[i];

              if (strcmp(a[i],p2)<0) p2=a[i];

}

       cout <

template 

class FF {

       TT a1,a2,a3;

public :

       FF(TT b1,TT b2,TT b3) {

              a1=b1; a2=b2; a3=b3;

       }

       TT Sum() { return a1+a2+a3; }

};

void main()

{

       FF  x(2,3,4),y(5,7,9);

       cout <

}(9  2)

四、写出下列每个函数的功能

1. # include 

int SA(int a,int b) {

       if (a>b) return 1;

       else if (a==b) return 0;

       else return -1;

}(比较两个整数a和b的大小,若a>b则返回1,若a= =b则返回0,若a

2.double SF(double x,int n) {

    // n为大于等于0的整数

    double p=1,s=1;

    for (int i=1; i<=n; i++) {

           p*=x;

           s+=p/(i+1);

    }

    return s;

}(计算 1+X/2+X2/3+…+Xn/(n+1)的值并返回)

3. float FH() {

    float x,y=0,n=0;

    cin >>x;

    while (x!

=-1) {

           n++; y+=x;

           cin >>x;

    }

    if (n==0) return y; else return y/n;

}(求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志)

4. template 

void WE(Type a[],Type b[],int n) {

       for (int i=0; i

              b[n-i-1]=a[i];

}(模板函数,把数组a的每个元素按逆序放入数组b中)

五、编写程序

1.从键盘输入10个正整数据并累加求和。

# include 

void main()

{

       int x,s=0;

       cout <<"输入10个正整数:

";

       for (int i=1; i<=10; i++)

       {

              do{    // 该循环控制输入的是正整数

    cin >>x;

              }while (x<=0);

              s += x;

       }

       cout <

}

2.一维数组元素求和。

# include 

void main()

{

       int a[10];

       int i,s=0;

       cout <<"输入10个整数:

"<

       for (i=0; i<10; i++)

              cin >>a[i];

       for (i=0; i<10; i++)

              s += a[i];

       cout <

}

3.在一维数组中查找给定的数据。

# include 

void main()

{

       int a[10];

       int i;

       cout <<"输入10个整数:

"<

       for (i=0; i<10; i++)

              cin >>a[i];

       int num;

       cout <<"输入查找的数:

";

       cin >>num;

       for (i=0; i<10; i++)

              if (a[i]==num) break;

       if (i<10)

              cout <<"找到!

"<

       else

              cout <<"没有找到!

"<

}

4.从键盘上输入一行字符串,然后将所有小写字母改写成大写字母,最后输出该字符串。

# include 

# include 

void main()

{

       char s[80];

       c

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1