法一:用数字总数减去重复的数字个数,得到不同的数字个数
代码如下:
//统计不同数字的个数
#include <stdio.h>
#include <stdlib.h>
#define N 20 //N为数字个数
int main(void)
{
int a[N];
int i,j,counts;
counts=N;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
//将a[i]与其前面的数字比较,若有重复则counts-1
for(j=0;j<i;j++)
{
if(a[j]==a[i])
{
counts--;
break;
}
}
}
printf("%d\n",counts);
return 0;
}
法二:统计不同的数字个数,因为无序的数组统计起来太麻烦,先用冒泡排序从小到大进行排序,然后统计不同的数字个数
代码如下:
//统计不同数字的个数
#include <stdio.h>
#include <stdlib.h>
#define N 20 //N为数字个数
int main(void)
{
int a[N];
int i;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
int j,temp;
//将数组从小到大冒泡排序
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
int counts=0;
//依次比较相邻两个数字,若两个数不同则counts+1,相同则跳过
for(i=0;i<N-1;i++)
{
if(a[i]!=a[i+1])
{
counts++;
continue;
}
else if(a[i]==a[i+1])
{
continue;
}
}
printf("%d",counts+1); //还剩最后一个数字,counts+1
return 0;
}