C++primer 第五版课后习题 第六章(1) 1-20

来源:互联网 发布:大麦网数据库600w 编辑:程序博客网 时间:2024/06/06 08:41

练习6.1
实参和形参的区别是什么?
形参出现在函数定义中,只能在函数体内使用

练习6.2
(a)返回类型不匹配。应该把int换成string
(b)没有返回类型。应该加上一个返回类型(如void)
(c)任意两个形参不能同名。把第二个v1换成v2
(d)函数体必须加上{ }

练习6.3 && 练习6.4

#include<iostream>using namespace std;int fact(int a) {    int ret = 1;    while (a > 1)        ret *= a--;    return ret;}int main() {    int val;    cin >> val;    cout << val<<"的阶乘是:\t"<<fact(val) << endl;    return 0;}

练习 6.5

#include<iostream>using namespace std;int abs(int a) {    return a > 0 ? a : (-a);}int main() {    int val;    cin >> val;    cout << val<<"的绝对值是:\t"<<abs(val) << endl;    return 0;}

练习 6.6

形参 ,局部变量以及局部静态变量之间的关系
局部变量包括 形参和静态局部变量。
形参属于自动对象,在函数开始时初始化,在函数终止时被销毁。
局部静态变量,在程序第一次使用时初始化,直到程序终止时才被销毁。

练习 6.7

#include<iostream>using namespace std;int fun() {    static int flag = -1;    flag++;    return flag;}int main() {    for (int i = 0; i < 10; i++)        cout <<"第"<<i+1<<"次调用的返回值是:\t"<< fun() << endl;    return 0;   }

分离式编译没有仔细看,用上了再看吧。。。。
练习 6.10

#include<iostream>using namespace std;void change_zhi_zhen(int *a,int *b) {    int temp;      temp = *a;      *a = *b;      *b = temp;}void change_yin_yong(int &a, int &b){    int temp;    temp = a;    a = b;    b = temp;}int main() {    int val1 = 2, val2 = 3;    cout << val1 << " " << val2 << endl;    change_zhi_zhen(&val1, &val2);//用指针形参交换    cout <<"指针形参交换"<< val1 <<" "<< val2 << endl;    change_yin_yong(val1, val2);//用引用类型交换    cout << "用引用类型交换" << val1 << " " << val2 << endl;}

练习 6.12

当然是引用更容易,因为引用还可以返回额外的信息(这个理由有点牵强)

练习 6.13

前者以传值的方式传入参数,不能修改实参;
后者以引用的方式传入参数,可以修改实参;

练习 6.17

#include<iostream>#include<cctype>#include<string>using namespace std;bool find_big(const string &s) {    for (auto c : s)        if (isupper(c))            return true;    return false;}string change_to_small(string &s) {    /*这种做法不对,改变的只是c的值,与s无关,c只是一个临时变量    for (auto c : s)    {    c = tolower(c);    cout << c << endl;    }    */    for (decltype(s.size()) i = 0; i < s.size(); i++)        s[i] = tolower(s[i]);       return s;}int main() {    cout << find_big("Bhdkalks") << endl;    string s = "Bhdkalks";    cout << change_to_small(s)<< endl;    return 0;}
阅读全文
0 0
原创粉丝点击