设为首页 加入收藏

TOP

1.4.4 if语句
2013-10-07 16:25:51 来源: 作者: 【 】 浏览:111
Tags:1.4.4 语句

1.4.4  if语句

与大多数语言一样,C++(www.cppentry.com)也提供了if语句来支持条件执行。我们可以用if语句写一个程序,来统计在输入中每个值连续出现了多少次:

  1. #include <iostream> 
  2. int main()  
  3. {  
  4. // currVal是我们正在统计的数;我们将读入的新值存入val  
  5. int currVal = 0val = 0;  
  6. // 读取第一个数,并确保确实有数据可以处理  
  7. if (std::cin >> currVal) {  
  8.    int cnt = 1;                 // 保存我们正在处理的当前值的个数  
  9.         while (std::cin >> val) {   // 读取剩余的数  
  10. if (val == currVal)     // 如果值相同  
  11.              ++cnt;             // 将cnt加1  
  12.         else {                  // 否则,打印前一个值的个数  
  13.         std::cout << currVal << " occurs "  
  14.               << cnt << " times" << std::endl;  
  15.         currVal = val;  // 记住新值  
  16.         cnt = 1;        // 重置计数器  
  17. }  
  18. } // while循环在这里结束  
  19. // 记住打印文件中最后一个值的个数  
  20.        std::cout << currVal << " occurs "  
  21.      << cnt << " times" << std::endl;  
  22. } // 最外层的if语句在这里结束  
  23. return 0;  

如果我们输入如下内容:
 

  1. 42 42 42 42 42 55 55 62 100 100 100 

则输出应该是:

  1. 42 occurs 5 times  
  2. 55 occurs 2 times  
  3. 62 occurs 1 times  
  4. 100 occurs 3 times 

有了之前多个程序的基础,你对这个程序中的大部分代码应该比较熟悉了。程序以两个变量val和currVal的定义开始:currVal记录我们正在统计出现次数的那个数;val则保存从输入读取的每个数。与之前的程序相比,新的内容就是两个if语句。第一条if语句

  1. if (std::cin >> currVal) {  
  2.     // ...  
  3. } //最外层的if语句在这里结束 

保证输入不为空。与while语句类似,if也对一个条件进行求值。第一条if语句的条件是读取一个数值存入currVal中。如果读取成功,则条件为真,我们继续执行条件之后的语句块。该语句块以左花括号开始,以return语句之前的右花括号结束。

如果需要统计出现次数的值,我们就定义cnt,用来统计每个数值连续出现的次数。与上一小节的程序类似,我们用一个while循环反复从标准输入读取整数。

while的循环体是一个语句块,它包含了第二条if语句:
 

  1. if (val == currVal)             // 如果值相同  
  2.     ++cnt;                  // 将cnt加1  
  3. else {                      // 否则,打印前一个值的个数  
  4.     std::cout << currVal << " occurs "  
  5.                << cnt << " times" << std::endl;  
  6.     currVal = val;          // 记住新值  
  7.     cnt = 1;                // 重置计数器  

这条if语句中的条件使用了相等运算符(==)来检测val是否等于currVal。如果是,我们执行紧跟在条件之后的语句。这条语句将cnt增加1,表明我们再次看到了currVal。

如果条件为假,即val不等于currVal,则执行else之后的语句。这条语句是一个由一条输出语句和两条赋值语句组成的语句块。输出语句打印我们刚刚统计完的值的出现次数。赋值语句将cnt重置为1,将currVal重置为刚刚读入的值val。

C++(www.cppentry.com)用=进行赋值,用==作为相等运算符。两个运算符都可以出现在条件中。一个常见的错误是想在条件中使用==(相等判断),却误用了=。

1.4.4节练习

练习1.17:如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?

练习1.18:编译并运行本节的程序,给它输入全都相等的值。再次运行程序,输入没有重复的值。

练习1.19:修改你为1.4.1节练习1.10(第13页)所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小的情况。

关键概念:C++(www.cppentry.com)程序的缩进和格式

C++(www.cppentry.com)程序很大程度上是格式自由的,也就是说,我们在哪里放置花括号、缩进、注释以及换行符通常不会影响程序的语义。例如,花括号表示main函数体的开始,它可以放在main的同一行中;也可以像我们所做的那样,放在下一行的起始位置;还可以放在我们喜欢的其他任何位置。唯一的要求是左花括号必须是main的形参列表后第一个非空、非注释的字符。

虽然很大程度上可以按照自己的意愿自由地设定程序的格式,但我们所做的选择会影响程序的可读性。例如,我们可以将整个main函数写在很长的单行内,虽然这样是合乎语法的,但会非常难读。

关于C/C++(www.cppentry.com)的正确格式的辩论是无休止的。我们的信条是,不存在唯一正确的风格,但保持一致性是非常重要的。例如,大多数程序员都对程序的组成部分设置恰当的缩进,就像我们在之前的例子中对main函数中的语句和循环体所做的那样。对于作为函数界定符的花括号,我们习惯将其放在单独一行中。我们还习惯对复合IO表达式设置缩进,以使输入输出运算符排列整齐。其他一些缩进约定也都会令越来越复杂的程序更加清晰易读。

我们要牢记一件重要的事情:其他可能的程序格式总是存在的。当你要选择一种格式风格时,思考一下它会对程序的可读性和易理解性有什么影响,而一旦选择了一种风格,就要坚持使用。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.3 读取数量不定的输入数据 下一篇1.5.2 初识成员函数

评论

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

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)