习题3-2
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cout << "Please Input Your Name;" << endl;
getline(cin,s);
cout << s << endl;
return 0;
}
习题3-4
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
cin >> s1 >> s2;
if (s1==s2)
cout << "They Are The Same" << endl;
else
{
if (s1 > s2)
cout << s1 << endl;
else
cout << s2 << endl;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
cin >> s1 >> s2;
if (s1.size()==s2.size())
cout << "Their Length Are the same" << endl;
else
{
if (s1.size()>s2.size())
cout << s1 << endl;
else
cout << s2 << endl;
}
return 0;
}
习题3-5:string对象相加的练习
#include <iostream>
#include <string>
using namespace std;
int main()
{
string longStr,s;
while (getline(cin,s))
{
if (s=="q")
break;
longStr+=s;
longStr+=" ";
}
cout << longStr << endl;
return 0;
}
习题3-6:
传统做法
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
cout << "Please input a string" << endl;
string s ;
getline(cin,s);
for (int i = 0;i != s.size();++i)
{
if (isgraph(s[i]))
s[i]='X';
}
cout << s << endl;
return 0;
}
习题3-7:
范围循环
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
cout << "Please input a string" << endl;
string s ;
getline(cin,s);
for (char &c : s)
{
if (isgraph(c))
c ='X';
}
cout << s << endl;
return 0;
}
习题3-10:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
cout << "Please input a string with punctuation" << endl;
string s;
getline(cin,s);
for (auto c : s)
{
if (!ispunct(c))
cout << c;
}
cout << endl;
return 0;
}
习题3-11:
注意这里c的类型为const char&
习题3-12:
vector的初始化
一般来说:花括号是列表,圆括号是构造以此区分直接初始化或者列表初始化。
(a)正确;
(b)错误,拷贝初始化要确保类型相同;
©正确,svec为10个类型为“null”组成的vector。
习题3-13:
(a)v1是空vector
(b)v2有10个0[int];
©v3有10个42[int];
(d)v4仅有1个元素10[int];
(e)v5有两个元素10,42[int]
(f)v6有10个""[string],因为10并不是string类型,编译器默认将其看作vector v6(10);
(g)v7有10个“hi“[string];
习题3-14:
push_back的使用
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int i;
vector<int> veci;
while (cin >> i)
{
if (i==-100)
break;
veci.push_back(i);
}
cout << veci.size() << endl;
return 0;
}
习题3-15与上面差不多
习题3-17:
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using namespace std;
int main()
{
string word;
vector<string> words;
while (cin >> word)
{
if (word == "q")
break;
for (auto &c : word)
{
c=toupper(c);
}
words.push_back(word);
}
for (auto w : words)
cout << w << endl;
return 0;
}
习题3-20:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i;
vector<int> veci;
while(cin >> i)
{
if (i==-1000)
break;
veci.push_back(i);
}
for (int j = 1; j!=veci.size();++j)
cout << veci[j-1] + veci[j] << endl;
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i;
vector<int> veci;
while(cin >> i)
{
if (i==-1000)
break;
veci.push_back(i);
}
for (int j = 0; j!=veci.size()/2;++j)
cout << veci[j] + veci[veci.size()-1-j] << endl;
return 0;
}
习题3-23:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> veci(10,1);
for (auto iter = veci.begin(); iter!=veci.end();++iter)
*iter += *iter;
for (int i : veci)
cout << i << endl;
return 0;
}
习题3-24:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i;
vector<int> veci;
while(cin >> i)
{
if (i==-1000)
break;
veci.push_back(i);
}
for (auto iter = veci.begin(); iter != veci.end(); ++iter)
cout << *iter + *(iter+1) << endl;
return 0;
}
习题3-25:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<unsigned> scores(11,0);
unsigned grade;
auto iter = scores.begin();
while (cin >> grade)
{
if (grade == -1)
break;
if (grade <= 100)
{
int scope = grade/10;
(*(iter+grade/10))++;
}
}
for (auto i : scores)
cout << i << ' ' ;
return 0;
}
习题3-31:
#include <iostream>
using namespace std;
int main()
{
int num[10];
for (int i = 0; i < 10; ++i)
num[i] = i;
cout << *num << endl;
return 0;
}
习题3-32
#include <iostream>
using namespace std;
int main()
{
int num[10];
for (int i = 0; i < 10; ++i)
num[i] = i;
int numCopy[10];
for (int i = 0; i < 10; ++i)
numCopy[i] = num[i];
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> num;
for (int i =0; i < 10; ++i)
num.push_back(i);
vector<int> numCopy;
for (auto i : num)
{
numCopy.push_back(i);
cout << i << endl;
}
return 0;
}
习题3-35:
#include <iostream>
using namespace std;
int main()
{
cout <<"Now, Please add some numbers into a blank array" << endl;
int i;
int num[10]={};
int *b = num, *e = num +10;
while (b < e)
{
if (i== -1)
break;
cin >> *b;
++b;
}
for (int j = 0; j < 10; ++j)
cout << num[j] << ' ';
cout << endl;
b = num;
while (b < e)
{
*b=0;
cout << *b << ' ';
++b;
}
cout << endl;
return 0;
}
习题3-36:
#include <iostream>
using namespace std;
int main()
{
cout <<"Now, Please add some numbers into a blank array" << endl;
int i;
int num1[10]={}, num2[10]={};
int *b1 = num1, *e1 = end(num1);
int *b2 = num2, *e2 = end(num2);
auto n1 = e1 - b1, n2 = e2 -b2;
cout << "Now, the first array" << endl;
while (b1 < e1)
{
cin >> *b1;
++b1;
}
cout << "Now, The second array" << endl;
while (b2 < e2)
{
cin >> *b2;
++b2;
}
if (n1 != n2)
{
cout <<"The two arrays are not equal" << endl;
return 0;
}
b1 = num1; b2 = num2;
while (b1 < e1)
{
if ( *b1 != *b2)
{
cout << "The two arrays are not equal" << endl;
return 0;
}
++b1;++b2;
}
cout << "The two arrays are totally equal" << endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
cout <<"Now, Please add some numbers into a blank array" << endl;
vector<int> num1, num2;
cout <<"Now, The first one" << endl;
int i;
while ( cin >> i)
{
if (i == -1)
break;
num1.push_back(i);
}
cout << "Now, The second one" << endl;
while (cin >> i)
{
if (i == -1)
break;
num2.push_back(i);
}
auto n1 = num1.size(), n2 = num2.size();
if (n1 != n2)
{
cout <<"The two arrays are not equal" << endl;
return 0;
}
for (int j = 0; j != n1; ++j)
{
if (num1[j] != num2[j])
{
cout <<"The two arrays are not equal" << endl;
return 0;
}
}
cout << "They are completely equal" << endl;
return 0;
}