2020学年C++面向对象程序设计期末复习题

2021/06/25 C++面向对象程序设计 共 4977 字,约 15 分钟

选择

题号123456789 
答案BACDBCDCA 
题号10111213141516171819
答案ADBCDCDDDB
  1. 以下叙述正确的是( )。

    A.在对一个C++程序进行编译的过程中,可发现注释中的拼写错误

    B.在C++程序中,main函数只能有一个

    C.C++程序中不区分大小写字母

    D.C++程序的每行只能写一条语句

  2. 一个最简单的C++程序可以只有一个( )。

    A.main函数 B.库函数 C.空函数 D.类的成员函数

  3. 下列不属于面向对象方法的基本特征的是( )。

    A.封装性 B.多态性 C.模块性 D.继承性

  4. 下列概念中不属于面向对象程序设计方法的是( )。

    A.对象 B.继承 C.类 D.过程调用

  5. 用C++语言编写的程序( )。

    A.可立即执行 B.是一个源程序

    C.经过编译即可执行 D.经过编译解释才能执行

  6. 以下不正确的叙述是( )。

    A.在C++程序中,逗号运算符的优先级最低

    B.在C++程序中,count和Count是两个不同的变量

    C.在定义变量时,必须给变量赋初值

    D.表达式1/3+1/3+1/3的结果为0

  7. 下列关于C++用户标识符的叙述中,正确的是( )。

    A.用户标识符中可以出现下划线和减号

    B.在C++程序中,可以把for定义为用户标识符,但不能把define定义为用户标识符

    C.用户标识符中可以出现下划线,但不能放在用户标识符的开头

    D.用户标识符中可以出现数字,但不能放在用户标识符的开头

  8. 设变量a是整型,f是实型,i是双精度型,则表达式a+’a’+i*f值的数据类型为( )。

    A. int B. float C. double D. char

  9. 在以下选项中,与k=n++完全等价的表达式是( )。

    A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1

  10. 设有程序段

int k=10;
while(k) k=k-1;

则下面描述中正确的是( )。

A.while循环执行10次 B.循环是无限循环

C.循环体语句一次也不执行 D.循环体语句执行一次

  1. 下列循环语句中有语法错误的是( )。

    A.while(x=y) 5; B.while(0);

    C.do 2; while(x==b); D.do x++ while(x==10);

  2. 对for(表达式1;;表达式3)可理解为( )。

    A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)

    C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3)

  3. 下列说法中正确的是( )。

    A.break用在switch语句中,而continue用在循环语句中

    B.break用在循环语句中,而continue用在switch语句中

    C.break能结束循环,而continue只能结束本次循环

    D.continue能结束循环,而break只能结束本次循环

  4. C++规定,函数返回值的类型是由( )。

    A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定

    C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数类型所决定

  5. 对于某个函数调用,不用给出被调用函数的原型的情况是( )。

    A.被调用函数是无参函数 B.被调用函数是无返回值的函数

    C.函数的定义在调用处之前 D.函数的定义在别的程序文件中

  6. 以下正确的函数定义形式是( )。

A.

double fun(int x;int y)

B.

fun(int x,y)
{z=x+y;return z;} {int z;return z;}

C.

fun(x,y)

D.

double fun(int x,int y)
{int x,y; double z; {double z;
z=x+y; return z;} z=x+y; return z;}
  1. 关于全局变量,下列说法正确的是( )。

    A.任何全局变量都可以被应用系统中任何程序文件中的任何函数访问

    B.任何全局变量都只能被定义它的程序文件中的函数访问

    C.任何全局变量都只能被定义它的函数中的语句访问

    D.全局变量可用于函数之间传递数据

  2. 以下不正确的说法是( )。

    A.在不同函数中可以使用相同名称的变量

    B.形式参数是局部变量

    C.在函数内定义的变量只在本函数范围内有效

    D.在函数内的复合语句中定义的变量在本函数范围内有效

  3. 在参数传递过程中,对形参和实参的要求是( )。

    A.函数定义时,形参一直占用存储空间

    B.实参可以是常量、变量或表达式

    C.形参可以是常量、变量或表达式

    D.形参和实参类型和个数都可以不同

填空

  1. 应用程序jisuan.cpp中只有一个函数,这个函数的名称是main

  2. 一个函数由 函数头函数体两部分组成。

  3. C++程序的语句结束符是 分号( 或 ;)

  4. 在C++语言的结构化程序设计中, 函数是程序的基本组成单元;在C++语言的面向对象设计中, 是程序的基本组成单元。

  5. 设有如下语句:

    int n=10;
    

    则n++的结果是10 ,n的结果是11

  6. 执行下列语句后,a的值是 -264

    int a=12;
    a+=a-=a\*a;
    
  7. 与m%n等价的C++表达式为m-m/n\*n

执行语句for(i=1;i++\<4;);后,变量i的值是 5

  1. 执行下面程序段后,k值是 36
k=1;
n=263;
do
{
	k\*=n%10;
	n/=10;
}while(n);
  1. C++规定,简单变量做实参时,它和对应形参之间的数据传递方式是 值传递

  2. 编写程序,输入a、b、c三个数,输出最大者。所编程序如下,请将缺少的部分补齐。

int main()
{
    int a, b, c, t = 0;
    cout<< “输入三个数:”<<endl;
    cin>>a>>b>>c;
    if( a > b ){t=a; a=b; b=t;}
    if( _____ ){t=a; a=c; c=t;}
    if( b > c ){ ____________;}
    cout<< “最大数为:”<< ______ <<endl;
    return 0;
}

答案:

a>c; 
t=b; b=c; c=t; 
c ;

读程序

  1. 程序1:
#include <iostream>
using namespace std;
int main()
{
    int n,a=0,b=0;
    cout<<"输入n:";
    cin>>n;
	switch (n)
	{
        default: a+=n,b-=n;
        case 0:b++;
        case 1:a++;
        case 2:a++,b++;
	}
	cout<<"a="<<a<<",b="<<b<<endl;
}

输入n的值为4,请写出程序的运行结果:

a=6,b=-2

  1. 程序2:
#include <iostream>
using namespace std;
int main()
{
    int x=15;
    while(x>10&&x<50)
	{
        x++;
        if (x/3) {x++;break;}
        else continue;
	}
	cout<<x<<endl;
}

请写出程序的运行结果:

17

  1. 程序3:
#include <iostream>
using namespace std;
double f(double x,double y)
{
    if (x>=y)
    return (x+y)/2.0;
    else
    return f(f(x+2,y-1),f(x+1,y-2));
}
int main()
{
    double z;
    z=f(1.0,10.0);
    cout<<"z="<<z<<endl;
    return 0;
}

请写出程序的运行结果:

z=5.5

写程序

  1. 输入一个小写字母,输出其对应的大写字母

    #include<iostream>
    using namespace std;
    int main() {
        char c;
        cout<<"请输入一个小写字母";
        cin>>c;
        if(c >= 'a' && c<= 'z') {
            c = c - 32;
        }
        cout<<c<<endl;
        return 0;
    }
    
  2. 某运输公司在计算运费时,按运输距离(s)对运费打一定的折扣(d),其标准如下:

    s<250 没有折扣

    250≤s<500 2.5%折扣

    500≤s<1 000 4.5%折扣

    1 000≤s<2 000 7.5%折扣

    2 000≤s<2 500 9.0%折扣

    2 500≤s<3 000 12.0%折扣

    3 000≤s 15.0%折扣

    输入基本运费p,货物重量w,距离s,计算总运费f。总运费的计算公式为f=p×w×s×(1-d)。其中d为折扣,由距离s根据上述标准求得。

    #include<iostream>
    using namespace std;
    int main() {
    	int p, w, s;
    	float d, f;
        cout<<"请输入基本运费:";  cin>>p;
        cout<<"请输入货物重量:";  cin>>w;
        cout<<"请输入运输距离:";  cin>>s;
        if(s < 250) {
            d = 0;
        } else if(s < 500) {
            d = 0.025;
        } else if(s < 1000) {
            d = 0.045;
        } else if(s < 2000) {
            d = 0.075;
        } else if(s < 2500) {
            d = 0.09;
        } else if(s < 3000) {
            d = 0.12;
        } else {
            d = 0.15;
        }
        f = p * w * s * (1 - d);
        cout<<f<<endl;
        return 0;
    } 
    
  3. 在校运会中,1000m长跑项目分为预赛和复赛,预赛中有24名选手参加比赛,最后成绩排名前8名运动员可以进入复赛。请设计一个体育成绩排序程序,可以实现对24名参赛选手成绩的录入和排序,并输出前8名选手的成绩。

    #include<iostream>
    using namespace std;
    void sort(float a[], int n) {
        int i, j, k;
        for(i = 0; i < n-1; i++) {
            if(a[j]<a[k]) {
                k = j;
            }
        }
        if(k != i) {
            float t = a[i];
            a[i] = a[k];
            a[k] = t;
        }
    }
    int main() {
        float s[24];
        for(int i = 0; i < 24; i++) {
            cin >> s[i];
        }
        sort(s, 24);
        for(int i = 0; i < 8; i++) {
            cout << s[i] << "\t";
        }
        cout << endl;
        return 0;
    }
    
  4. 定义一个函数,当n是素数时,返回1,否则返回0。在主函数中输入一个整数,并调用判断素数的函数,判断后输出“此数为素数”或“此数不是素数”。

    #include<iostream>
    using namespace std;
    int isPrimer(int n) {
        int i;
        for(i = 2; i < n; i++) {
            if (n % i == 0) {
                return 0;
            }
        }
        return 1;
    }
    int main() {
        int m;
        cout<<"请输入一个正整数";
        cin>>m;
        if(isPrimer(m)) {
            cout<<"该数是一个素数。"<<endl;
        } else {
            cout<<"该数不是一个素数。"<<endl;
        }
        return 0;
    }
    
  5. 已知:

    \[m = \frac{max(a,b,c)}{max(a+b,b,c)+max(a,b,b+c)}\]

    其中max(a,b,c)代表abc中的最大数。输入abc,求m的值,要求将max(a,b,c)定义成函数。

    #include<iostream>
    using namespace std;
    int max(int x, int y, int z) {
        int t;
        t = x > y ? x: y;
        t = t > z ? t: z;
        return t;
    }
    int main() {
        int a, b, c;
        float m;
        cout<<"输入三个数";
        cin>>a>>b>>c;
        m = float(max(a,b,c)) / (max(a+b,b,c)+max(a,b,b+C));
        cout << m << endl;
    }
    

文档信息

Search

    Table of Contents