ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++primer(练习1.14、1.16、2.17、2.38、3.2、3.3、3.5)

2020-11-30 21:32:32  阅读:220  来源: 互联网

标签:1.16 1.14 string int s2 s1 2.38 auto cout


练习1.14

对比for循环和while循环,两种形式的有缺点各是什么?

  • for循环中,循环控制变量的初始化和修改都放在语句头部,形式简洁且特别适用于循环次数已知的情况
  • while循环中,循环控制变量的初始化,一般放在while语句之前,形式不太简洁,比较适用于循环次数不易预知的情况

练习1.16

编写程序,从cin读取一组数,输出其和

#include <iostream>
using namespace std;
int main() {
    int a=0,b=0;
    cout << "输入5个整数:"<< endl;
    for (int i = 0; i < 5; ++i) {
        cin >> a;
        b+=a;
    }
    cout <<"这5个整数的和为:" << b << endl;

    return 0;
}

Result

练习2.17

执行下面的代码段将输出什么结果?

#include <iostream>
using namespace std;
int main() {
    int i, &ri = i;
    i = 5; ri = 10;
    cout << i <<" "<< ri <<endl;
    return 0;
}

Result

练习2.38

说明由decltype指定类型和由auto指定类型有何区别?

  • decltype既关注顶层const对象,也关注底层const对象。
  • auto直接忽略顶层const对象,只关心底层const对象
  • decltype是基于所给表达式的类型完成推断
  • auto是根据值来判断类型

1.请举出一个例子,decltype指定的类型与auto指定的类型一样;

int i = 0, &r = i;
auto a = i;           //i为0,由此auto变为int
decltype (i) b = i;   //i为int类型,由此decltype(i)成为int

2.再举一个例子,decltype指定的类型与auto指定的类型不一样

int i = 0, &r = i;
auto c = r;         //r是i的引用(别名),i值为0,故r=0,所以auto变为int
decltype(r) d = i;  //r的类型是引用类型,故decltype(r)变为int&(引用类型)

练习3.2

编写一段程序从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词

#include <iostream>
using namespace std;
int main() {
    string word;
    while (getline(cin,word))
        cout << word << endl;
    return 0;
}

Result

修改上述程序使其一次读入一个词

#include <iostream>
using namespace std;
int main() {
    string word;
    while (cin >> word)
        cout << word << endl;
    return 0;
}

Result

练习3.3

说明string类的输入运算符(>>)和getline函数分别是如何处理空白字符串的

  • 在执行读取操作时,string对象会自动忽略开头的空白(即空白符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止
  • getline(cin,string对象)函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)

练习3.4

编写一段程序读入两个字符串,比较其是否相等并输出结果。如果不相等,输出较大的那个字符串。

#include <iostream>
using namespace std;
int main() {
    string s1,s2;
    cin >> s1 >> s2;
    if (s1==s2)
        cout << "s1与s2相等"<<endl;
    else if (s1>s2)
      cout << s1;
    else
      cout << s2;
    return 0;
}

Result


改写上述程序,比较输入的两个字符串是否等长,如果不等长,输出长度较大的那个字符串。

#include <iostream>
using namespace std;
int main() {
    string s1,s2;
    cin >> s1 >> s2;
    if (s1.size()==s2.size())
        cout << "s1与s2等长"<<endl;
    else if (s1.size()>s2.size())
      cout << s1;
    else
      cout << s2;
    return 0;
}

Result

练习3.5

编写一段程序从标准输入中读入多个字符串并将它们连接在一起,输出连接成的大字符串

#include <iostream>
using namespace std;
int main() {
    string s1,s2,s3;
    cin >> s1 >> s2 >> s3;
    string s4=s1+s2+s3;
    cout << s4 << endl;
    return 0;
}

Result

修改上述程序,用空格把输入的多个字符串分隔开来

#include <iostream>
using namespace std;
int main() {
    string s1,s2,s3,s4;
    cin >> s1 >> s2 >> s3 >> s4;
    string s5 = s1+" "+s2+" "+s3+" "+s4;
    cout << s5 << endl;
    return 0;
}

Result

标签:1.16,1.14,string,int,s2,s1,2.38,auto,cout
来源: https://blog.csdn.net/weixin_48524215/article/details/110388996

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有