首页 > 编程语言 >C++试卷带答案

C++试卷带答案

时间:2024-10-26 14:18:56浏览次数:9  
标签:return 函数 int 试卷 C++ complex 答案 func cout

选择题

(1)关于重载函数在调用时匹配依据的说法中,错误的是  (1)  

A)参数个数          B)参数的类型       

C)函数名字          D)函数的类型

(2)下面对友元函数描述正确的是(2)

A)友元函数的实现必须在类的内部定义

B)友元函数是类的成员函数

C)友元函数破坏了类的封装性和隐藏性

D)友元函数不能访问类的私有成员

(3)(3)不是面向对象系统所包含的要素。

A)对象     B)内联      C)类       D)继承

(4)在C++语言中函数返回值的类型是由(4)决定的。

A)调用该函数时系统临时                  B) return语句中的表达式类型

C)定义该函数时所指定的函数类型         D)调用该函数时的主调函数类型

(5)在C++语言中,对函数参数默认值描述正确的是(5)

A)函数参数的默认值只能设定一个

B)一个函数的参数若有多个,则参数默认值的设定可以不连续

C)函数参数必须设定默认值

D)在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值

(6)在C++中,数据封装要解决的问题是(6)

A)数据的规范化               B)便于数据转换

C)避免数据丢失               D)防止不同模块之间数据的非法访问

(7) C++语言规定,程序中各函数之间  (7) 

A) 既允许直接递归调用也允许间接递归调用

B) 不允许直接递归调用也不允许间接递归调用

C) 允许直接递归调用不允许间接递归调用

D) 不允许直接递归调用允许间接递归调用

(8)以下关于派生类特性的叙述中,错误的叙述是 (8)

A)派生类中只能继承基类成员而不能重定义基类成员。

B) 对于私有继承,基类成员的访问权限在派生类中全部变成私有。

C) 派生类对基类的继承具有传递性。

D) 初始化从基类继承来的数据成员,必须通过调用基类的构造函数来完成。

(9)以下关于指针函数的叙述中,正确的是(9)  。

A) 指针函数用来存放函数名           B) 指针函数用来存放函数调用结果的地址

C) 指针函数用来指示函数的入口       D) 指针函数就是函数指针的别名

(10) 将全局数据对象的存储类别限定为static,其目得是  (10) 

A) 为了解决同一程序中不同的源文件中全局量的同名问题;

B) 为了保存该变量的值;

C) 使该变量成为局部变量;

D) 使该变量能作为函数参数。

 阅读以下程序并给出执行结果 。

1、

#include<iostream>

using namespace std;

class A{

public:  A(){ cout<<"A-> "; }

               ~A(){ cout<<"<-~A; "; }

};

class B{

public:     B(){ cout<<"B-> "; }

               ~B(){ cout<<"<-~B; "; }

};

class C{

public:     C(){ cout<<"C-> "; }

               ~C(){ cout<<"<-~C; "; }

};

void func(){

  cout<<"\nfunc: ";

  A a;

  static B b;

  C c;

}

int main(){

  cout<<"main: ";

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

      if(i==2) C c; else A a;

    B b;           }

  func(); func();

  return 1;

}

2、

#include <iostream>

using namespace std;

class B1

{public:

        B1(int i){    cout<<"constructing B1   "<<i<<endl; }

        ~B1(){        cout<<"destructing B1"<<endl;       }

};

class B2

{public:

        B2(){       cout<<"constructing B2 *"<<endl; }

        ~B2(){     cout<<"destructing B2"<<endl;     }

};

class C:public B2,public B1

{public:

    C(int a,int b):B1(a),b1(b)

    {      cout<<"constructing C"<<endl;  }

    ~C()

    {      cout<<"destructing C"<<endl;}

private:   

        B1 b1;

        B2 b2;

};

void main()

{

        C obj(1,2);

}

3、

#include <iostream>

using namespace std;

class A

{

private:

        //…其它成员

public:

        virtual void func(int data)

        {      cout<<"class A:"<<data<<endl;     }

};

class B: public A

{

        //…其它成员

public:

        void func()

        {      cout<<"function in B without parameter! \n";       }

        void func(int data)

        {      cout<<"class B:"<<data<<endl;     }

};

int main()

{

        A a,*p;

        A &p1=a;

        B b;

        p=&b;

        p1.func(1);

        p->func(100);

        return 1;

}

4、

#include <iostream>

using namespace std;

func(int a,int b);

int main()

{

        int k=4,m=1,p;

        p=func(k,m);   cout<<p<<endl;

        p=func(k,m);   cout<<p<<endl;

        return 1;

}

func(int a,int b)

{

        static int m=0,i=2;

        i+=m+1;

        m=i+a+b;

        return (m);

}

 阅读以下程序(或函数)并简要叙述其功能 

1、int chnum (char *str)

{

        int i,j,k,h,len,num=0;

        len=strlen(str);

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

        {

                k=1;

                j=len-i;

                while(j>1)

                {

                        k=k*10;

                        j--;

                }

                h=str[i]-'0';

                num=num+h*k;

        }

        return num;

}

输入:123  ?

运行结果:?

功能:

2、

# include <iostream>

using namespace std;

int 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 <<p1<<' '<<p2<<endl;

        return 1;

}

运行结果:?

功能:

3、

#include <iostream>

using namespace std;

void func(int[],int);

int main()

{

        int array[]={48,91,83,75,36};

        int len=sizeof(array)/sizeof(int);

        for (int i=0;i<len;i++)    

                cout<<array[i]<<",";

        cout<<endl<<endl;

        func(array,len);       

        return 1;

}

void func(int a[],int size)

{      int i,temp;

        for(int pass=1;pass<size;pass++)  

        {

                for(i=0;i<size-pass;i++)

                        if (a[i]>a[i+1])

                        {      temp=a[i];

                                a[i]=a[i+1];

                                a[i+1]=temp;

                        }

        }

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

                        cout<<a[i]<<",";

                cout<<endl;

}

请叙述函数func( )的功能。

4、

#include <iostream>

using namespace std;

int funp(const char* str1, const char* str2);

int main()

{

        char a[80],b[80];

        cout<<"Please input two string:";

        cin>>a>>b;

        cout<<"result="<<funp(a,b)<<endl;

        return 1;

}

int funp (const char* str1, const char* str2)

{

  while(*str1 && *str1==*str2)

  {

    str1++; str2++;

  }

  return *str1 - *str2;

}

请叙述函数funp( )的功能。

四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(10分,每空2分)

从已建立的学生链表中删除学号为number的学生结点。

struct Student

{

        long number;

        float score;

        Student * next;

};

Student * Delete (Student *head,long number) //删除链表结点

{

        Student *p;   //p指向要删除的结点

        if(           (1)            )    //原链表为空链表

        {

                cout<<"\nList is null!\n";

                return(head);

        }

if (             (2)            )   //要删除的结点为链表的第一个结点

        {

                p=head;

                head=head->next;

                delete p;

                cout<<number<<"the head of list have been deleted\n";

                return(head);

        }

for(Student * pGuard=head;        (3)        ;pGuard=pGuard->next)

        {

                if (pGuard->next->number==number)   //找到要删除的结点

                {

                                   (4)             

                                   (5)             

                        delete p;

                        cout<<number<<"have been deleted \n";

                        return(head);

                }

        }

        cout<<number<<"not found!\n";    //未找到要删除的结点

        return (head);

}

五、编程题(30%

1、编写函数char* copystr(char * dest,const char * source ,int m)将字符串source中第m个字符开始的全部字符复制成另一个字符串dest,并返回复制的串,请在主函数中输入字符串及m的值并输出复制结果。

2、设计并测试复数类(Complex)

  1. 设计一个复数类(Complex)包含两个数据成员:实部(real),虚部(imagin);

包含如下主要成员函数:

  • 构造函数(用来初始化一个复数对象,默认实部、虚部均为0);
  • 重载加、减法运算符(+、-)实现复数类的加、减法运算;
  • 显示复数对象,按a+bi(a为实部、b为虚部)格式输出一个复数对象。
  1. 请在主函数中使用所设计的复数类定义两个复数对象,求其和、差并输出。

答案:

一、选择题 

(1)  D (2)  C (3)  B  (4)  C  (5)   

(6)  D (7)  A (8)  A (9)  B  (10)  A  

二、阅读以下程序并给出执行结果 

1、

main: A-> <-~A ; B-> <-~B ; C-> <-~C ; B-> <-~B ;

func: A-> B-> C-> <-~C ; <-~A ;

func: A-> C-> <-~C ; <-~A ; <-~B ;

2、

constructing B2 *

constructing B1 1

constructing B1 2

constructing B2 *

constructing C

destructing C

destructing B2

destructing B1

destructing B1

destructing B2

3、

class A: 1

class B: 100

4、

8

17

三、阅读以下程序(或函数)并简要叙述其功能 

1、

运行结果:123

功能:函数chnum( )实现将一个整数字符串转换为一个相应的整数。

2、

运行结果:worker     cadre

功能:找出给定的字符串中的最大者及最小者并输出

3、

函数func( )的功能:用冒泡排序法排序,使参数数组a中的数据按从小到大(升序)排列并输出。

4、

函数funp( )的功能:比较两个参数字符串的大小,并返回第一个不相同字符的差值。

四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序 

(1)       !head               

(2)    head->number==number  

(3)    pGuard->next;          

(4)    p=pGuard->next;       

(5)    pGuard->next=p->next; 

五、编程题 

1、

#include <iostream>

using namespace std;

char* copystr(char * dest,const char * source ,int m);

int main()

{

        char src_str[80],sub_str[80];

        int m;

        cout<<"请输入字符串及要取子串的开始位置:"<<endl;

        cin>>src_str>>m;

        if(strlen(src_str)<m)

                cout<<"Error input!"<<endl;

        else

        {

                copystr(sub_str,src_str,m);

                cout<<"求得的子串:"<<sub_str<<endl;

        }

        return 1;

}

char* copystr(char * dest,const char * source ,int m)

{

        int n=0;

        while (n<m)

        {

                source++;        n++;

        }

        while(*source!='\0')

        {

                *dest=*source;

                dest++;

                source++;

        }

        *dest='\0';

        return dest;

}

2、

#include <iostream.h>

class complex

{

public:

        complex(double r=0.0,double i=0.0)

        {      real=r;             image=i;  }

        friend complex operator +(complex c1,complex c2);

        friend complex operator -(complex c1,complex c2);

        void display();

private:

        double real;

        double image;

};

complex  operator +(complex c1,complex c2)

{

        return complex(c1.real+c2.real,c1.image+c2.image);

}

complex  operator -(complex c1,complex c2)

{

        return complex(c1.real-c2.real,c1.image-c2.image);

}

void complex::display()

{

        if(image>0)

                cout<<real<<"+"<<image<<"i"<<endl;

        else if(image<0)

                        cout<<real<<image<<"i"<<endl;

                 else cout<<real<<endl;

}

int main()

{

        complex c1(5,4),c2(2,10),c3;

        cout<<"c1=";  c1.display();

        cout<<"c2=";  c2.display();

        c3=c1-c2;

        cout<<"c3=c1-c2=";       c3.display();

        c3=c1+c2;

        cout<<"c3=c1+c2=";      c3.display();

        return 1;

}

标签:return,函数,int,试卷,C++,complex,答案,func,cout
From: https://blog.csdn.net/workflower/article/details/143247901

相关文章

  • 【C++】map和set的使用
    最好的,不一定是最合适的;最合适的,才是真正最好的。......
  • C++:继承与多态(面试题篇)
    文章目录前言1.什么是多态?2.什么是重载、重写(覆盖)、重定义(隐藏)?3.多态的实现原理?4.inline函数可以是虚函数吗?5.静态成员可以是虚函数吗?6.构造函数可以是虚函数吗?7.析构函数可以是虚函数吗?什么场景下析构函数是虚函数?8.对象访问普通函数快还是虚函数更快?9.虚......
  • C++中vector的使用方法
    1包含头文件和命名空间首先,在使用vector之前,需要包含<vector>头文件。在C++中,如果使用标准命名空间,还需要加上usingnamespacestd;语句(不过这种全局使用命名空间的方式在大型项目中可能会引起命名冲突,也可以只使用std::vector来明确指定是标准库中的vector类型)。示例:#......
  • C++各版本引入的新特性
    作者:momo链接:https://www.zhihu.com/question/355400393/answer/3245544440来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。以下是C++各个版本的标准库特性:C++98:引入了以下新的库特性:RTTI(运行时类型信息),包括dynamic_cast和typeid类型转换......
  • 每日OJ题_牛客_NC383主持人调度(一)_排序​_C++_Java
    目录牛客_NC383主持人调度(一)_排序题目解析C++代码Java代码牛客_NC383主持人调度(一)_排序主持人调度(一)_牛客题霸_牛客网(nowcoder.com)描述:        有n 个活动即将举办,每个活动都有开始时间与活动的结束时间,第i 个活动的开始时间是starti ,第i 个活动......
  • 详解c++中的set_difference函数
    set_difference功能描述:求两个集合的差集函数原型:set_difference(iteratorbeg1,iteratorend1,iteratorbeg2,iteratorend2,iteratordest);//求两个集合的差集//注意:两个集合必须是有序序列//beg1容器1开始迭代器//end1容器1结束迭代器//beg2容......
  • C++之内存管理与模板初级
    内容介绍Ⅰ.C++内存管理1.C/C++内存分布2.C与C++动态内存管理方式对比2.1C中动态内存管理方式2.2C++中内存管理方式3.new和delete的底层实现原理(了解)Ⅱ.模板初阶1.模板介绍2.函数模板3.函数模板参数匹配原则4.类模板Ⅰ.C++内存管理1.C/C++内存分布intn1=1;......
  • 【c++篇】:解析c++类--优化编程的关键所在(三)
    感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢个人主页:余辉zmh–CSDN博客文章所属专栏:c++篇–CSDN博客文章目录一.构造函数的初始化列表1.1构造函数体的赋值1.2初始化列表1.3`explicit`关键字二.静态`static`成员2.1.静态成员变量......
  • C++11中lambda表达式与包装器
    目录1.lambda表达式1.1引入lambda表达式1.2lambda表达式用法1.3函数对象与lambda表达式2.包装器2.1function包装器2.2bind1.lambda表达式在C++98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。//lambda表达式#include<iostream>#inc......
  • 如何在Qt框架中使用C++进行跨平台开发
    摘要:使用Qt框架结合C++实现跨平台开发的要点涉及1、选择合适的Qt版本及工具集、2、掌握QtCreator与Qt库的使用、3、深入理解信号与槽机制、4、遵循模块化和解耦的设计原则、5、依据不同平台进行特定优化。特别地,掌握QtCreator与Qt库的使用是基础,该集成开发环境(IDE)包含了代码编辑......