【发布时间】:2021-10-13 17:10:22
【问题描述】:
我的问题是从数组中打印 n 个最大元素。
- 使用单循环
- 动态值(我更改了 2010 年 3 月 5 日的数组、长度和数字),
- 不使用数组排序或冒泡排序。
- 制作函数
我试过这个程序
#include <stdio.h>
int main()
{
int length;
int data[] = {5, -2, 0, -3, 3}; //.it can be changable
length = sizeof(data) / sizeof(int);
int i = 0;
int number = 3; //.it mean print how many largest number to print.
int temp;
for (i = 0; i < length; i++)
{
if (data[i] > data[i+1])
{
temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
}
else
{
temp = data[i+1];
data[i+1] = data[i];
data[i] = temp;
}
}
printf("%d",data[i]);
return 0;
}
我的输出是 3。
【问题讨论】:
-
您的循环正在对数组进行排序。
-
@kaylum 我认为他们的意思是第 N 大。
-
实际上,您的循环交换了
if和else块中的元素。 -
@Barmar 我希望你能理解我的回答,告诉我以代码类型而不是第 N 个最大的数字回答我必须得到 N 个最大的数字
-
@S.G 评论
for (i = 0; i < length; i++) { if (data[i] > data[i+1])。data[i+1]可以访问数组外。