逻辑问题 没办法让后面重复出现的数字不再输出

img


不知道逻辑哪里出错了 题目要求是输出20个数字中之前没有出现过的数字 c++初学者 实在是想不出怎么解决 还请指教

continue改为break,然后j<b改为j<n,即将数组下标b的元素与数组b下标之外的其他元素进行比较,如果相同,则重复元素标志count置1,然后再break退出循环即可。

修改如下:


#include <iostream>
using namespace std;

void printA(int A[],int n){
    
    int j,count;
    for(int b=0;b<n;b++){
        
        count=0;
        
    // 再次遍历数组每一个数,然后将除数组下标b元素之外的元素 ,与
    //数组下标b的元素进行比较,如果相同 ,则将相同标志置1,表示此数为重复数字,
    //然后break退出    ,不需要再比较后面的元素    
        for(j=0;j<n;j++){ 
            
            if(A[j]==A[b]&&j!=b){
                count=1;
                break;
                //continue;
            }else{
                count=0;
            }
        }
        
        if(count==0){
            cout<<A[b]<<" ";
        }
    }
    
}


int main(void){
    
    
    int a[100];
    int y;
    y=10; // 测试以10个数组元素进行测试 
    
    cout<<"请输入"<<y<<"个整数(每个数均位于0~100之间):"<<endl;
    for(int i=0;i<y;i++){
        cin>>a[i];
    }
    
    printA(a,y);
    
    return 0;
    
} 

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7605368
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:算法 - 有两个相同大小数组均已按升序排列,编程计算这两个数组的中位数(C++)
  • 除此之外, 这篇博客: 2019年5月暑期实习生字节跳动的面试题中的 今年我是大三,准备了下面试字节跳动的后台C++开发,当接到笔试的时候就很兴奋,打开一看编程题2道 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    第一道题目袋盖如下:(我只记得题目的大致意思)
    一个满二叉树有n层,请你输出这个二叉树的镜像,测试用例如下:
    输入
    在这里插入图片描述

    输出:
    在这里插入图片描述
    代码如何下:大概意思就是将一个二叉树的左右孩子进行交换即可。

    #include<iostream>
    //二叉树镜像 
    using namespace std;
    typedef struct Node{
    	char data;
    	struct Node *Lchild;
    	struct Node *Rchild;
    }*Tree;
    
    void out(Tree &T){
    	
    	if(T){
    		cout<<T->data<<" ";
    		out(T->Lchild);
    		out(T->Rchild);
    	}
    	
    }
    
    
    二叉树的左右孩子进行交换即可
    void out2(Tree &T){
    	
    	if(T){	
    	Tree temp=T->Lchild;//交换是用到的中间变量 
    	//交换左右节点 
    	T->Lchild=T->Rchild;
    	T->Rchild=temp;
    	
    	//再次递归即可 
    	out2(T->Lchild);
    	out2(T->Rchild);
    	
    	}
    	
    }
    void input(Tree &T){
    	char ch;
    	cin>>ch;
    	if(ch=='#'){
    		T=NULL;
    	}
    	else{
    		T=new Node;
    		T->data=ch;
    		input(T->Lchild);
    		input(T->Rchild);
    	} 
    }
    
    int main(){
    	while(true){
    	
    	Tree T;
    	input(T);
    	out(T);
    	cout<<"交换后"<<endl;
    	out2(T);
    	out(T);
    }
    	return 0;
    } 
    
  • 您还可以看一下 林男老师的小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课课程中的 化简法——纯小数转化为最简分数小节, 巩固相关知识点

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