C++输入时查重,并重新输入新数据

课程选择的题目重复了,如何查重并且告知需要重新打一个新的题目

img


while (1)
{
    for (int j = 0; j < i; j++)
    {
        if (strcmp(pArr[i].title, pArr[j].title) == 0)
            break;
    }

    if (j < i)
    {
        printf("题目重复,重新输入题目:");
        scanf("%s", &pArr[i].title);
    }
    else
        break;
}

加到题目scanf后面

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7419686
  • 这篇博客你也可以参考下:C++ 拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符示例分析
  • 除此之外, 这篇博客: C++单继承,多重继承,虚拟继承与内存布局中的 普通多重继承内存布局 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    class Base
    {
    public:
     
        Base(int i) :baseI(i){};
        virtual ~Base(){}
     
        int getI(){ return baseI; }
     
        static void countI(){};
     
        virtual void print(void){ cout << "Base::print()"; }
     
    private:
     
        int baseI;
     
        static int baseS;
    };
    class Base_2
    {
    public:
        Base_2(int i) :base2I(i){};
    
        virtual ~Base_2(){}
    
        int getI(){ return base2I; }
    
        static void countI(){};
    
        virtual void print(void){ cout << "Base_2::print()"; }
     
    private:
     
        int base2I;
     
        static int base2S;
    };
     
    class Drive_multyBase :public Base, public Base_2
    {
    public:
    
        Drive_multyBase(int d) :Base(1000), Base_2(2000) ,Drive_multyBaseI(d){};
     
        virtual void print(void){ cout << "Drive_multyBase::print" ; }
     
        virtual void Drive_print(){ cout << "Drive_multyBase::Drive_print" ; }
     
    private:
        int Drive_multyBaseI;
    };
    

    在这里插入图片描述
    可见内存布局为,Base,Base_2, 然后再是自己的变量。
    Base和Base_2中都有自己的虚函数指针,都有的print方法被重写。两个虚函数表都被重写,继承类的虚函数指针跟在Base类的后面,析构函数也是虚函数。
    注意x64架构下指针为8个字节,而x86架构下指针为4个字节。

  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 可变参模板续、模板模板参数小节, 巩固相关知识点

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