c语言 查找仅出现一次的数

不知道问题出在哪
查找10个数中仅出现一次的数

#include<stdio.h>

int main()
{
    int i,j;
    int c=0;
    int f=0;
    int a[10];
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);

    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
            {   if(j==i)
                continue;
                if(a[j]==a[i])
                {
                c=1;
                break;
                }
            }

         if (c==0)
           {

            printf("%d ",a[i]);

            f=1;
            }

    }

    if(f==0)
    printf("None");
}
```求教
weixin_42103096
weixin_42103096 在 for(i=0;i<10;i++) 后面对c赋0
大约一年之前 回复
cuteboy07
cuteboy07 在外围的for loop的结尾处,你需要把c置0。如果不这样,在第一个重复的数出现后,c被置1。这样一来,if(c==0)再也不会为真,所以其他的非重复数就不会再打印出来。
大约一年之前 回复
weixin_44764457
wei xin_44706101 不知道该说些啥 我是真的点错了 不知道为什么屏幕跳了 兄弟 我不会做那种事 付出都值得被尊重
大约一年之前 回复
zou699169
Young blood, never get chained 拒绝回答无赖提问者的任何问题
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 拒绝回答无赖提问者的任何问题
大约一年之前 回复

2个回答

你每次的大循环都需要把判断标志c置零,下面是修改后的程序和运行结果。(只修改了一处,并且已经标记)(着急用C币,还请采纳)

#include

int main()
{
int i,j;
int c=0;
int f=0;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(i=0;i<10;i++)
{
    c=0;  //每次最外层循环需要把判断标志c置0; 
    for(j=0;j<10;j++)
        {   if(j==i)
            continue;
            if(a[j]==a[i])
            {
            c=1;
            break;
            }
        }

     if (c==0)
       {

        printf("%d ",a[i]);

        f=1;
        }

}

if(f==0)
printf("None");

return 0;

}

图片说明

#include <stdio.h>

int main()
{
   int i, j;
    int flag = 1, f = 0;
    int a[5];
    for (i = 0; i<5; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < 5; i++){
        flag = 1;
        for (j = 4; j>-1; j--){
            if (a[i] == a[j]&&i!=j){
                flag = 0;
            }   
        }
        if (flag != 0 ){
            printf("%d ", a[i]);
            f = 1;
        }
    }
    if (f == 0)
        printf("NONE");
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问