[c程序设计]输入n个数据,这些数据已按从小到大顺序排列,统计其中出现的不同数据的个数。例如,5个整数1 3 3 4 4中有一个3个不同数据1 3 4,因而不同数据的个数为3

输入n个数据,这些数据已按从小到大顺序排列,统计其中出现的不同数据的个数。例如,5个整数1 3 3 4 4中有一个3个不同数据1 3 4,因而不同数据的个数为3

循环遍历数组,然后去重就行,就是for循环+continue,遇到不重复的插入新数组,遇到重复的直接continue跳到下一次循环

想降低代码量,直接hash表,普通实现,也只不过是类似的操作,建立一个数组,遍历n个数,每次检查是否在数组中,不是就加入,最后统计数组长度即可

代码如下:

#include <stdio.h>
#define n 100
int main()
{
    int N,a[n],count=1,this;
    printf("请输入输入数据总数N(N小于100):");
    scanf("%d", &N);
    for(int i=0;i<N;i++)
        scanf_s("%d", &a[i]);
    this = a[0];
    for (int i = 1; i < N; i++)
    {
        if (this == a[i])
        {
            continue;
        }
        else
        {
            count++;
            this = a[i];
        }
            
    }

    printf("%d",count);
    return 0;
}