wei xin_44706101
2019-03-29 22:01
采纳率: 86.7%
浏览 1.2k

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");
}
```求教
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_19460715 2019-03-29 22:36
    已采纳

    你每次的大循环都需要把判断标志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;
    

    }

    图片说明

    点赞 评论
  • 莫空0000 2019-03-29 23:30
    #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;
    }
    
    点赞 评论

相关推荐 更多相似问题