gpt4 book ai didi

c - 将排序循环结果传输到另一个数组

转载 作者:行者123 更新时间:2023-11-30 17:40:06 25 4
gpt4 key购买 nike

这是一个将数组从最小值到最大值排序的循环,我需要将该循环的结果放入另一个数组中,以便我可以过滤并删除仅出现一次的数字并找到剩下的最后一个成员。

这是我到目前为止的代码:

#include<stdio.h>
#include<conio.h>
#define buffas 1024
void main() {
int arr[buffas],i,j,element,no,temp;

printf("\nEnter the no of Elements: ");
scanf("%d", &no);
for(i=0; i<no; i++) {
printf("\n Enter Element %d: ", i+1);
scanf("%d",&arr[i]);
}
for(i=0; i<no; i++) {
for(j=i; j<no; j++) {
if(arr[i] > arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
printf("\nSorted array:");

for(i=0; i<no; i++) {
printf("\t%d",arr[i]);
}

getch();
}

如何更改

printf("\t%d",arr[i]);  

填充另一个数组,然后对其进行排序以删除单个条目并仅保留至少重复一次的条目。
例如。第一个数组是

2 2 1 6 9 9

第二次排序后结果应该是

2 2 9 9

最佳答案

#include <stdio.h>

#define buffas 16

int main(void)
{
/* Instead of original input and sorting code */
int arr[] = { 1, 2, 2, 6, 9, 9, 10, 10, 10, 11, 12, 13, 14 };
int no = sizeof(arr) / sizeof(arr[0]);

/* Code to copy only duplicated elements in arr */
int copy[buffas];
int n = 0;
for (int i = 0; i < no; i++)
{
int j;
for (j = i + 1; j < no; j++)
{
if (arr[i] != arr[j])
break;
}
if (j - i > 1)
{
for (int k = i; k < j; k++)
copy[n++] = arr[k];
i = j - 1;
}
}

/* Print results for verification */
for (int i = 0; i < n; i++)
printf("c[%d] = %d\n", i, copy[i]);
return 0;
}

该代码已使用不同长度的排序数组和数组中的不同数据运行;这似乎是正确的。上面的代码产生输出:

c[0] = 2
c[1] = 2
c[2] = 9
c[3] = 9
c[4] = 10
c[5] = 10
c[6] = 10

请注意,该代码使用了在 for 循环控制语句中声明变量的 C99 功能;如果您使用的是 Windows 并且没有 C99 支持,则需要在循环外部声明 ik。如果您使用的是 GCC,则需要添加 -std=c99 或类似选项。

关于c - 将排序循环结果传输到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com