帮我写一个自动删除输入重复数字的c语言程序
时间: 2024-09-19 15:08:59 浏览: 41
当然可以,下面是一个简单的C语言程序,它使用数组和循环来删除输入数字中的重复元素。这个程序会提示用户输入一组整数,并打印出去重后的结果。
```c
#include <stdio.h>
#define SIZE 100
int main() {
int numbers[SIZE], count = 0;
printf("请输入一些整数(以空格分隔,输入完毕按回车):");
int num;
while (scanf("%d", &num) == 1 && count < SIZE) {
if (count > 0 && numbers[count - 1] != num) { // 检查是否重复
numbers[count] = num;
count++;
}
}
// 如果有剩余空间,将最后一个输入值添加到数组
if (count > 0 && numbers[count - 1] != num)
numbers[count++] = num;
printf("去重后的数字:\n");
for (int i = 0; i < count; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
相关问题
请帮秘书处云姐设计一个小程序,可以实现输入n个整数到所定义数组后,自动对其中元素进行比较排序、去掉重复元素,最终将处理后的数组元素按照从小到大一次打印出来。(n>=6)C语言
为了帮助云姐设计这个小程序,我们可以使用C语言中的标准库函数如`qsort()`进行排序,并利用`hash`或`set`数据结构去除重复元素。以下是简单的步骤:
首先,创建一个名为`secretary_sort.c`的文件,包含以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
// 使用快速排序算法对数组进行排序
void quicksort(int arr[], int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quicksort(arr, low, pivot - 1);
quicksort(arr, pivot + 1, high);
}
}
// 分区函数,用于快速排序
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将pivot放到正确的位置
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
// 去除重复元素并返回新数组长度
size_t remove_duplicates(int arr[], size_t n) {
bool seen[n]; // 创建布尔数组表示是否已见过某个元素
memset(seen, false, sizeof(seen));
for(size_t i = 0, unique_count = 0; i < n; ++i) {
if (!seen[arr[i]]) { // 如果没看过这个元素
seen[arr[i]] = true; // 标记为已见
arr[unique_count++] = arr[i]; // 添加到新数组
}
}
return unique_count;
}
int main() {
int n, *input_array;
printf("请输入整数的数量(n >= 6): ");
scanf("%d", &n);
// 保证足够大的内存空间
input_array = malloc(n * sizeof(int));
if(input_array == NULL) {
printf("内存分配失败.\n");
return 1;
}
printf("请输入%d个整数: ", n);
for(int i = 0; i < n; i++) {
scanf("%d", &input_array[i]);
}
// 排序数组
quicksort(input_array, 0, n - 1);
// 去除重复元素并更新数组大小
size_t unique_size = remove_duplicates(input_array, n);
// 打印排序后的数组
printf("排序并去重后的数组(从小到大): ");
for(int i = 0; i < unique_size; i++) {
printf("%d ", input_array[i]);
}
printf("\n");
free(input_array); // 释放内存
return 0;
}
```
运行程序后,用户会看到提示输入整数数量以及每个数字。程序将接收输入,对数组进行排序,删除重复项,然后按顺序打印结果。
阅读全文