c - 使用指针查找数组中的最大数字并将其位置转移到另一个数组

标签 c arrays

我现在正在用 C 语言做一个项目,我在项目的一个部分遇到了问题。基本上我试图在我的主数组中找到最大 M 个数字,并且我正在将它们的 ID 号转移到另一个数组中。ID这些最大数字的数字是它们在数组中的位置。

我的主数组是tresh_arr,有N个数字,数字是双倍的。

我的代码块不起作用:

    double max=0;
    int *max_arr;
    int k,tmp,flag=0;
    max_arr=calloc(M,sizeof(int));



for(i=0;i<M;i++)  //I will find maximum M numbers
{
    for(j=0;j<N;j++) //There is a N numbers in my array
    {
        if( *(tresh_arr+j) > max   ) //I'm trying to take the Id numbers to the tresh_arr
            {
                flag=0;
                for(k=0;k<i+1;k++) 
                {
                    if( *(max_arr+k)==j )
                    {   
                       flag=0;
                       break;
                    }
                    else 
                        flag=1; 
                }

                if(flag==1)
                {
                    max = *(tresh_arr+j);
                    tmp=j;
                }                               
            }
    }
    *(max_arr+i)=tmp;
}` 

但是我的代码不起作用,只是找到最大数字并写入 M 乘以该最大数字的 Id。我该怎么办?谢谢您,如果有的话,请为我的错误表示歉意。

最佳答案

以下是您的程序中的错误:

1)在倒数第二行你应该做 *(max_arr+i)=max;//不是临时文件

2)在每个for循环中我将最大数设置为最小数

for(i=0;i<M;i++)  //I will find maximum M numbers

{

 max =-1;    //**********YOU MISSED THIS*****************

for(j=0;j<N;j++) //There is a N numbers in my array
{

3)在上面的break中,你应该将flag设置为1,并且不需要再次将其设置为0,如果你应该检查flag==0,这基本上意味着没有找到元素

            for(k=0;k<i;k++) 
            {
                if( *(max_arr+k)==tresh_arr[j] )
                {  
                   flag=1;
                   break;
                }
            }

            if(flag==0)
            {
                max = *(tresh_arr+j);
                tmp=j;
            }  

在 C 中将 *(A+j) 写为 A[j] 也很好,它们完全相同,前面的有点太冗长了

关于c - 使用指针查找数组中的最大数字并将其位置转移到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032357/

相关文章:

c - scanf 的异常行为

javascript - 使用 Splice() 函数,如何删除特定的数组元素?

python - 所有字符串列表到 numpy float 数组

java - 替换 <String, String[]> TreeMap 中的空值

javascript - 转换 JavaScript 对象

在 Linux 中检查 ELF 是否使用 UPX 打包

c - 在 XCode 中打开 OpenCv 项目 - 运行目标 我的 Mac 64 位无效

c++ - 如何在 C++ 中创建数组 vector ( string [] )

c - 如何使用指针显示数组中的字符串?

c - 如果两种类型在 C 中彼此为 "compatible",这究竟意味着什么?