永远有头发的阿仔
2021-04-23 09:09
采纳率: 100%
浏览 47

大佬们,能不能看一下我这个哪里错了

 从键盘输入20个整数,输出这20个数中所有仅出现一次的数。如果没有这样的数,则输出:None。

这是题目,谢谢大佬们!!

#include<stdio.h>
void main()
{
	int i , j , a[20] ;
	int sum = 0 ,temp = 0 , flag = 0;
	printf("请输入20个整数:\n");
	for( i = 0 ; i<20 ; i++)
	{
		scanf("%d",&a[i]);
	}
	for( i = 0 ; i < 20 ; i++ )
	{
		flag = 0;
		for( j = i+1 ; j < 20 ; j++)
		{
			if( a[i] == a[j] )
			{
				continue;
			}
			flag = flag + 1;
			
		}
		if( flag == 20 - i )
		{
			sum = sum + 1;
			printf("%d",a[i]);
		}
	}
	if( sum == 0 )
		printf("NONE\n");
}
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 正在学C++ 2021-04-23 09:27
    已采纳
    #include<stdio.h>
    int main()
    {
        int i , j , a[20] ;
        int sum = 0 ,temp = 0 , flag = 0;
        printf("请输入20个整数:\n");
        for( i = 0 ; i<20 ; i++)
        {
            scanf("%d",&a[i]);
        }
        for( i = 0 ; i < 20 ; i++ )
        {
            flag = 0;
            for( j = 0 ; j < 20; j++)    //要把所有数据有对比一遍,不能只对比后面的
            {
                if(j==i) continue;      //把j==i的去掉不考虑
                if( a[i] == a[j] )
                {
                    continue;
                }
                flag = flag + 1;
    
            }
            if( flag == 19 )     //固定19
            {
                sum = sum + 1;
                printf("%d ",a[i]);
            }
        }
        if( sum == 0 )
            printf("NONE\n");
        return 1;
    }
    

    修改了你的代码

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 正在学C++ 2021-04-23 09:20
    #include<stdio.h>
    int main(){
        int num[200]={0}, e, sign=0;
        for(int i=0;i<20;i++){
            scanf("%d",&e);
            num[e]++;
        }
        for(int i=0;i<200;i++)
            if(num[i]==1){
                printf("%d ",i);
                sign=1;
            }
        if(sign==0) printf("None");
        return 1;
    }

    我给你写了一个取巧的办法

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题