C++ primer 第一章的两个 if 语句例题
2017-02-18 12:40
246 查看
与大多数语言一样,C++也提供了 if 语句 来支持条件执行。我们可以用 if 语句写一个程序,来统计在输入中每个值连续出现了多少次:
#include <iostream>
int main()
{
//currVal 是我们正在统计的数;我们将读入的新值存入val
int val = 0, curral = 0;
//读取第一个数,并确保确实有数据可以处理
if (std::cin >> curral){
int cnt = 1; //保存我们正在处理的当前值的个数
while(std::cin>>val){ //读取剩余的数
if (val == curral) //如果值相同
++cnt; //将cnt加一
else { //否则打印前一个值的个数
std::cout<< curral << " occurs " << cnt << " times "<< std::endl;
curral = val; //记住新值
cnt = 1; //重置计数器
}
}//while 循环在这里结束
//记住打印文件中最后一个值的个数
std::cout<< curral<<" occurs "<< cnt <<" times "<<std::endl;
}//最外层的if语句在这里结束
return 0;
}
如果我们输入如下内容:
42 42 42 42 42 55 55 62 100 100 100
则输出应该是:
42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times
程序以两个变量 val 和 currVal 的定义开始: currVal 记录我们正在统计出现次数的那个数;val 则保存从输入读取的每个数。与之前的程序相比,新的内容就是两个 if 语句。第一条 if 语句保证输入不为空。
if (std::cin >> currVal){
//...
}//最外层的if语句在这里结束
与 while 语句类似, if 也对一个条件进行求值。第一条 if语句的条件是读取一个数值存入 currVal 中。如果读取成功,则条件为真,我们继续执行条件之后的语句块。该语句块以左花括号开始,以return语句之前的右花括号结束。
如果需要统计出现次数的值,我们就定义cnt,用来统计每个数值连续出现的次数。与上一小节的程序类似,我们用一个while 循环反复从标准输入读取整数。
while 的循环体是一个语句块,它包含了第二条if语句:
if (val == curral) //如果值相同
++cnt; //将cnt加一
else { //否则打印前一个值的个数
std::cout<< curral << " occurs " << cnt << " times "<< std::endl;
curral = val; //记住新值
cnt = 1; //重置计数器
这条 if 语句中的条件使用了 相等运算符(==)来检测 val 是否等于currVal 。如果是,我们执行紧跟在条件之后的语句。这条语句将 cnt 增加一,表明我们再次看到了currVal 。
如果条件为假, 即 val 不等于currVal , 则执行else 之后的语句。这条语句是一个由一条输出语句和两条赋值语句组成的语句块。输出语句打印我们刚刚统计完得值的出现次数。赋值语句将cnt 重置为1,将 currVal 重置为刚刚读入的 val 。
warning:C++用=进行赋值,用==作为相等运算符。两个运算符都可以出现在条件中。一个常见的错误是想在条件中使用 ==(相等判断),却误用了=。
#include <iostream>
int main()
{
//currVal 是我们正在统计的数;我们将读入的新值存入val
int val = 0, curral = 0;
//读取第一个数,并确保确实有数据可以处理
if (std::cin >> curral){
int cnt = 1; //保存我们正在处理的当前值的个数
while(std::cin>>val){ //读取剩余的数
if (val == curral) //如果值相同
++cnt; //将cnt加一
else { //否则打印前一个值的个数
std::cout<< curral << " occurs " << cnt << " times "<< std::endl;
curral = val; //记住新值
cnt = 1; //重置计数器
}
}//while 循环在这里结束
//记住打印文件中最后一个值的个数
std::cout<< curral<<" occurs "<< cnt <<" times "<<std::endl;
}//最外层的if语句在这里结束
return 0;
}
如果我们输入如下内容:
42 42 42 42 42 55 55 62 100 100 100
则输出应该是:
42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times
程序以两个变量 val 和 currVal 的定义开始: currVal 记录我们正在统计出现次数的那个数;val 则保存从输入读取的每个数。与之前的程序相比,新的内容就是两个 if 语句。第一条 if 语句保证输入不为空。
if (std::cin >> currVal){
//...
}//最外层的if语句在这里结束
与 while 语句类似, if 也对一个条件进行求值。第一条 if语句的条件是读取一个数值存入 currVal 中。如果读取成功,则条件为真,我们继续执行条件之后的语句块。该语句块以左花括号开始,以return语句之前的右花括号结束。
如果需要统计出现次数的值,我们就定义cnt,用来统计每个数值连续出现的次数。与上一小节的程序类似,我们用一个while 循环反复从标准输入读取整数。
while 的循环体是一个语句块,它包含了第二条if语句:
if (val == curral) //如果值相同
++cnt; //将cnt加一
else { //否则打印前一个值的个数
std::cout<< curral << " occurs " << cnt << " times "<< std::endl;
curral = val; //记住新值
cnt = 1; //重置计数器
这条 if 语句中的条件使用了 相等运算符(==)来检测 val 是否等于currVal 。如果是,我们执行紧跟在条件之后的语句。这条语句将 cnt 增加一,表明我们再次看到了currVal 。
如果条件为假, 即 val 不等于currVal , 则执行else 之后的语句。这条语句是一个由一条输出语句和两条赋值语句组成的语句块。输出语句打印我们刚刚统计完得值的出现次数。赋值语句将cnt 重置为1,将 currVal 重置为刚刚读入的 val 。
warning:C++用=进行赋值,用==作为相等运算符。两个运算符都可以出现在条件中。一个常见的错误是想在条件中使用 ==(相等判断),却误用了=。
相关文章推荐
- C++ Primer 第一章 if 语句应用输入两个数,打印出这两个数之间的整数
- 例题:输入您的出生日期,判断你的星座,主要练习使用datetime类及if else语句。很实用
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- C primer plus 第七章 练习4: 利用if else语句编写程序读取输入,直到#, 用一个感叹号代替每个句号,将原有的每个感叹号用两个感叹号代替,最后报告进行了多少次替代。
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 选出两个数中较大者,不用if, ? : ,switch等判断语句.
- 两个变量a,b,不用“if”,“? :”,switch或者其它判断语句,找出两个数中间比较大的
- 有两个变量a 和 b,不用if、?: 、switch 或者其他判断语句,找出两个数中比较大的那个
- 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句
- 不用if else 等判断语句判断两个数值的大小
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 有两个变量a 和 b,不用if、?: 、switch 或者其他判断语句,找出两个数中比较大的那个
- 对面if语句与框架的两个误区
- 不使用if、?:、switch及其他判断语句如何找出两个int型变量中的最大值和最小值
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- C++ Primer 学习笔记10 语句 (空语句、if语句、switch语句、for语句、dowhile语句、break语句、goto语句、continue语句、try块和异常处理)
- 第一章 基本语法-3判断语句(if)
- 第一章 基本语法-4判断语句(if)练习平年闰年