C++ Primer 4th 习题答案 第三章
返回索引
习题3.5编写程序实现从标准输入每次读入一行文本,然后改写程序,每次读入一个单词
习题3_7编写一个程序读入两个string对象,
测试它们是否相等,若不相等,则指出两个中那个较大,
接着,改写程序测试他们的长度是否相等,若不相等指出哪个较长
习题3_8编写一个程序,从标准输入读取多个string对象,把它们链接起来存放到一个更大
的string对象中.并输出链接后的string对象.接着,改写程序,将链接后相邻string对象以空格隔开
习题3.13 读取一组整数vector对象,计算并输出每对相邻元素的和.
如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其元素
然后修改程序,头尾元素两两配对,计算每对元素的和,并输出
习题3.14 读入一段文本到vector对象,每个单词存储为vector中的一个元素.
把vector对象中每个单词转化为大写字母.输出vector对象中转化后的元素,
每八个单词为一行输出.
返回索引
习题3.5编写程序实现从标准输入每次读入一行文本,然后改写程序,每次读入一个单词
//
习题3.5编写程序实现从标准输入每次读入一行文本,然后改写程序,每次读入一个单词
//
#include " stdafx.h "
#include < iostream >
#include < string >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
// 每次读入一行
/* string line;
while(getline(cin, line)){
cout << line << endl;
}
getchar(); */
// 每次读入一个单词
/* string word;
while(cin >> word){
cout << word << endl;
}
getchar(); */
}
//
#include " stdafx.h "
#include < iostream >
#include < string >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
// 每次读入一行
/* string line;
while(getline(cin, line)){
cout << line << endl;
}
getchar(); */
// 每次读入一个单词
/* string word;
while(cin >> word){
cout << word << endl;
}
getchar(); */
}
习题3_7编写一个程序读入两个string对象,
测试它们是否相等,若不相等,则指出两个中那个较大,
接着,改写程序测试他们的长度是否相等,若不相等指出哪个较长
//
习题3_7编写一个程序读入两个string对象,
// 测试它们是否相等,若不相等,则指出两个中那个较大,
// 接着,改写程序测试他们的长度是否相等,若不相等指出哪个较长
#include " stdafx.h "
#include < string >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
// 判断那个字符串较大
/* string word1;
string word2;
cin >> word1;
cin >> word2;
if(word1 == word2)
{
cout << "两个字符串相等" << endl;
}else if (word1 > word2)
{
cout << "word1大于word2" << endl;
}
else
{
cout << "word2大于word1" << endl;
}
getchar(); */
// 判断那个字符串长度较大
string word1, word2;
cin >> word1 >> word2;
if (word1.size() == word2.size()){
cout << " word1与word2相等 " << endl;
} else if (word1.size() > word2.size()){
cout << " word1长度大于word2 " << endl;
} else {
cout << " word2长度大于word1 " << endl;
}
getchar();
}
// 测试它们是否相等,若不相等,则指出两个中那个较大,
// 接着,改写程序测试他们的长度是否相等,若不相等指出哪个较长
#include " stdafx.h "
#include < string >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
// 判断那个字符串较大
/* string word1;
string word2;
cin >> word1;
cin >> word2;
if(word1 == word2)
{
cout << "两个字符串相等" << endl;
}else if (word1 > word2)
{
cout << "word1大于word2" << endl;
}
else
{
cout << "word2大于word1" << endl;
}
getchar(); */
// 判断那个字符串长度较大
string word1, word2;
cin >> word1 >> word2;
if (word1.size() == word2.size()){
cout << " word1与word2相等 " << endl;
} else if (word1.size() > word2.size()){
cout << " word1长度大于word2 " << endl;
} else {
cout << " word2长度大于word1 " << endl;
}
getchar();
}
习题3_8编写一个程序,从标准输入读取多个string对象,把它们链接起来存放到一个更大
的string对象中.并输出链接后的string对象.接着,改写程序,将链接后相邻string对象以空格隔开
//
习题3_8编写一个程序,从标准输入读取多个string对象,把它们链接起来存放到一个更大
// 的string对象中.并输出链接后的string对象.接着,改写程序,将链接后相邻string对象以空格隔开
//
#include " stdafx.h "
#include < string >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
string s4;
s4 = s1 + " , " + s2 + " , " + s3;
cout << s4 << endl;
for ( string ::size_type ix = 0 ; ix != s4.size(); ++ ix)
{
if (ispunct(s4[ix]))
{
s4[ix] = ' ' ;
}
}
cout << s4;
getchar();
}
// 的string对象中.并输出链接后的string对象.接着,改写程序,将链接后相邻string对象以空格隔开
//
#include " stdafx.h "
#include < string >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
string s4;
s4 = s1 + " , " + s2 + " , " + s3;
cout << s4 << endl;
for ( string ::size_type ix = 0 ; ix != s4.size(); ++ ix)
{
if (ispunct(s4[ix]))
{
s4[ix] = ' ' ;
}
}
cout << s4;
getchar();
}
习题3.13 读取一组整数vector对象,计算并输出每对相邻元素的和.
如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其元素
然后修改程序,头尾元素两两配对,计算每对元素的和,并输出
//
习题3.13 读取一组整数vector对象,计算并输出每对相邻元素的和.
// 如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其元素
// 然后修改程序,头尾元素两两配对,计算每对元素的和,并输出
//
#include " stdafx.h "
#include < vector >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
vector < int > vec;
vec.push_back( 1 );
vec.push_back( 2 );
vec.push_back( 3 );
vec.push_back( 4 );
vec.push_back( 5 );
if (vec.size() % 2 != 0 ){
cout << " 最后一个元素没有求和 " << vec[vec.size() - 1 ] << endl;
}
for (size_t ix = 0 ; ix != vec.size() - 1 ; ix += 2 ){
cout << (vec[ix] + vec[ix + 1 ]) << endl;
}
for (size_t ix = 0 , iy = vec.size() - 1 ; ix != iy; ++ ix, -- iy){
cout << (vec[ix] + vec[iy]) << endl;
}
getchar();
}
// 如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其元素
// 然后修改程序,头尾元素两两配对,计算每对元素的和,并输出
//
#include " stdafx.h "
#include < vector >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
vector < int > vec;
vec.push_back( 1 );
vec.push_back( 2 );
vec.push_back( 3 );
vec.push_back( 4 );
vec.push_back( 5 );
if (vec.size() % 2 != 0 ){
cout << " 最后一个元素没有求和 " << vec[vec.size() - 1 ] << endl;
}
for (size_t ix = 0 ; ix != vec.size() - 1 ; ix += 2 ){
cout << (vec[ix] + vec[ix + 1 ]) << endl;
}
for (size_t ix = 0 , iy = vec.size() - 1 ; ix != iy; ++ ix, -- iy){
cout << (vec[ix] + vec[iy]) << endl;
}
getchar();
}
习题3.14 读入一段文本到vector对象,每个单词存储为vector中的一个元素.
把vector对象中每个单词转化为大写字母.输出vector对象中转化后的元素,
每八个单词为一行输出.
//
习题3.14 读入一段文本到vector对象,每个单词存储为vector中的一个元素.
// 把vector对象中每个单词转化为大写字母.输出vector对象中转化后的元素,
// 每八个单词为一行输出.
//
#include " stdafx.h "
#include < vector >
#include < iostream >
#include < string >
#include < cctype >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string line;
vector < string > vec;
while (cin >> line){
for ( string ::size_type ix = 0 ; ix != line.size(); ++ ix){
line[ix] = toupper(line[ix]);
}
vec.push_back(line);
}
for (size_t ix = 0 ; ix != vec.size(); ++ ix){
if (ix % 8 == 0 ) cout << " \n " ;
cout << vec[ix] << ' ' ;
}
getchar();
}
// 把vector对象中每个单词转化为大写字母.输出vector对象中转化后的元素,
// 每八个单词为一行输出.
//
#include " stdafx.h "
#include < vector >
#include < iostream >
#include < string >
#include < cctype >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string line;
vector < string > vec;
while (cin >> line){
for ( string ::size_type ix = 0 ; ix != line.size(); ++ ix){
line[ix] = toupper(line[ix]);
}
vec.push_back(line);
}
for (size_t ix = 0 ; ix != vec.size(); ++ ix){
if (ix % 8 == 0 ) cout << " \n " ;
cout << vec[ix] << ' ' ;
}
getchar();
}
//
习题3.18 编写程序来创建有10个元素的VECTOR对象,用迭代器把每个元素值改为当前值2倍
//
#include " stdafx.h "
#include < iostream >
#include < vector >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
vector < int > vec;
for ( int i = 1 ; i <= 10 ; ++ i){
vec.push_back(i);
}
vector < int > ::iterator it = vec.begin();
for (; it != vec.end(); ++ it){
cout << ( * it) * 2 << endl;
}
getchar();
}
//
#include " stdafx.h "
#include < iostream >
#include < vector >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
vector < int > vec;
for ( int i = 1 ; i <= 10 ; ++ i){
vec.push_back(i);
}
vector < int > ::iterator it = vec.begin();
for (; it != vec.end(); ++ it){
cout << ( * it) * 2 << endl;
}
getchar();
}
//
习题3.24考虑这样的序列1,2,3,5,8,13,21并初始化一个将该序列数字所对应
// 的位置置为1的bitset<32>对象.然后换个方法,给定一个空的bitset对象,编写
// 一小段程序把相应的数位设置为1
//
#include " stdafx.h "
#include < bitset >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string str( " 100000001000010010111 " );
bitset < 32 > bitstr(str);
cout << bitstr << endl;
bitset < 32 > bit;
bit[ 0 ] = 1 ;
bit[ 1 ] = 1 ;
bit[ 2 ] = 1 ;
bit[ 4 ] = 1 ;
bit[ 7 ] = 1 ;
bit[ 12 ] = 1 ;
bit[ 20 ] = 1 ;
cout << bit << endl;
getchar();
}
// 的位置置为1的bitset<32>对象.然后换个方法,给定一个空的bitset对象,编写
// 一小段程序把相应的数位设置为1
//
#include " stdafx.h "
#include < bitset >
#include < iostream >
using namespace std;
int _tmain( int argc, _TCHAR * argv[])
{
string str( " 100000001000010010111 " );
bitset < 32 > bitstr(str);
cout << bitstr << endl;
bitset < 32 > bit;
bit[ 0 ] = 1 ;
bit[ 1 ] = 1 ;
bit[ 2 ] = 1 ;
bit[ 4 ] = 1 ;
bit[ 7 ] = 1 ;
bit[ 12 ] = 1 ;
bit[ 20 ] = 1 ;
cout << bit << endl;
getchar();
}
返回索引