//找单身狗
//一个数组中只有两个数字是出现一次
//其他数字都常出现两次,编写一个函数找出这两个只出现一次的数字
//思考:
// 1 2 3 4 5 6 1 3 5 6
//从第一个数字开始,设count为0,如果循环一次之后,count为1,打印出来
//如果count为2,不打印
方法一:
#include<stdio.h>
int* dsg(int a[], int sz)
{
int i = 0,j=0,n=0;
int b[10] = {0};
int* ret = b;
for (i = 0; i < sz; i++)
{
int count = 0;
for (j = 0; j < sz; j++)
{
if (a[i] == a[j])
count++;
}
if (count == 1)
b[n++] = a[i];
}
return ret;
}
void print(int* ret)
{
printf("单身的数字是:");
while (*ret != '\0')
{
printf("%d ", *ret);
ret++;
}
}
int main()
{
int a[] = { 1,2,3,4,5,6,1,3,5,6 };
int sz = sizeof(a) / sizeof(a[0]);
//sizeof()求长度,会多求一个\0
int* ret=dsg(a, sz);//实现寻找单身狗的函数
print(ret);//打印单身狗的数字
return 0;
}
输出结果:

方法二:
//单身狗
//在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现,请找出只出现一次的数字
//例如:数组中有:1 2 3 4 5 1 2 3 4
//其中只有5出现一次,其他数字都出现2次,找出5
#include<stdio.h>
#define L 10
int main()
{
int a[L] = { 0 };
printf("请输入一个整型数组:");
int i = 0;
//输入数组
for(i=0;i<L;i++)
{
scanf("%d", &a[i]);
}
//统计数字出现的次数
int b[L] = { 0 };
int j = 0;
for (i = 0; i < L; i++)
{
int c = 0;//计算a[i]出现的次数
for (j = 0; j < L; j++)
{
if(a[i]==a[j])
{
c++;
}
}
b[i] = c ;
}
int d = 0;
printf("输入需要找出现几次的数字:");
scanf("%d", &d);
for (i = 0; i < L; i++)
{
if (b[i] == d)
{
printf("%d出现了%d次\n", a[i], d);
}
}
return 0;
}
输出结果:

在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现,请找出只出现一次的数字&spm=1001.2101.3001.5002&articleId=142420194&d=1&t=3&u=3f4c014ef656424a9d6481dd07f5c26d)
3554

被折叠的 条评论
为什么被折叠?



