题目如下
题目讲解(思路)
想要实现序列去重,最简单的办法就是让后来出现的重复的数字等于0,最后在输出时不输出0的数字即可,代码也很容易实现
代码如下
cpp
#include<stdio.h>
int main()
{
int x = 0;
int arr[100];
scanf("%d",&x);
for(int i = 0;i<x;i++){
scanf("%d",&arr[i]);
}
//让重复出现的等于0
for(int i = 0;i<x;i++){
for(int j = i+1;j<x;j++){
if(arr[j]==arr[i]){
arr[j] = 0;
}
}
}
//输出不为0的数字
for(int i = 0;i<x;i++){
if(arr[i]!=0){
printf("%d ",arr[i]);
}
}
}
题目引申
我们可以在输出不为0的数组时,加上顺序输出数组或者逆序输出数组的代码
这样输出的数组就会更加清晰,分明
代码如下
cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int x = 0;
int arr[100];
scanf("%d", &x);
for (int i = 0; i < x; i++) {
scanf("%d", &arr[i]);
}
//让重复出现的等于0
for (int i = 0; i < x; i++) {
for (int j = i + 1; j < x; j++) {
if (arr[j] == arr[i]) {
arr[j] = 0;
}
}
}
//加上顺序排序
for (int i = 0; i < x; i++) {
for (int j = i+1; j < x; j++) {
if (arr[i] >= arr[j]) {
int k = arr[i];
arr[i] = arr[j]; //顺序排序
arr[j] = k;
}
}
}
//输出不为0的数字
for (int i = 0; i < x; i++) {
if (arr[i] != 0) {
printf("%d ", arr[i]);
}
}
}