C语言编写程序删去数组中重复的数字
时间: 2024-05-09 22:17:17 浏览: 43
你可以使用以下代码来删除数组中的重复数字:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 4, 5, 6, 6};
int n = sizeof(arr) / sizeof(int);
int i, j, k;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n;) {
if (arr[j] == arr[i]) {
for (k = j; k < n; k++) {
arr[k] = arr[k + 1];
}
n--;
} else {
j++;
}
}
}
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行结果为:1 2 3 4 5 6
相关问题
C语言二维数组删去重复值
在C语言中,二维数组通常用于表示表格或矩阵数据,删除其中重复值的操作可能会涉及到遍历和查找。由于C语言本身并不提供内置函数来直接删除数组中的元素,需要手动编写循环结构来完成这个任务。下面是一个简单的例子,展示了如何删除一维整数数组中的重复值:
```c
#include <stdio.h>
// 定义一个函数来检查是否数组中已经包含该元素
int contains(int arr[], int n, int element) {
for (int i = 0; i < n; i++) {
if (arr[i] == element)
return 1;
}
return 0;
}
// 删除数组中的重复值
void removeDuplicates(int arr[][2], int m, int n) {
// 遍历数组
for (int i = 0; i < m; i++) {
// 对当前行中的每个元素,检查是否有重复
for (int j = 0; j < n - 1; j++) {
if (contains(arr[i], j, arr[i][j])) { // 如果找到重复
for (int k = j + 1; k < n; k++) { // 将后面的元素向左移动
arr[i][k - 1] = arr[i][k];
}
// 减少数组长度
arr[i][n - 1] = 0;
break;
}
}
}
}
// 打印二维数组
void printArray(int arr[][2], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
int main() {
int array[4][2] = {{1, 2}, {3, 4}, {2, 5}, {6, 7}};
int m = sizeof(array) / sizeof(array[0]);
int n = sizeof(array[0]) / sizeof(array[0][0]);
printf("Original Array:\n");
printArray(array, m, n);
removeDuplicates(array, m, n);
printf("\nArray after removing duplicates:\n");
printArray(array, m, n);
return 0;
}
```
这个示例程序首先创建了一个二维数组,然后调用`removeDuplicates`函数删除重复值,并最后打印处理后的数组。注意,这个算法会保留第一个出现的重复元素,后续的重复将被删除。
请用C语言编写函数fiun, 函数的功能是:删去一维数组中所有相同的数,使之只剩一个。函数返回删除后数组中数据的个数。主函数中输出删除前后数组中所有的元素。
在C语言中,我们可以创建一个名为`deleteDuplicates`的函数来实现这个功能。首先,我们需要声明一个指针和两个变量来辅助遍历和计数。这里是一个简单的示例:
```c
#include <stdio.h>
// 函数原型
int deleteDuplicates(int arr[], int n);
// 主函数
int main() {
int arr[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
// 删除前打印数组
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
int count = deleteDuplicates(arr, n);
// 输出删除后的数组和个数
printf("\nArray after removing duplicates: ");
for (int i = 0; i < count; i++) {
printf("%d ", arr[i]);
}
printf("\nNumber of unique elements: %d\n", count);
return 0;
}
// 删除重复元素的函数
int deleteDuplicates(int arr[], int n) {
if (n <= 1) return n; // 如果只有一个元素或没有元素,直接返回
int *uniqueArr = arr, uniqueCount = 1;
for (int i = 1; i < n; i++) {
if (arr[i] != arr[uniqueCount - 1]) {
uniqueArr[uniqueCount++] = arr[i];
}
}
// 返回唯一元素的数量
return uniqueCount;
}
```
在这个程序中,`deleteDuplicates`函数会检查每个元素是否与前面已存储的独特元素不同,如果不同则添加到新的数组`uniqueArr`中。最后返回`uniqueCount`作为新数组中的唯一元素个数。
阅读全文