gpt4 book ai didi

c - 3 未经排序的数组中的最大数字,我在哪里缺少逻辑?

转载 作者:行者123 更新时间:2023-11-30 18:38:44 24 4
gpt4 key购买 nike

该程序用于查找数组中 3 个最大的数字。

当我运行代码时,我得到第一高和第二高。第二高的是第三个数字的重复

我在逻辑中缺少什么?

#include<stdio.h>
#include<conio.h>

int main()
{
int i,k,n,m[20],h[3];
printf("\n enter the total number of students");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enter the marks scored by student %d",i+1);
scanf("%d",&m[i]);
}//end for loop
k=0;
h[k]=m[0];
for(i=0;i<n;i++)
{
if(m[i]>h[k])
{
h[k]=m[i];
}
}//end for loop
do
{
//Probably messed my code here
k++;
h[k]=m[0];
for(i=0;i<n;i++)
{
if(m[i]>=h[k-1])
{
if(m[i]>h[k])
{
h[k]=m[i];
}//end if
break;
}//end if
}//end for loop
}//end do loop
while(k<3);
printf("the first 3 highest marks are:\n");
for(i=0;i<k;i++)
printf("%d:%d\n",i+1,h[i]);
getch();
}//end of main

最佳答案

我不知道,如果可以用更简单的方式完成的话,您编写如此长的代码行的目的是什么。这是另一种在一次迭代中查找前 3 个数字的方法;希望您会喜欢它,并且它可能会对您将来有所帮助。

SOURCE:

#include<stdio.h>
#include<limits.h>
int main()
{
int a[10] = {5,4,3,6,7,8,9,10,1,2};
int h1 = INT_MIN; //TOP 1st
int h2 = INT_MIN; //TOP 2nd
int h3 = INT_MIN; //TOP 3rd
for(int i=0;i<10;i++)
{
if(a[i] > h1)
{
h3 = h2; h2 = h1; h1 = a[i];
}
else if (a[i] > h2)
{
h3 = h2; h2 = a[i];
}
else if (a[i] > h3)
{
h3 = a[i];
}
}
printf("TOP 1st is<%d>\n",h1);
printf("TOP 2nd is<%d>\n",h2);
printf("TOP 3rd is<%d>\n",h3);
return 0;
}

OUTPUT:

./a.out 
TOP 1st is<10>
TOP 2nd is<9>
TOP 3rd is<8>

关于c - 3 未经排序的数组中的最大数字,我在哪里缺少逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816006/

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