学习C++ -> 选择结构程序设计
2012-11-12 16:03 wid 阅读(3961) 评论(6) 编辑 收藏 举报学习C++ -> 选择结构程序设计
=======================
一、 语句
语句是程序的基本组成单位, 每条语句都以分号(;)结尾表示该语句的结束。
1. 表达式语句
运算符、 常量、等可以组成表达式, 而表达式后加分号就构成了表达式语句。
例如: i = 10 是赋值表达式, 而 i = 10 ; 加上分号就构成了表达式语句。
2. 复合语句
用一对大括号括起来的一条或多条语句, 称为复合语句。
例如: { i = 10; n = 20; m = 30; } 是复合语句, 它只是算是一条语句, 而不是三条。
注意: 大括号后面无需分号。
3. 空语句
仅由一个分号构成的语句称为空语句, 空语句什么都不执行, 当某处需要一条语句而又可以什么也不做时使用空语句。
4. 赋值语句
赋值语句由表达式后跟分号组成。
例如:
i = 10 ; a = b + c ;
赋值语句首先会计算等号(=)右边的表达式的值, 然后将其赋值给左边的内存单元。
说明: 赋值语句中, "="左边是以变量名标示的内存存储单元, 程序在编译时会为变量分配存储单元, 也就是说, 变量名代表着内存单元。
5. 流程控制语句
1>. if语句
if语句的一般使用形式:
if(表达式) 语句块
功能: 当if后面括号中表达式的值为真时执行语句块中的语句, 否则跳过语句块(复合语句)执行语句块的下一跳语句。
使用举例:
if( 10 > 5 ) { cout<<"Yes." ; }
编译运行后输出Yes., 说明if下面的语句块被执行了, 因为10大于5是成立的, 为真, 所以语句块将会被执行。
上面也讲到, 所谓的语句块就是一条复合语句, 当仅有一个语句时你可以不使用大括号将一个语句括起来。
2>. if-else语句
仅有一个if语句只能告诉程序当表达式成立时做什么, 而不能告诉程序当表达式不成立时我们应该做什么, if-else正是用来解决该问题的。
使用形式:
if(表达式) 当表达式成立时执行的语句块 else 当表达式不成立时执行的语句块
功能: 首先计算表达式式的值, 当表达式的值为真时执行if后面的语句块, 当表达式的值为假(不成立)时执行else后面的语句块。
使用举例:
if( 10 < 5 ) cout<<"Yes." ; else cout<<"No." ;
程序输出No., 因为10 < 5是不成立的, 所以需要执行else后面的语句。
3>. 嵌套的if语句
嵌套的if语句常用来处理有多种情况时, 嵌套一般有三种形式:
形式一:
if(表达式1) { if(表达式2) 语句块1 } else 语句块2
注意, 这里使用了大括号将第二个if语句括起来了, 否则第二个if就会跟下面的if结合, 每个if与和他最近的else结合。
形式二:
if(表达式1) if(表达式2) 语句块1 else 语句块2 else 语句块3
在这个嵌套中, 当表达式1成立时将执行表达式2的if语句, 否则执行表达式1的else语句。
形式三:
if(表达式1) 语句块1 else if(表达式2) 语句块2 else 语句块3
C++没有对if语句嵌套层数的限制, 这也就是说你可以嵌套任意层if-else语句, 但从程序代码的可读性以及健壮性来说, if-else嵌套请不要嵌套超过5层。
4>. switch语句
switch语句用于实现多分枝结构的程序, 举个简单的例子, 我们在程序上提供了10个序号用来表示菜单, 当用户按下1时就代表选择了功能1, 当按下0-9之外的序号时, 我们提示他选择错误, 没有这个选项后, 10个选项用if结构显然很费力, 这时用switch语句是个很好的选择。
switch语句的一般形式:
switch(表达式) { case 常量表达式1: 语句块1 case 常量表达式2: 语句块2 case 常量表达式3: 语句块3 ... case 常量表达式n: 语句块n default:语句n+1 }
功能: 首先在switch处计算表达式的值, 然后依次与下面的case后面的常量表达式比较, 当表达式的值与常量表达式的值相等, 那么就从这个case处作为语句的入口, 将下面的case以及case后面的语句全部执行, 若表达式的值与常量表达式的值没有一个相同的则执行default后面的语句块。
说明:
①. switch的表达式只能为int或char型数据, 当为char型数据时会将字符转化为相应的ASCII码值, 对于字符串、浮点型等不能作为switch的表达式;
②. 常量表表达式中不能出现变量, 只能是有确定值得常量;
③. case后面的语句块可以是一条或多条语句, 且无需用大括号{}括起来, 因为他会自动从符合结果的case处自动向下执行;
④. default语句是可选的, 并且对出现的位置没有要求, 可以在case之前, 也可以在case之间, 或者最后。
case语句允许嵌套, 一般的嵌套形式为:
switch(表达式1) { case 常量表达式1: switch(表达式2) { case 常量表达式2: 语句块 case 常量表达式3: 语句块 ... } case 常量表达式4:语句块 ... }
switch语句的嵌套同样没有层数限制。
switch语句使用举例:
#include<iostream> using namespace std ; int main() { int n ; cin >> n ; switch(n) { case 0: cout<<"press 0." ; break ; case 1: cout<<"press 1." ; break ; case 2: cout<<"press 2." ; break ; case 3: cout<<"press 3." ; break ; default: cout<<"error!" ; } return 0 ; }
break语句是用来停止switch继续执行下面的语句的, 当执行到break时下面的语句就不会再被执行而是跳出switch结构, 对于break;语句的详细用法到学习循环结构程序设计时再具体讲解。
5>. gtot语句
goto语句成为无条件跳转语句, 在同一个函数内, 它可以从一个位置跳到任意一个位置.
goto语句的一般使用形式:
goto 语句标识 ; ... ... ... 语句标识 : 语句
功能: 使用goto语句后它将会将下一条需要执行的代码转到语句标识所在的位置。
说明: goto语句与相应的标识符必须在同一个函数中, 不允许跨函数使用。对于goto的使用一直以后就有很大的争议, 有人说, goto的使用会破坏程序的结构, 从而使程序代码变得难以理解且当出错时不容易查找错误, 这些人认为应该彻底取消goto语句, 还有一部分人认为goto使用灵活, 恰当使用可以提高程序的灵活性, 对于是否使用goto语句还请读者自己权衡, 如果能够恰当使用goto那就更好了, 不过笔者建议在不是必要使用goto时最好不要使用。
二、基本输入输出
在C++中常用的标准输入输出函数有cin(用于输入)和cout(用于输出), 这两个函数位于头文件iostream的std命名空间中, 所以要使用这两个函数首先我们要
#include<iostream>
将这个头文件包含进来, 然后使用命名空间机制
using namespace std ;
这个就可以自由使用cin和cout进行输入输出了, 当然, 你也可以不使用using namespace std ;这句, 如果不使用这句在调用cin和cout函数前你需要像这样使用:
std::cin>>变量名 ;
std::cout<<变量名 ;
注意: 不要将输入符号(>>)和输出(<<)弄混了, 输入是尖括号指向它, 输出尖括号的方向与其相反。
例如我们现在要输入一个整形变量并将其输出:
#include<iostream> using namespace std ; int main() { int n ; //定义一个变量名为n的整形变量 cin >> n ; //输入数字n, 输入后按回车键 cout<<n ; //输出n return 0 ; }
输入一个字符并将其输出:
#include<iostream> using namespace std ; int main() { char c ; //定义一个变量名为n的字符型变量 cin >> c ; //输入c cout << c ; //输出c return 0 ; }
cin和cout一次还可以输入输出多个数据:
例如:
#include<iostream> using namespace std ; int main() { int a, b, c ; //定义三个整型变量 cout<<"Please input three number:" ; //提示输入三个数 cin >> a>> b >> c ; //输入a, b, c cout <<"You input: " << a <<"," << b << "," << c; //输出c, 逗号隔开 return 0 ; }
对于较为复杂的数据输入输出等使用到时再讲。
--------------------
wid, 2012.11.12
上一篇: 学习C++ -> 变量、常量与运算符