算法练习——奇偶统计

1.题目描述

给出若干个数字,最后一个数字是0,需要统计这些数字中偶数和奇数的个数。

(这里的0仅仅作为数字序列的结束标志,不统计0作为偶数的情况)

2.输入输出格式

  • 输入

一行数字,最后一个数字是0。

  • 输出

第一行输出偶数个数,第二行输出奇数个数。

例如:

//输入 
20 9 7 11 0

//输出
1
3 

3.解题思路

利用 while 循环中嵌套 cin 输入来读取数字序列,然后使用 if 来判断是否读取结束。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n, oushu = 0, jishu = 0;
	while (cin >> n) {
		if (n != 0) {
			//判断是奇是偶
			if (n % 2 == 0) {
				oushu += 1;
			}
			else { jishu += 1; }
		}
		else { break; }
	}
	cout << "偶数有" << oushu << "个" << endl << "奇数有" << jishu << "个";
	return 0;
}

4.运行结果

5.细节问题

如果在使用 if 判断时,没有使用 else 处理其它条件而是直接 break 跳出的话,执行完 if 部分后就会直接执行 break ,这样的话最终的运行结果就是只进入 while 中一次的结果。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n, oushu = 0, jishu = 0;
	while (cin >> n) {
		if (n != 0) {
			//判断是奇是偶
			if (n % 2 == 0) {
				oushu += 1;
			}
			else { jishu += 1; }
		}
		break; 
	}
	cout << "偶数有" << oushu << "个" << endl << "奇数有" << jishu << "个";
	return 0;
}

运行结果:                

但是如果在 if 中加入 continue ,就能够继续执行 while 循环,而不是只执行一次。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n, oushu = 0, jishu = 0;
	while (cin >> n) {
		if (n != 0) {
			//判断是奇是偶
			if (n % 2 == 0) {
				oushu += 1;
			}
			else { jishu += 1; }
			continue;
		}
		break; 
	}
	cout << "偶数有" << oushu << "个" << endl << "奇数有" << jishu << "个";
	return 0;
}

运行结果:

重点:

continue的作用在于只是结束当前循环,然后执行下一次循环;

而break是结束整个循环,跳出循环体。 

6.题目升级

在之前题目的基础上,去掉0作为结束标志的条件,思考如何使输入结束。

这时候需要输入 ctrl + z 再按下回车来结束数据输入。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n, oushu = 0, jishu = 0;
	while (cin >> n) {
		//判断是奇是偶
		if (n % 2 == 0) {
			oushu += 1;
		}
		else { jishu += 1; }
	}
	cout << "偶数有" << oushu << "个" << endl << "奇数有" << jishu << "个";
	return 0;
}

运行结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItsWendy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值