请大家指正一下错误在哪

我用dev c++运行了几次都得到了正确的结果,但是提交答案后却是0分。

img

img

\t改为空格
你必须严格按照要求的格式输出,不要随便发散思维
还有循环m的时候索引越界了,要么从0到n-1,要么从1到n,这有时候不会报错,但是会造成不可预计的后果
比如m+1明明已经越界了,不在数组里,但是如果它正好和m的值相等,你就把m删掉了

去重时,应该是m<n-1,因为你循环里用到了m+1了,而且去重应该是双循环吧。你这去重只管相邻两个元素比较是否一样啊

题目要求输出必须用空格隔开

#include <stdio.h>

#define N 101

void swap(int *x, int *y) {
  int t = *x;
  *x = *y;
  *y = t;
}

int main() {
  int a[N];
  int n;

  // input
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    scanf("%d", &a[i]);

  // sort
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < n - i - 1; j++)
      if (a[j] > a[j + 1])
        swap(&a[j], &a[j + 1]);
  }

  // remove duplicated numbers
  int m = 1;
  for (int i = 0; i < n - 1; i++) {
    if (a[i] == a[i + 1])
      a[i] = 0;
    else
      m++;
  }

  // output
  printf("%d\n", m);
  for (int i = 0; i < n; i++)
    if (a[i] > 0)
      printf("%d ", a[i]);
  printf("\n");
  return 0;
}