最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C++04737 第3章 课后练习题 完整答案

来源:动视网 责编:小OO 时间:2025-09-23 06:47:37
文档

C++04737 第3章 课后练习题 完整答案

第三章一、单项选择题1.声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。2.inline3.对象、对象指针、引用4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。5.int*fun(char,int&);二、单项选择题1.A;使用了const改变。2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。只是函数重载的依据是参数个数和数据类型的不同。3.C;参考课本P61,当形参有两个时
推荐度:
导读第三章一、单项选择题1.声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。2.inline3.对象、对象指针、引用4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。5.int*fun(char,int&);二、单项选择题1.A;使用了const改变。2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。只是函数重载的依据是参数个数和数据类型的不同。3.C;参考课本P61,当形参有两个时
第三章

一、单项选择题

1. 声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。

2.inline 

3.对象、对象指针、引用 

4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。

5.int *fun(char,int&); 

二、单项选择题 

1.A;使用了const改变。

2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。只是函数重载的依据是参数个数和数据类型的不同。

3.C;参考课本P61,当形参有两个时,使用C的格式。

三、改错题 

1.下面程序错在何处?

template

T fun(T x)

{

    T y;

    y = x*x - T; // 错误,T是类型,不是变量,不能参加运算;

    return y;

2.找出下面程序中的错误之并改正之。

#include   //C++标准中没有iostream.h头文件

template

Type max(T x, y)  // x的类型和template中的不一样,并且y没有类型。 

{

    return (x>y) ? (x) : (y);

}

修改如下:

#include 

template

Type max(Type x, Type y)

{

return (x>y) ? (x) : (y);

}

 

3. 找出下面程序中的错误之并改正之。

函数change 的参数定义成了常量,只能使用参数,而无权修改他。 

#include

#include

using namespace std;

void change(const string& s) 

//函数change 的参数定义成了常量,只能使用参数,而无权修改他。

{

    s = s + "pig!";

}

void main()

{

    string str("it is a ");

    change(str);

    cout << str << endl;

}

修改如下:

#include

#include

using namespace std;

void change(string& s) 

//函数change 的参数定义成了常量,只能使用参数,而无权修改他。

{

    s = s + "pig!";

}

void main()

{

    string str("it is a ");

    change(str);

    cout << str << endl;

}

四、编程题 

1.编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。 

#include

#include     //使用数学求根函数sqrt(),需要包含头文件cmath

using namespace std; 

void equation_1 (int a, int b, int c)

{

    double x1, x2, temp;

    temp = b*b - 4 * a * c;

    x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);   

    //分母乘以1.0是为了保证分母的结果位double型

    x2 = (-b - sqrt(temp) ) / (2 * a * 1.0);

    cout<<"两个不相等的实根"<< endl;

    cout<<"x1 = "<< x1<<", x2 = "<< x2<< endl;

}

void equation_2 (int a, int b, int c)

{

    double x1, x2, temp;

    temp = b*b - 4 * a * c;

    x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);

    x2 = x1;

    cout<<"两个相等的实根"<< endl;

    cout<<"x1 = "<< x1<<", x2 = "<< x2<< endl;

}

void equation_3 (int a, int b, int c)

{

    double temp, real1, real2, image1, image2;

    temp = - (b*b - 4 * a * c);

    real1 = -b / (2 * a *1.0);

    real2 = real1;

    image1 = sqrt(temp);

    image2 = - image1;

    cout<<"两个虚根"<< endl;

    cout<<"x1 = "<< real1<<" + "<< image1<<"j"<< endl;

    cout<<"x2 = "<< real2<<" - "<< -image2<<"j"<< endl;

    //加了两个减号,显示更清晰

    

}

void main()

{

    int a, b, c;

    double temp;

    cout<<"输入a,b,c的值"<< endl; //从主函数输入a、b、c

    cin>>a>>b>>c;

    cout<<"方程为:"<< a<<"x*x+"<< b<<"x+"<< c<<" = 0"<< endl;

    temp = b*b - 4 * a * c;

    if(temp > 0) //使用if选择语句进行判断选择

        equation_1 (a, b, c);

    if(temp == 0)

        equation_2 (a, b, c);

if(temp < 0)

        equation_3 (a, b, c);

}

运行结果:

2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。

#include < iostream >

#include < string >

using namespace std;

char up (char c)

{    

return (c >= 97 && c <= 122) ? (c - 32) : c;

       //小写字母的ASCII码从97-122,大写从65-90,小写转大写码值减32

}

void main()

{

    int i=0;

    string str = "Welcome";

    while(str[i] != '\\0')  //字符串未到末尾则调用up函数

        cout<< up(str[i++]);

cout<< endl;

}

运行结果:

3.编写主程序条用带实数r和整数n两个参数的函数并输出r的n次幂。

#include < iostream >

using namespace std;

double power(double r, int n)

{

    int i;

    double result = 1.0;

for(i=0; i        result = result * r; //计算r的n次幂

    return result;

}

void main()

{

    double r;

    int n;

cout<<"r = ";

cin>>r;

cout<<"n = ";

cin>>n;

    cout<< r<<"的"<< n<<"次幂是:"<< power(r,n)<< endl; //调用函数

}

运行结果:

4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。其方式为第1行有1个字符C,第2行有2个字符C ,等等。

#include < iostream >

using namespace std;

void print_triangle(char c, int n)

{

    int i, j;

    for(i=0; i< n; i++) //使用双重for循环输出三角形

    {

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

        {

         cout<< c;

        }

     cout<< endl;

    }

}

void main()

{

    char C;

    int N;

    cout << "请输入一个字符:";

    cin >> C;

    cout << "请输入行数:";

    cin >> N;

    print_triangle(C,N); //调用打印三角形函数

}

运行结果:

5.编写一个ieqiu字符串长度的函数,strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。

#include < iostream >

#include < string >

using namespace std;

int strlen(string str)  //传递对象参数,求字符串长度

{

    int len = 0;

    while(str[len] != '\\0')

    {

        len++;

    }

    return len;

}

void revers(string& str1)  //传递引用参数,将字符串倒序

{

    char c;   

    int j, len;   

    len=strlen(str1);   

    j=len/2-1;   

while(j>=0)

    {   

        c = str1[j];   

        str1[j] = str1[len-j-1];   

        str1[len-j-1] = c;   

        j--;   

    }

    str1[len]='\\0';

}

void main()

{

    string str = "Welcome";

    cout<< str <<"----的长度:"<< strlen(str)<< endl;

cout<< "倒序前字符串:" << str << endl; //倒序前

    revers(str);//

    cout<< "倒序前字符串:" << str<< endl; //倒序后

}

运行结果:

6.用函数模板实现3个数值中按最小值到最大值排序的程序。

#include

using namespace std; 

template

void sort(T a, T b, T c) 

{

    T temp;

if(a>b)

    {

        temp = a;

        a = b;

        b = temp;

    }

if(a>c)

    {

        temp = a;

        a = c;

        c = temp;

    }

if(b>c)

    {

        temp = b;

        b = c;

        c = temp;

    }

    cout << "由小到大排序是:" << a << " " << b << " " << c << endl;

}

void main()

{

    int a, b, c;

    double e, f, g;

    cout << "请输入三个整数:";

    cin >> a >> b >> c;

    sort(a,b,c);

    cout << "请输入三个浮点数:";

    cin >> e >> f >> g;

    sort(e,f,g);

}

运行结果:

7.利用函数模板设计一个求数组元素总和的函数,并检验之。

#include < iostream >

using namespace std;

template //定义求和函数模板

T sum(T b[], int n)

{

    T s = 0;

for(int i=0; i        s = s + b[i];

    return s;

}

void main()

{

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

    int s = sum(a,5);  //调用求和函数

    cout << "数组的和为:" << s <}

运行结果:

8.重载上题中的函数模板,使他能够进行两个数组的求和。

#include < iostream >

using namespace std;

template //定义一个数组求和函数模板sum

T sum(T a[], int n)

{

    T s = 0;

for(int i=0; i        s = s + a[i];

    return s;

}

template //定义两个求和函数模板sum

T sum(T a1[], int n1, T a2[], int n2)

{

    T s = 0;

    s = sum(a1,n1) + sum(a2,n2); //重载第一个sum

    return s;

}

void main()

{

    int a1[5]={5,8,1,3,4};

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

    int s1 = sum(a1,5);  //自动重载第一个sum函数

    int s2 = sum(a2,8);  //自动重载第一个sum函数

    int s3 = sum(a1,5,a2,8);  //自动重载第二个sum函数

    cout << "数组a1的和为:" << s1 < cout << "数组a2的和为:" << s2 < cout << "两个数组的和为:" << s3 <}

运行结果:

文档

C++04737 第3章 课后练习题 完整答案

第三章一、单项选择题1.声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。2.inline3.对象、对象指针、引用4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。5.int*fun(char,int&);二、单项选择题1.A;使用了const改变。2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。只是函数重载的依据是参数个数和数据类型的不同。3.C;参考课本P61,当形参有两个时
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top