在实验室中,
H
是最神秘的一个
,
在一次实验室聚会上,学长发送
x
(奇数)个礼物,每个人都得到了学长的礼物且
都是偶数个,唯有
H
是奇数个,每个成员得到的礼物都有相同的编号,请找出
H
礼物的编号,(礼物编号不超过
50
)
输入
第一行:礼物的个数
x
第二行:
x
个礼物的编号
一、这是第一种方式
从第一个开始,找后面是否有与它相同的数,若有,则不输出,若没有,则输出该数。
#include<stdio.h>
int main (void)
{
int x, i, j;
printf("请输入礼物个数x=");
scanf("%d",&x);
int a[x];
printf("请输入x个礼物编号:");
for (i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<x;i++)
{
int count =1;//count==1表示该数字只出现一次
for(j=0;j<x;j++)
{
if (i==j)
{
continue;
}
if (a[i]==a[j])
{
count++;
}
}
if (count==1)
{
printf("H礼物编号为=%d",a[i]);
}
}
return 0;
}
二、第二种方法
先将礼物编号排好序,再找哪一个数他的前后两个数与他均不相同,即该数就是H的礼物编号
#include<stdio.h>
int main (void)
{
int x;
int i;
int j,k,t;
printf("请输入礼物个数x=");
scanf("%d",&x);
int a[x];
printf("请输入x个礼物编号:");
for(i=0;i<x;++i)
{
scanf("%d",&a[i]);
}
//先将x个数据排好序,再找出与他前后均不一样的那个数
for(j=0;j<x-1;j++)
{
for(k=0;k<x-1-j;k++)
{
if (a[k]>a[k+1])
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
}
}
}
for(j=0;j<x;j++)
{
if (a[j]!=a[j+1]&&a[j]!=a[j-1])
printf("H礼物编号为=%d",a[j]);
}
return 0;
}
第一次写哈,如果有不太对的,还请大家可以指出来。