从键盘输入10个不多于5位的整数,按从小到大的顺序输出这10个数中仅重复出现2次的数,每个数使用 %6d 的形式输出。如果没有这样的数,则输出:none。
时间: 2023-06-01 19:02:19 浏览: 128
输入一些数字,输出每个数重复出现的次数
### 回答1:
题目中给出了一个长度为10的整数数组,要按从小到大的顺序输出其中仅重复出现过两次的数,并且每个数使用 %6d 的格式输出。如果没有这样的数,则输出 None。
具体的解题思路,可以先用一个字典来记录每个数出现的次数,然后再进行一次遍历,找到出现两次的数并将其输出。代码实现如下:
```
nums = [4, 5, 6, 4, 9, 2, 1, 5, 7, 4]
count_dict = {}
for num in nums:
if num not in count_dict:
count_dict[num] = 1
else:
count_dict[num] += 1
result = []
for key, value in count_dict.items():
if value == 2:
result.append(key)
if result:
result.sort()
for num in result:
print('%6d' % num)
else:
print('None')
```
以上代码中,我们首先遍历整个数组,使用字典 count_dict 记录每个数出现的次数。然后再一次遍历 count_dict,找到出现两次的数并将其加入结果列表 result 中,最后将 result 按照从小到大的顺序排序并输出即可。如果没有找到符合条件的数,则输出 None。
### 回答2:
首先,我们需要从键盘输入10个不多于5位的整数,可以使用 Python 的 input() 函数实现:
nums = []
for i in range(10):
num = int(input())
if num < 100000:
nums.append(num)
else:
print("数字不要超过5位数!")
break
接着,我们需要按从小到大的顺序输出这10个数,并找出仅重复出现2次的数。可以先对 nums 列表进行排序,然后使用双指针法找出重复出现2次的数:
nums.sort()
i, j = 0, 1
res = []
while j < len(nums):
if nums[i] != nums[j]:
i += 1
j += 1
else:
count = 2
while j < len(nums) and nums[i] == nums[j]:
count += 1
j += 1
if count == 3:
res.append(nums[i])
i = j
else:
i = j - 1
j += 1
最后,我们需要将结果按照题目要求,使用 m 的形式输出。可以使用字符串格式化实现:
if len(res) == 0:
print("none")
else:
for num in res:
print(f"{num}m")
完整代码如下:
nums = []
for i in range(10):
num = int(input())
if num < 100000:
nums.append(num)
else:
print("数字不要超过5位数!")
break
nums.sort()
i, j = 0, 1
res = []
while j < len(nums):
if nums[i] != nums[j]:
i += 1
j += 1
else:
count = 2
while j < len(nums) and nums[i] == nums[j]:
count += 1
j += 1
if count == 3:
res.append(nums[i])
i = j
else:
i = j - 1
j += 1
if len(res) == 0:
print("none")
else:
for num in res:
print(f"{num}m")
### 回答3:
这是一道关于数组和循环的编程题目。
首先,我们需要从键盘输入10个不多于5位的整数,可以使用scanf函数来实现。接下来,将这10个数存入一个数组中,方便后续的比较和排序。
然后,我们需要对数组中的数进行排序,可以使用冒泡排序或插入排序,这里以冒泡排序为例。排序时,要注意将数组中的空元素排在数组的最后。排序完成后,数组中的数就按照从小到大的顺序排列好了。
接着,我们需要找出仅重复出现2次的数。可以用两个变量来记录当前重复的数和出现的次数,再遍历一遍数组,如果找到一个与当前重复数不同的数,则将计数器清零,并更新当前重复数。如果找到一个与当前重复数相同的数,则将计数器加1。如果计数器等于2,则输出当前重复数。
最后,按照题目中要求的格式输出答案即可。如果没有这样的数,则输出“none”。
下面是完整的代码实现:
```
#include <stdio.h>
int main()
{
int a[10];
int i, j, temp;
// 输入10个整数
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
// 冒泡排序
for(i = 0; i < 10; i++)
{
for(j = 0; j < 9-i; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
// 查找仅重复出现2次的数
int count = 0;
int current = -1;
for(i = 0; i < 10; i++)
{
if(a[i] == current)
{
count++;
}
else
{
current = a[i];
count = 1;
}
if(count == 2)
{
printf("%d m ", a[i]);
count = 1;
current = -1;
}
}
// 如果没有这样的数,则输出"none"
if(current != -1)
{
printf("none");
}
return 0;
}
```
阅读全文