我用dev c++运行了几次都得到了正确的结果,但是提交答案后却是0分。
\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;
}