标签:c++11 c++primer第五版 c++ switchif
本章讲解一些基本的语句,有C语言基础的会发现大致上差不多!当然也有一些细微的差别;
条件语句:
A:if语句
和C语言的易错点一样:将条件语句写成赋值语句的错误;编译器通过编译,对功能的实现造成很大影响,需要特别注意;
例子:if(max=1),本应该是if(max==1);这样的错误看似自己不会犯,经常由于各种原因总会出现的,不过当自己知道易错地方后,自己就会很容易修改!
B:switch语句
我们也很熟悉了,熟悉了应该如何懂得去灵活运用;如果下面的两个有关switch语句和break语句代码,能够很快的看出输出结果,则说明理解了,需要我们根据这种特性灵活运用!
输入:huananligongdxue
代码1:
#include <iostream>
using namespace std;
int main()
{
unsigned acnt=0,ecnt=0,icnt=0,ocnt=0,ucnt=0;
char ch;
cout<<"请输入字符,按Ctrl+z结束"<<endl;
while(cin>>ch)
{
switch(ch)
{
case ‘a‘:
++acnt ;
break;
case ‘e‘:
++ecnt;
break;
case ‘i‘:
++icnt;
break;
case ‘o‘:
++ocnt;
break;
case ‘u‘:
++ucnt;
break;
}
}
cout<<"Number of vowel a:\t"<<acnt<<‘\n‘<<"Number of vowel e:\t"<<ecnt<<‘\n‘<<"Number of vowel i:\t"<<icnt<<‘\n‘
<<"Number of vowel o:\t"<<ocnt<<‘\n‘<<"Number of vowel u:\t"<<ucnt<<endl;
return 0;
}
代码2:
#include <iostream>
using namespace std;
int main()
{
unsigned acnt=0,ecnt=0,icnt=0,ocnt=0,ucnt=0;
char ch;
cout<<"请输入字符,按Ctrl+z结束"<<endl;
while(cin>>ch)
{
switch(ch)
{
case ‘a‘:
++acnt ;
case ‘e‘:
++ecnt;
case ‘i‘:
++icnt;
case ‘o‘:
++ocnt;
case ‘u‘:
++ucnt;
}
}
cout<<"Number of vowel a:\t"<<acnt<<‘\n‘<<"Number of vowel e:\t"<<ecnt<<‘\n‘<<"Number of vowel i:\t"<<icnt<<‘\n‘
<<"Number of vowel o:\t"<<ocnt<<‘\n‘<<"Number of vowel u:\t"<<ucnt<<endl;
return 0;
}
我们很快得出结果,第一种明显是碰到输入的字符就会增加相对应字符数目后,就跳出循环;计算相对应字母的次数;代码2由于没有break跳出,就会执行继续下面的语句,从而结果肯定是递增序列;从上到下都叠加;
结果如下:
代码1结果:
代码2结果:
continue语句:中断当前的迭代,但是继续执行循环;
习题5.41和5.20一起讲解:
代码如下:
#include <iostream>
using namespace std;
int main()
{
string ch,sw,mch;
int max=1,b=1;
cout<<"输入测试单词:"<<endl;
while(cin>>ch)
{
if(sw==ch)
{
++b;
}
else
{
if(b>max)
{
max=b;
mch=sw;
}
else
b=1;
}
sw=ch;
}
if(max==1)
cout<<"单词没有连续出现\n"<<endl;
else
cout<<"单词"<<mch<<"连续的最大次数"<<max<<endl;
return 0;
}
结果:
上面是5.14的程序,5.20只是对其进行判断,b=2时,结束循环!上面虽然解决了5.14的问题,只是不足的是边界问题考虑的不是很周到,如果有几个相同的最长单词,也只能打印一个最长的!需要改进!!!!
程序运用的codeblocks可能有些编译器会存在兼容问题!
C++primer(第五版)第五章总结(含部分习题源代码及解析)语句
标签:c++11 c++primer第五版 c++ switchif
原文地址:http://blog.csdn.net/wangjin123456789/article/details/41490831