用C++编写程序解决该题

编写程序,实现以下功能:

首先,提示用户输入5个不大于10的正整数(分5次提示,每次输入1个整数);
然后,每次用户输入数值后,判断用户输入数值是否符合要求,如果不符合则输出错误信息并终止运行;
最后,判断用户输入的5个整数是否有重复,并输出结果(“您输入的数据包含重复值” 或者 “您输入的数据不包含重复值”)。
注意:此题需要提交3个运行结果截图,分别对应合法有重复值、合法无重复值和非法的输入。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/214633
  • 你也可以参考下这篇文章:算法设计与分析-众数问题(分治递归,含排序与不排序两种解法)(通俗易懂,附源码和图解,含时间复杂度分析)(c++)
  • 除此之外, 这篇博客: C与C++程序设计学习笔记中的 5、某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手都有一个起步的分数为10分。某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的字符串来表示。例如:0010110011 就是可能的情况。你的任务是算出所有可能情况。每个答案占一行。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    int ti[11] = { 0 }; //用来存储每道题的回答情况0或者1,0表示错误,1表示正确
    //提醒:数组ti的编号实际用1-10
    //score表示当前得分,num是当前第num道题目
    void f(int score, int num)
    {
    	if (num == 11)//10道题目全部做完
    	{
    		if (score == 100)
    		{
    			int i = 0;
    			for (i = 1; i <= 10; i++)
    				printf("%d", ti[i]);
    			printf("\n");
    		}
    	}
    	else //10道题目没有做完
    	{
    		ti[num] = 1; //讨论第num道题目的正确情况
    		f(score * 2, num + 1);
    		ti[num] = 0; //讨论第num道题目的错误情况
    		f(score - num, num + 1);
    	}
    }
    int main(void)
    {
    	f(10, 1);//从基础分10分开始,从第1题开始
    	return 0;
    }
    


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

参考一下

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Set<Integer> set = new HashSet<Integer>();
        int[] nums = new int[5];
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第 " + (i + 1) + " 个正整数:");
            int num = input.nextInt();
            if (num <= 0 || num > 10) {
                System.out.println("输入错误,请输入 1~10 的正整数!");
                return;
            }
            if (set.contains(num)) {
                System.out.println("您输入的数据包含重复值!");
                return;
            }
            set.add(num);
            nums[i] = num;
        }
        System.out.println("您输入的数据不包含重复值!");
    }
}


可以用set实现去重复

#include <iostream>
#include <set>

using namespace std;

int main() {
    set<int> s; // 使用 set 存储输入的整数
    int n;

    // 提示用户输入5个不大于10的正整数
    cout << "请输入5个不大于10的正整数:" << endl;
    for (int i = 1; i <= 5; i++) {
        cout << "请输入第" << i << "个整数:";
        cin >> n;

        // 判断用户输入数值是否符合要求
        if (n < 1 || n > 10) {
            cout << "输入错误!请输入不大于10的正整数。" << endl;
            return 0;
        }

        // 判断是否有重复
        if (s.count(n) > 0) {
            cout << "您输入的数据包含重复值。" << endl;
            return 0;
        }

        s.insert(n); // 插入到 set 中
    }

    cout << "您输入的数据不包含重复值。" << endl;

    return 0;
}

运行截图:

img

img

img


#include <iostream>
#include <set>
using namespace std;

int main() {
set<int> nums; //用set容器记录输入的数字,自动去重
int num;
for(int i=0; i<5; i++) {
cout << "请输入第" << i+1 << "个整数(不大于10):";
cin >> num;
if(num<=0 || num>10) { //判断输入是否符合要求
cout << "输入错误!" << endl;
return 0;
}
nums.insert(num);
}
if(nums.size() == 5) {
cout << "您输入的数据不包含重复值" << endl;
} else {
cout << "您输入的数据包含重复值" << endl;
}
return 0;
}