c++primer(练习1.14、1.16、2.17、2.38、3.2、3.3、3.5)
作者:互联网
练习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