返回 课程

模板 信奥AC之路(第一级)

0% 完成
0/0 步骤
  1. 第一课 开发环境与基础输出
    4 主题|小节
  2. 第二课 算数运算符
    6 主题|小节
  3. 第三课 输入与运算
    3 主题|小节
  4. 第四课 数值操作
    4 主题|小节
  5. 第五课 表达式与运算符
    3 主题|小节
  6. 第六课 三目运算与双分支(缺导语+本课目标)
    2 主题|小节
  7. 第七课 多分支结构(缺导语+本课目标)
    1 主题|小节
  8. 第八课 多if语句
    1 主题|小节
  9. 第九课 三种分支结构的比较
    1 主题|小节
  10. 第十课 巩固学习分支结构
    1 主题|小节
  11. 第十一课 switch与复合语句
    3 主题|小节
  12. 第十二课 while循环
    2 主题|小节
  13. 第十三课 while循环的简单条件输出
    1 主题|小节
  14. 第十四课 while循环的输入序列处理
    1 主题|小节
  15. 第十五课 while循环的复杂条件输出
    2 主题|小节
  16. 第十六课 while循环与数据统计
    1 主题|小节
  17. 第十七课 for循环结构
    3 主题|小节
  18. 第十八课 for循环的输入序列处理)
    1 主题|小节
  19. 第十九课 深入探索for循环
    2 主题|小节
  20. 第二十课 三种循环的对比
    2 主题|小节
  21. 第二十一课 程序调试(一)
    3 主题|小节
  22. 第二十二课 调试工具的使用
    2 主题|小节
  23. 第二十三课 综合复习
    2 主题|小节
  24. 第二十四课 学习评估
    1 主题|小节
课 14, 主题|小节 1
进行中

14 while循环的输入序列处理

2025年4月20日
课 进展
0% 完成

### 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; } ```