键盘输入10个整数,将重复的数找出来(只输出一次),若没有,输出No。
问题描述:
#include <stdio.h>
int main()
{
int a[10],b[10];
int i,j,sum=0,sum1=0,k;
for(i=0; i<10; i++)
b[i]=0;
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=0; i<10; i++)
for(j=i+1; j<10; j++)
{
if(a[i]==a[j])
{
b[i]=1;
b[j]=1;
}
}
j=0;
for(i=0; i<10; i++)
if(b[i]==1)
sum+=1;
for(i=0; i<10; i++)
{
if(b[i]==1)
{ sum1++;
if(sum1!=sum)
{ printf("%d ",a[i]);
j++;
}
if(sum1==sum)
{ printf("%d",a[i]);
j++;
}
}
}
if(j==0)
printf("No");
}
如果我输入的是这一组数据,3 5 7 2 5 3 8 5 9 0按道理应该输出3 5,但是我的输出是
3 5 5 3 5
我找不到原因在哪里,请帮忙修改,如果无法修改,请帮忙写新的代码,要注意输出的答案,最后没有空格,但是数字之间有,否则会提交会出现格式错误
答
思路是定义两个数组,一个是输入的数,一个是数的重复次数。没输入一个新的数,检查是否已在数组中,在这对应的次数加1,不在则加入数组