### 6.1.4 输入序列处理
“小朋友们,现在我们来挑战一些更有趣的问题:处理一系列的输入数据!”
🔬 **实验13:奇偶数统计与求和**
“`
描述:
小华想要统计一组数中奇数和偶数的情况。你能帮他写一个程序来完成这个任务吗?
输入:
第一行输入一个正整数n,表示要输入的数的个数
接下来n行,每行一个整数
输出:
奇数和偶数的个数及它们的和
样例输入:
5
1
2
3
4
5
样例输出:
奇数有3个,和是9
偶数有2个,和是6
解题思路:
1. 用四个变量分别记录:
– 奇数个数
– 偶数个数
– 奇数之和
– 偶数之和
2. 循环读入n个数
3. 判断每个数的奇偶性并更新相应的计数和求和
“`
“`cpp
#include
using namespace std;
int main() {
int n;
cout << "请输入要处理的数字个数:";
cin >> n;
int i = 0;
int odd_count = 0, even_count = 0; // 奇偶数计数
int odd_sum = 0, even_sum = 0; // 奇偶数求和
while(i < n) { int num; cout << "请输入第" << i+1 << "个数:"; cin >> num;
if(num % 2 == 0) { // 偶数
even_count++;
even_sum += num;
} else { // 奇数
odd_count++;
odd_sum += num;
}
i++;
}
cout << "奇数有" << odd_count << "个,和是" << odd_sum << endl;
cout << "偶数有" << even_count << "个,和是" << even_sum << endl;
return 0;
}
```
🔬 **实验14:特殊倍数统计**
```
描述:
统计一组数中有多少个数是8的倍数但不是3的倍数。
输入:
第一行输入一个正整数n
接下来n行,每行一个整数
输出:
符合条件的数的个数
样例输入:
5
8
16
24
27
32
样例输出:
符合条件的数有:8 16 32
共3个数
解题思路:
1. 用计数器记录符合条件的数的个数
2. 循环读入n个数
3. 判断每个数是否:
- 能被8整除
- 不能被3整除
```
```cpp
#include
using namespace std;
int main() {
int n;
cout << "请输入要处理的数字个数:";
cin >> n;
int i = 0, count = 0;
cout << "符合条件的数有:";
while(i < n) {
int num;
cout << "请输入第" << i+1 << "个数:";
cin >> num;
if(num % 8 == 0 && num % 3 != 0) {
cout << num << " ";
count++;
}
i++;
}
cout << "\n共" << count << "个数" << endl;
return 0;
}
```
🔬 **实验15:数字查找**
```
描述:
在一组数中查找指定数字m出现的次数。
输入:
第一行输入两个正整数n和m,n表示要输入的数的个数,m表示要查找的数
接下来n行,每行一个整数
输出:
数字m出现的次数
样例输入:
6 3
1
3
3
2
3
4
样例输出:
数字3出现了3次
解题思路:
1. 用计数器记录找到m的次数
2. 循环读入n个数
3. 将每个输入的数与m比较
```
```cpp
#include
using namespace std;
int main() {
int n, m;
cout << "请输入要处理的数字个数和要查找的数:";
cin >> n >> m;
int i = 0, count = 0;
while(i < n) { int num; cout << "请输入第" << i+1 << "个数:"; cin >> num;
if(num == m) {
count++;
}
i++;
}
cout << "数字" << m << "出现了" << count << "次" << endl;
return 0;
}
```
🔬 **实验16:平均值计算**
```
描述:
计算一组数的平均值。
输入:
第一行输入一个正整数n
接下来n行,每行一个整数
输出:
这组数的平均值,保留两位小数
样例输入:
4
10
20
30
40
样例输出:
平均值是:25.00
解题思路:
1. 用sum记录总和
2. 循环读入n个数并累加
3. 最后用sum除以n得到平均值
```
```cpp
#include
#include
using namespace std;
int main() {
int n;
cout << "请输入要处理的数字个数:";
cin >> n;
int i = 0;
double sum = 0;
while(i < n) {
int num;
cout << "请输入第" << i+1 << "个数:";
cin >> num;
sum += num;
i++;
}
cout << fixed << setprecision(2); // 设置保留两位小数
cout << "平均值是:" << sum/n << endl;
return 0;
}
```
🔬 **实验17:完全平方数统计**
```
描述:
统计一组数中有多少个完全平方数。
(完全平方数是指能表示为某个整数的平方的数,如1,4,9,16等)
输入:
第一行输入一个正整数n
接下来n行,每行一个正整数
输出:
完全平方数的个数
样例输入:
5
4
7
9
10
16
样例输出:
完全平方数有:4 9 16
共3个数
解题思路:
1. 判断一个数x是否是完全平方数:
- 计算sqrt(x)
- 判断sqrt(x)的平方是否等于x
2. 循环读入n个数并判断
```
```cpp
#include
#include
using namespace std;
int main() {
int n;
cout << "请输入要处理的数字个数:";
cin >> n;
int i = 0, count = 0;
cout << "完全平方数有:";
while(i < n) {
int num;
cout << "请输入第" << i+1 << "个数:";
cin >> num;
int root = sqrt(num);
if(root * root == num) { // 判断是否为完全平方数
cout << num << " ";
count++;
}
i++;
}
cout << "\n共" << count << "个数" << endl;
return 0;
}
```
🔬 **实验18:立方数统计**
```
描述:
统计一组数中有多少个立方数。
(立方数是指能表示为某个整数的立方的数,如1,8,27等)
输入:
第一行输入一个正整数n
接下来n行,每行一个正整数
输出:
立方数的个数
样例输入:
5
8
10
27
30
64
样例输出:
立方数有:8 27 64
共3个数
解题思路:
1. 判断一个数x是否是立方数:
- 计算立方根cbrt(x)
- 判断cbrt(x)的立方是否等于x
2. 循环读入n个数并判断
```
```cpp
#include
#include
using namespace std;
int main() {
int n;
cout << "请输入要处理的数字个数:";
cin >> n;
int i = 0, count = 0;
cout << "立方数有:";
while(i < n) {
int num;
cout << "请输入第" << i+1 << "个数:";
cin >> num;
int root = round(cbrt(num)); // 四舍五入取整
if(root * root * root == num) { // 判断是否为立方数
cout << num << " ";
count++;
}
i++;
}
cout << "\n共" << count << "个数" << endl;
return 0;
}
```