设为首页 加入收藏

TOP

3.1.2 嵌套的if语句(1)
2013-10-07 16:06:17 来源: 作者: 【 】 浏览:63
Tags:3.1.2 语句

3.1.2  嵌套的if语句(1)

当if语句中的条件为真时,要执行的语句同样可以是if语句。这种结构称作嵌套的if语句。只有外部if语句的条件为true时,才测试内部if语句的条件。嵌套在一个if语句内部的if语句同样可以再包含另外一个嵌套的if语句。只要知道自己在做什么,通常可以无限制地嵌套if语句。

试一试:使用嵌套的if语句

下面的示例包含嵌套的if语句。

  1. // Ex3_01.cpp  
  2. // A nested if demonstration  
  3. #include <iostream> 
  4. using std::cin;  
  5. using std::cout;  
  6. using std::endl;  
  7. int main()  
  8. {  
  9. char letter(0);                             // Store input in here  
  10. cout << endl 
  11. << "Enter a letter: ";              // Prompt for the input  
  12. cin >> letter;                          // then read a character  
  13. if(letter >= 'A')                       // Test for 'A' or larger  
  14. {  
  15. if(letter <= 'Z')                   // Test for 'Z' or smaller  
  16. {  
  17. cout << endl 
  18. << "You entered a capital letter."  
  19. << endl;  
  20. return 0;  
  21. }  
  22. }  
  23. if(letter >= 'a')                       // Test for 'a' or larger  
  24. {  
  25. if(letter <= 'z')                   // Test for 'z' or smaller  
  26. {  
  27. cout << endl 
  28. << "You entered a small letter."  
  29. << endl;  
  30. return 0;  
  31. }  
  32. }  
  33. cout << endl << "You did not enter a letter." << endl;  
  34. return 0;  
  35. }  

示例说明

该程序开头照例是注释行,然后是#include语句,以嵌入支持输入/输出的头文件,再后面是属于std名称空间的cin、cout和endl的using声明。main()函数体中的第一个动作是提示用户输入某个字母,该字母存储在名为letter的char型变量中。

输入后面的if语句检查输入的字符是否大于等于'A'。小写字母的ASCII码(97~122)大于大写字母的ASCII码(65~90),所以输入小写字母也将使程序执行第一个if块,因为对任何字母而言,条件表达式(letter >='A')都将返回true。在这种情况下,程序将执行检查输入是否小于等于'Z'的嵌套if。如果该字母小于等于'Z',那么当然是个大写字母,因此将显示相应的消息。我们的任务至此已经完成,于是执行return语句来结束程序。这两条语句都被大括号包围,因此当嵌套的if条件返回true时都会执行。

下一条if语句检查输入的字符是否是小写字母,使用的机制与第一个if语句本质上相同,然后显示消息并返回。

如果输入的字符不是字母,则执行最后一个if块后面的输出语句。该语句显示一条消息,大意是输入的字符不是字母,然后执行return语句。

可以看出,嵌套if语句与输出语句之间的关系因使用了缩进而非常容易理解。

本示例的典型输出如下:

  1. Enter a letter: T  
  2. You entered a capital letter. 

只需要在检查输入是否为大写字母的if块后添加一条语句,就能将大写字母变为小写字母:
 

  1. if(letter >= 'A')                     // Test for 'A' or larger  
  2. if(letter <= 'Z')                 // Test for 'Z' or smaller  
  3. {  
  4. cout << endl 
  5. << "You entered a capital letter.";  
  6. << endl;  
  7. letter += 'a' - 'A';          // Convert to lowercase  
  8. return 0;  
  9. }  

上面的代码添加了一条语句。这条将大写字母转换为小写字母的语句使变量letter的值增加了,增加的量是'a'-'A'。这是正确的,因为A~Z与a~z的ASCII码是两组连续的数值,分别是65~90和97~122,所以表达式'a'-'A'就是为得到等价小写字母而需要在大写字母的代码值上增加的数值,即97-65=32。因此,如果在'K'的ASCII码值75上增加32,就得到'k'的ASCII码值107。

在这里,同样可以使用等价的ASCII码值来表示字母,但通过使用字母,我们能够确保所编写的代码在不使用ASCII字符集的计算机上也能工作,唯一前提是大写和小写字母都是用连续的数值序列表示的。

有一个将字母转换为大写字母的标准库函数,因此我们通常不必自己编写这种代码。该函数的名称为toupper(),位于标准头文件ctype中。当专门学习如何编写函数时,将介绍更多的标准库函数。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.1.1 if语句 下一篇3.1.2 嵌套的if语句(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)