Homework
Test 5.9
int main()
{
int cnt = 0;
char c;
while (cin >> c)
{
switch (c)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
++cnt;
break;
}
}
cout << "元音字母共有" << cnt << "个" << endl;
return 0;
}
Test 5.11
int main()
{
int cnt = 0;
int sign_tab = 0;
int sign_space = 0;
int sign_newline = 0;
char c;
while (cin >> std::noskipws >> c)
{
switch (c)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
++cnt;
break;
case '\n':
++sign_newline;
break;
case '\t':
++sign_tab;
break;
case ' ':
++sign_space;
break;
}
}
cout << "元音字母共有" << cnt << "个" << endl;
cout << "换行符共有" << sign_newline << "个" << endl;
cout << "制表符共有" << sign_tab << "个" << endl;
cout << "空格共有" << sign_space << "个" << endl;
return 0;
}
Test 5.12
int main()
{
int ff_cnt = 0, fl_cnt = 0, fi_cnt = 0;
char c;
char c_last = '\0';
while (cin >> c)
{
if (c_last == 'f')
{
switch (c)
{
case 'f':
++ff_cnt;
break;
case 'l':
++fl_cnt;
break;
case 'i':
++fi_cnt;
break;
}
}
c_last = c;
}
cout << "ff共有" << ff_cnt << "个" << endl;
cout << "fl共有" << fl_cnt << "个" << endl;
cout << "fi共有" << fi_cnt << "个" << endl;
return 0;
}
Test 5.14
int main()
{
int cnt = 1;
string str, str_last = " ";
while (cin >> str)
{
if (str == str_last)
{
++cnt;
}
else
{
if(cnt >1)
cout << str_last << "连续出现了" << cnt << "次" << endl;
cnt = 1;
}
str_last = str;
}
if (cnt > 1)
cout << str_last << "连续出现了" << cnt << "次" << endl;
return 0;
}
Test 5.17
int main()
{
vector<int> ivec1 = { 0, 1, 1, 2 };
vector<int> ivec2 = { 0,1,1,2,3,5,8 };
vector<int> svec, lvec;
if (ivec1.size() < ivec2.size())
{
svec = ivec1;
lvec = ivec2;
}
else
{
svec = ivec2;
lvec = ivec1;
}
decltype(svec.size()) i = 0;
while (i < svec.size())
{
if (svec[i] == lvec[i])
++i;
else
{
cout << "not a prefix" << endl;
break;
}
}
if (i == svec.size())
cout << "is a prefix" << endl;
return 0;
}
Test 5.19
int main()
{
do
{
cout << "请输入两个string:" << endl;
string str1, str2;
cin >> str1 >> str2;
if (str1.size() < str2.size())
cout << str1 << endl;
else if (str2.size() < str1.size())
cout << str2 << endl;
else
cout << "same" << endl;
} while (true);
return 0;
}
Test 5.20
int main()
{
string word, word_last;
while (cin >> word)
{
if (word == word_last)
break;
word_last = word;
}
return 0;
}
Test 5.21
int main()
{
string word, word_last;
while (cin >> word)
{
if (word == word_last)
{
if (isupper(word[0]))
break;
else
continue;
}
word_last = word;
}
return 0;
}
Test 5.25
int main()
{
int ival1, ival2;
while(cin >> ival1 >> ival2)
{
try
{
if (ival2 == 0)
throw runtime_error("the second value is 0");
else
{
cout << ival1 / ival2 << endl;
break;
}
}
catch (runtime_error err) {
cout << err.what() << endl;
cout << "try again? (y/n)" << endl;
char a;
cin >> a;
if (a == 'y')
continue;
else if(a == 'n')
break;
}
}
return 0;
}