要点:
1、条件分支
2、循环
3、嵌套运用
一、条件分支
if语句:
if(条件)
do something;
[else [if(条件)
do something;]
do something;
]
拿一个实例来讲吧:
#include
#include
using namespace std;
int main()
{
int MagNum; //保存产生的随机数
MagNum=rand();
cout<<"请输入你的猜测数字:";
int GueNum;
cin>>GueNum; //你猜测的数字
if(GueNum==MagNum)
cout<<"You Are Right!\n"<else
cout<<"Sorry,You're wrong.\n";
return 0;
}
这只是一个简单的提示,如果我们想提示的更详细些呢?
我们可以在上面的代码上继续完善!
#include
#include
using namespace std;
int main()
{
int MagNum; //保存产生的随机数
MagNum=rand();
cout<<"请输入你的猜测数字:";
int GueNum;
cin>>GueNum; //你猜测的数字
if(GueNum==MagNum)
cout<<"You Are Right!\n"<else{
//这里进一步嵌套了一个IF条件语句
if(GueNum>MageNum)
cout<<"Sorry,Guessed number is high.\n";
else
cout<<"Sorry,Guessed number is low.\n";
}
return 0;
}
switch语句:
switch(表达式){
case 表达式:
do something;
//break;
case 表达式:
do something;
//break;
…………
default:
do something;
//break;
}
这里的break;是用来打破程序流程,跳出switch语句!
如果大家了解用WIN32 API来编程,就会发现太多的switch语句了,随便来找一个:
INT_PTR CALLBACK MainDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam){
switch(uMsg){
case WM_INITDIALOG://对对话框进行初始化设置
{
return TRUE;
}
case WM_DROPFILES: //对拖拽事件进行处理
{
return FALSE;
}
case WM_COMMAND: //对按钮事件的处理
switch(LOWORD(wParam)){
case IDCANCEL:
return TRUE;
case IDC_ABOUT:
return TRUE;
case IDC_BROWSER_SRC:
return TRUE;
case IDC_BROWSER_DEST:
return TRUE;
case IDC_RENAME:
return TRUE;
}
}
return FALSE;
}
总结:
通常来说,当控制选择的条件不依赖单一的数值时,应该使用if语句;
switch语句的表达式必须为整数型或者字符型。
二、循环
for循环
for(表达式1;表达式2;表达式3){
[循环体]
}
最简单的代码示例就是求和了:
#include
using namespace std;
int main()
{
int sum=0;//定义一个整形变量,并初始化为0,以保存和
int n=0; //保存奇数和
int m=0; //保存偶数和
for(int i=1;i<=100;i++){
if(i%2 ==0)
n+=i;
else
m+=i;
sum+=i;
}
cout<<"The Sum is "<cout<<"The n+m is:"< return 0;
}
下面再讲个双重循环的,来打印99乘法表:
#include
using namespace std;
int main()
{
for(int i=1;i<=9;i++){ //外循环,用于控制行数
for(int j=1;j<=i;j++) //内循环,用于控制列数
cout< cout<}
return 0;
}
上面的这个例子,大家还要注意一下两个变量的作用域:i和j的作用域,只局限于自身的循环体内。
i只在内循环与外循环里有效,出来了,则无效,如果引用,则会出现“未定义的”的错误提示!
j则只在内循环里有效。
while循环:
有两种形式:
while(条件){
[循环体]
} //注意这里没有分号
do{
[循环体]
}while(条件); //注意,这里需要添加上“;”
通常,针对这三个循环结构,一般:
1、在已知循环次数时,通常使用for循环
2、当需要至少执行一次遍历时,使用d0-while循环
3、当循环次数未知,通常使用while循环。
这里让我们来完善一下上面的那个猜数游戏吧:
#include
#include
#include
using namespace std;
int main()
{
int MagNum; //保存产生的随机数
cout<<"请输入你要猜测的最大值:";
int Max;
cin>>Max;
srand((unsigned)time(NULL));
MagNum=(((double) rand() / (double) RAND_MAX) * Max + 0);
cout<<"请输入你的猜测数字:";
int GueNum;
do{
cin>>GueNum; //你猜测的数字
if(GueNum==MagNum){
cout<<"OK,你猜中了,恭喜一下!\n"<"你是否还想继续?(按Y继续,按任意键退出):";
char ch;
cin.get(ch);
cin.get(ch);
if(ch=='Y'){
cout<<"你是否需要调整一下范围?(按Y调整,按任意键保持):";
cin.get(ch);
cin.get(ch);
if(ch=='Y'){
cout<<"请输入你要调整的范围:";
cin>>Max;
}
//cout<MagNum=rand()%Max;
cout<<"请输入你猜测的数字:";
continue;
}
else
break;
}
else{
if((GueNum-MagNum)>5) //当所猜数字比MagNUm大过5时,提示太大了
cout<<"Sorry,你输入的数字太大了.\n";
else if((MagNum-GueNum)>5) //当所猜数字比MagNUm小过5时,提示太大了
cout<<"Sorry,你输入的数字太小了.\n";
else if((GueNum-MagNum)>5)
cout<<"Sorry,你输入的数字还是有点大.\n";
else if((MagNum-GueNum)>5)
cout<<"Sorry,你输入的数字还是有点小.\n";
else
cout<<"快了,呵呵,要有耐心哦\n";
}
cout<<"请继续输入你猜测的数字:";
}while(1);
return 0;
}
[img][attach]197[/attach][/img]