9个同学一起做游戏,每个人报一个[1,20]区间上的正整数,请你编程求出有多少个不同的数。
时间: 2023-05-31 22:19:29 浏览: 357
### 回答1:
假设这9个同学报的数字分别为a1, a2, ..., a9,我们可以用一个集合(set)来存储这些数字,因为集合中不会有重复的元素。具体的实现可以参考以下代码:
```
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> nums; // 定义一个集合来存储数字
for (int i = 1; i <= 9; i++) {
int num;
cin >> num;
nums.insert(num); // 将输入的数字插入到集合中
}
cout << nums.size() << endl; // 输出集合中元素的个数,即不同的数字个数
return ;
}
```
这段代码中,我们先定义了一个集合nums来存储数字。然后用一个循环输入9个数字,并将它们插入到集合中。最后输出集合的大小,即不同的数字个数。
### 回答2:
首先,我们需要明确题意:有 9 个同学一起做游戏,每个人报一个 [1,20] 区间上的正整数,我们需要编程求出有多少个不同的数。
解题思路:
我们可以使用一个列表来存储每个同学报的数字,然后使用一个集合来存储不同的数。因为集合不允许有重复元素,所以存储不同的数非常方便。
具体实现:
1. 创建一个空的列表来存储每个同学报的数字。
2. 通过循环来输入每个同学报的数字,并将其添加到列表中。
3. 创建一个空的集合来存储不同的数。
4. 通过循环遍历列表中的每个数,将其添加到集合中。
5. 最后,可以使用 len() 函数来计算集合中不同的数的个数,即为我们需要的答案。
代码实现:
num_list = []
for i in range(9):
num = int(input("请输入第" + str(i+1) + "个同学报的数字:"))
num_list.append(num)
num_set = set(num_list)
print("不同的数有", len(num_set), "个。")
这个程序会依次输入每个同学报的数字,并输出不同的数的个数。
值得注意的是,如果同学输入的数字不在 [1,20] 的区间内,可能会导致程序出错。我们可以通过添加一个判断语句来避免这种情况的发生。
代码实现:
num_list = []
for i in range(9):
while True:
num = int(input("请输入第" + str(i+1) + "个同学报的数字:"))
if num >= 1 and num <= 20:
break
else:
print("请输入[1,20]区间内的数字!")
num_list.append(num)
num_set = set(num_list)
print("不同的数有", len(num_set), "个。")
这个程序会要求同学输入 [1,20] 区间内的数字,并在输入不符合要求的数字时提示同学重新输入。
### 回答3:
首先,我们可以使用一个长度为20的数组来记录每个数字是否出现过,数组下标表示数字,数组元素表示该数字是否出现过。初始将数组元素全部设为0,表示没有数字出现过。
在输入每个同学报的数字时,判断该数字是否已经出现过,如果没有,则将该数字对应的数组元素设为1,表示该数字已经出现过。
最后,统计数组中元素为1的个数,即为不同的数字个数。
以下是一段Python代码示例:
```
count = 0
nums = [0] * 20 # 初始化数组,元素全部为0
for i in range(9):
num = int(input())
if nums[num - 1] == 0: # 数字未曾出现过
nums[num - 1] = 1 # 标记数字出现过
count += 1
print(count)
```
当然,上面的代码也可以使用set等其他数据结构来实现。
阅读全文