gpt4 book ai didi

c - 使用动态内存分配找到更大的数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:03 24 4
gpt4 key购买 nike

编写程序以使用动态内存分配查找最大数。我有
写了下面的代码,在
中出现了一些问题 排序部分我正在通过指针进行选择排序。但 排序不正确......我们可以做选择吗 按指针排序我是否正确应用 方法?

         #include<stdio.h>
#include<stdlib.h>
main()
{

int i,j,n,temp;
int *data;
printf("enter total no of elements:");
scanf("%d",&n);
data=(int*)calloc(n,sizeof(int));
printf("\n");
for(i=0;i<n;i++)
{
printf("enter number %d:",i+1);
scanf("%d",data+i);
}
for(i=0;i<n;i++)
{
printf("%d\t",*(data+i));
}
printf("\n");
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*(data)>*(data+j))
{
temp=*(data);
*(data)=*(data+j);
*(data+j)=temp;
}
}


}
for(i=0;i<n;i++)
{
printf("%d\t",*(data+i));
}
printf("largest element is %d\t",*(data+n-1));
}

输出:

         enter total no of elements:5

enter number 1:2
enter number 2:10
enter number 3:12
enter number 4:1
enter number 5:0
2 10 12 1 0
0 10 12 2

最佳答案

您只需对代码进行少量修改

   for(i=0;i<n-1;i++) //change here
{
for(j=i+1;j<n;j++)
{
if(*(data+i)>*(data+j)) //here
{
temp=*(data+i); //here
*(data+i)=*(data+j); //here
*(data+j)=temp;
}
}

您总是将第一个元素 (*data) 与 *(data+j) 进行比较。您需要将 *(data+i)*(data+j)

进行比较

关于c - 使用动态内存分配找到更大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19544913/

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