参考代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main(void) { int N; scanf("%d", &N); int arr[N]; int i; for (i = 0; i < N; i++) { scanf("%d", &arr[i]); } //先将数组元素进行排序,方便去重 int j; int tmp; for (i = 0; i < N - 1; i++) { for (j = i; j < N; j++) { if (arr[i] > arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } /* for (i = 0; i < N; i++) { printf("%d ", arr[i]); } printf("\n"); */ int res[N]; //定义一个存放结果的数组 res[0] = arr[0]; //第一个元素赋值为arr[0] int resindex = 1; //数组下标 for (i = 1; i < N; i++) { if (arr[i] == arr[i-1]) //如果该元素和前一个元素相同,跳出本次循环 { continue; } res[resindex++] = arr[i]; //不相等则赋给结果数组,下标加一 } printf("%d\n", resindex); for (i = 0; i < resindex; i++) { printf("%d ", res[i]); } printf("\n"); return 0; }
0.0分
6 人评分
#include <stdio.h> int a,n,j,p=0,b[100],c[100],m,t,i; main() { scanf("%d",&n); //随机数的个数 for(j=0;j<n;j++) { a=rand()%1000+1; b[j]=a; //存放随机数 printf("%d ",a); } for(j=0;j<n;j++) //如果有相同元素,将后面的变为0 { for(i=j+1;i<n;i++) { if(b[j]==b[i]) { b[i]=0; } } } for(j=0;j<n;j++) //将不为0的元素存放到c数组中 { if(b[j]!=0) c[p]=b[j]; p++; } printf("\n%d\n",p); //输出无相同元素个数 for(j=0;j<p;j++) //使用冒泡排序法,从小到大排序 { for(i=j+1;i<p;i++) { if(c[j]>c[i]) { t=c[j]; c[j]=c[i]; c[i]=t; } } } for(j=0;j<p;j++) printf("%d ",c[j]); //输出 } 为什么是错误答案啊!
新城已无旧少年 2021-12-25 10:51:25 |
它是人为输入的伪随机数不是真正的随机数