qq_74158614 2023-02-12 17:05 采纳率: 100%
浏览 44
已结题

洛谷刷题,完成但得分为0,为何?

第一次练题,感觉完成了题目要求,但得分为0
(题目是NOIP的P1059 [NOIP2006 普及组] 明明的随机数 )
代码如下

#include<stdio.h>
int main()
{
    int N,i ,t ;
    int arr[1001];
    int n = 0;
    scanf("%d", &N);
    for (i = 0; i < N; i++)
    {
        scanf("%d",&t);
        arr[t] = 1;
    }
    for (i = 1; i < 1001; i++)
    {
        if (arr[i])
            n++;
    }
    printf("%d\n",n);
    for (i = 1; i < 1001; i++)
    {
        if (arr[i] == 1)
            printf("%d ",i);
    }
}

img


请问该如何改代码

  • 写回答

2条回答 默认 最新

  • zoeil 优质创作者: Java技术领域 2023-02-12 17:15
    关注

    对于样例中的20,你这个程序计算后arr[20]=2,但是你输出的时候是arr[i]=1, 导致20没有输出,所以需要修改一下,而且arr数组需要初始化为0

    #include<stdio.h>
    int main()
    {
        int N,i ,t ;
        int arr[1001] ={0};
        int n = 0;
        scanf("%d", &N);
        for (i = 0; i < N; i++)
        {
            scanf("%d",&t);
            arr[t] = 1;
        }
        for (i = 1; i < 1001; i++)
        {
            if (arr[i])
                n++;
        }
        printf("%d\n",n);
        for (i = 1; i < 1001; i++)
        {
            if (arr[i])
                printf("%d ",i);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月12日