qqcmm1015 2023-05-16 21:49 采纳率: 61.8%
浏览 25
已结题

c语言整数去重找错误

Description

给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。

Input

输入一个整数n,表示序列有n个整数(0<n<=100000)

接下来输入n个整数,表示序列中的数,这些数在[0,100000]区间内。

Output

按照输入的顺序输出去重后的序列,整数之间用空格隔开。

Sample Input
8
1 2 4 3 1 2 4 3
Sample Output
1 2 4 3

#include<stdio.h>
int main()
{
    int n,i,j,k,max=-1;;
    while(scanf("%d",&n)!=EOF)
    {
        max=-1;
        int a[100001],b[100005];
        for(i=0;i<=n-1;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]>max) max=a[i];
        }
        printf("%d",a[0]);
        b[a[0]]=-1;
        for(k=1;k<=n-1;k++)
        {
            if(b[a[k]]==0)
            {
                printf(" %d",a[k]);
                b[a[k]]=-1;
            }
        }
        printf("\n");
    }
    return 0;
}


以上代码提交后显示错误

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-05-16 23:02
    关注

    数组 b[] 没有初始化,修改如下,供参考:

    #include<stdio.h>
    int main()
    {
        int n,i,j,k;  //max=-1;
        //while(scanf("%d",&n)!=EOF)
        //{
            //max=-1;
        int a[100001] = {0}, b[100005] = {0}; //修改
        scanf("%d", &n);
        for(i=0;i<=n-1;i++)
        {
            scanf("%d",&a[i]);
                //if(a[i]>max) max=a[i];
        }
        printf("%d",a[0]);
        b[a[0]] = -1;
        for(k=1;k<=n-1;k++)
        {
            if(b[a[k]] == 0)
            {
                printf(" %d",a[k]);
                b[a[k]]=-1;
            }
        }
        printf("\n");
        //}
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀