编写程序输入n个整数,查找并删除重复的数字,打印结果,用c语言解决
时间: 2025-01-02 08:47:43 浏览: 12
在C语言中,你可以使用数组和循环来实现这个功能。首先,创建一个大小为`n+1`的数组,因为我们需要存储可能出现的最大整数,并且数组下标从0开始。然后通过遍历输入的数字,将每个数字作为索引插入到数组中,如果该位置已经有元素,说明数字已存在,就跳过。最后,遍历数组并将非重复的数字打印出来。
下面是一个示例代码:
```c
#include <stdio.h>
#define MAX_NUMS (1e6 + 1) // 假设输入不会超过这个范围
int main() {
int n;
printf("Enter the number of integers: ");
scanf("%d", &n);
int nums[MAX_NUMS] = {0}; // 初始化数组全为0
for (int i = 0; i < n; i++) {
int input;
printf("Enter integer %d: ", i + 1);
scanf("%d", &input);
// 将数字转换为数组下标并检查是否已存在
if (nums[input] == 0) {
nums[input] = 1; // 如果不存在,则置1
printf("%d ", input); // 打印非重复数字
}
}
printf("\n");
return 0;
}
相关问题
用c语言编写程序输入n个整数,查找并删除重复的数字,打印结果
好的,这是一个比较基础的问题,下面是用C语言编写的程序,可以实现输入n个整数,查找并删除重复数字的功能:
```c
#include <stdio.h>
#define MAXSIZE 100
int main()
{
int arr[MAXSIZE], n, i, j, k;
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入这%d个整数:\n", n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
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++;
}
}
}
printf("去重后的结果为:\n");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
程序的运行流程如下:
1. 首先,程序会要求用户输入整数的个数n。
2. 然后,程序会要求用户输入这n个整数,这些整数会被存储在数组arr中。
3. 接下来,程序会遍历整个数组arr,查找并删除重复的数字。如果发现有重复的数字,就将后面的数字向前移动一位,直到将重复的数字删除为止。删除操作会改变数组的长度,所以程序会在循环中动态更新数组的长度n。
4. 最后,程序会打印出去重后的结果。
希望这个程序对你有所帮助。
编写输入n个整数,查找并删除重复的数字,打印结果c语言程序
以下是一个简单的 C 语言程序,用于输入 n 个整数,查找并删除重复的数字,最后打印结果:
```
#include <stdio.h>
int main()
{
// 定义变量
int n, i, j, k;
int arr[100];
// 输入 n 个整数
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入 %d 个整数:\n", n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
// 查找并删除重复的数字
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++;
}
}
}
// 打印结果
printf("\n删除重复数字后的结果为:\n");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
该程序通过双重循环来查找并删除重复的数字,其中:
- 外层循环用于遍历整个数组;
- 内层循环用于查找与当前元素相同的元素,并删除它们。
最后,程序打印删除重复数字后的结果。
阅读全文