您的位置:首页 > 编程语言 > C语言/C++

学习C++ -> 选择结构程序设计

2012-11-12 16:03 381 查看
[b]学习C++ -> 选择结构程序设计[/b]
=======================

[b]一、 语句[/b]
语句是程序的基本组成单位, 每条语句都以分号(;)结尾表示该语句的结束。

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++ -> 变量、常量与运算符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: