《C++ Primer》第五版课后习题解答_第六章(1)(01-07)

来源:互联网 发布:如何在淘宝网上购物 编辑:程序博客网 时间:2024/05/17 22:04

系统环境: windows 10 1703

编译环境:Visual studio 2017


6.1

实参:定义在主调函数中,用来初始化形参的参数;

形参:定义在被调函数中,由其主调函数的实参来初始化。


6.2

(a) 函数的返回类型和返回变量不相同,可以修改为:

    string f() {        string s;        //...        return s;    }
(b) 没有定义返回类型,可以修改为:

    void f2(int i) { /*...*/ }
(c) 1. 缺失左侧大括号;

     2. 两个形参不能命名成相同的名字,可以修改为:

 

    int calc(int v1, int v2) { /*...*/ }

(d) 函数体没有用大括号括起来,可以修改为:

double square(double x) { return x * x };

6.3

int fact(int fac1) {    int sum = 1;    while (fac1 != 0)    {        sum *= fac1;        --fac1;    }    return sum; }

6.4

#include <iostream>using std::cout;using std::cin;using std::endl;using std::runtime_error;int fact(int fac1) // 构建计算阶乘的 fact 函数{    int sum = 1;    if (fac1 == 0) // 判断输入实参的值,如果是 0,返回 1(0! = 1)    {        sum = 1;    }    else    {        while (fac1 != 0) // 如果不是零,则计算阶乘        {            sum *= fac1;            --fac1;        }    }    return sum; // 返回函数计算结果}int main(){    int val;    int ans;    cout << "Enter your integer:" << endl;    while (cin >> val)    {        try        {            if (val < 0)            {                throw runtime_error("You Must Enter Non-negative Number!!!"); // 如果输入了负数,则报错            }            else            {                ans = fact(val);                                              // 如果输入了非负数,则正常调用函数并返回结果                cout << "The factorial of " << val << " is: " << ans << endl;                 break;            }        }        catch (runtime_error err)        {            cout << err.what() << "\n" << "Do you want to continue? Enter \"y\" or \"n\" " << endl; // 函数报错之后,询问是否继续循环            char s; // 检查用户输入字符来判断是否继续循环            cin >> s;            if (s == 'n')  // 如果输入了 n,则生气地结束循环            {                cout << "Fine!" << endl;                 break;            }            else if (s == 'y')            {                cout << "Enter your integer AGAIN:" << endl; // 如果输入了 y,则继续循环                continue;            }            else            {                cout << "you are funny :) " << endl; // 如果用户不按常理出牌,则结束循环                break;            }        }    }    return 0;}

6.5

#include <iostream>using std::cout;using std::cin;using std::endl;double Adamabs(double abs1) {    double ans = 0;    if (abs1 < 0)    {        ans = abs1 * -1;    }    else    {        ans = abs1;    }    return ans; }    int main(){    double dval;    double dans;    cout << "Enter an number:" << endl;    while (cin >> dval)    {        dans = Adamabs(dval);        break;    }    cout << "The absolute value of " << dval << " is: " << dans << endl;    return 0;}

6.6

形参:定义在被调函数内部的参数,会被主调函数传入的实参初始化;

局部变量:定义在函数体内部的变量,只在函数体作用域内可见;

局部静态变量:在程序执行的第一次经过对象定义语句时初始化,并且知道程序终止时才被销毁。在此期间即使对象所在的函数结束执行也不会对它有影响

函数可以编写为:

int Adam(int adam1){    int static cnt = 0;    --adam1;    ++cnt;    return adam1;}
函数功能为参数自减 1,并且计数变量 cnt 加一

6.7

#include <iostream>using std::cout;using std::endl;int Adam(){    int static cnt = -1;    ++cnt;    return cnt;}    int main(){    for (int i = 1; i != 10; ++i)    {        cout << Adam() << endl;    }    return 0;}

阅读全文
1 0
原创粉丝点击