gpt4 book ai didi

c - 在不使用数组的情况下从标准输入中查找第二大元素

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

#include<stdio.h>

int main() {
int i, m1, m2, n, num;
puts("\n");
scanf("%d",&n);
for(i = 0; i < n; i++) {
scanf("%d", &num);
if(i == 0) {
num = m1 = m2;
}
if(num > m1) {
m2 = m1;
m1 = num;
} else if(num > m2) {
m2 = num;
}
}
return 0;
}

我的标准输入:-950 -588 -169 -187 -445 400 -1

我必须获取标准输出:-169,但它显示标准输出:\n

注意:我想在没有数组的情况下解决这个问题。

最佳答案

声明:

num = m1 = m2;

是错误的,不会导致三个变量具有相同的值。您需要将 m1 和 m2 分配给 num。您正在覆盖之前读取的变量。将其更改为:

m1 = num;
m2 = num;

然后,打印出m2。

编辑:

正如其他人发现的那样,-1 表示输入结束。添加简单的 if 语句解决了问题,对于您的输入 -169 是第二大元素。
完整代码:

#include<stdio.h>
int main(){
int i, m1, m2, n, num;
puts("\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num);
if(i==0)
{
m1 = num;
m2 = num;
}
else if(num == -1) /* if -1 was read, then terminate the loop. */
{
break;
}
else if(num>m1)
{
m2 = m1;
m1 = num;
}
else if(num>m2)
{
m2=num;
}
}
printf("%d\n",m2);
return 0;
}

对于输入:

7
-950 -588 -169 -187 -445 400 -1

当前代码输出为-169。


另一个编辑:
好的,由于元素数量的 scanf,您的代码是错误的。将来如果您更清楚自己的问题将会很有帮助。我希望以下代码对您有用。

#include <stdio.h>

int main(void)
{
int curr, second, first;
scanf("%d", &curr);
second = curr;
first = curr;
while (1) {
scanf("%d", &curr);
if (curr == -1) {
break;
}
if (curr > first) {
second = first;
first = curr;
}
else if (curr > second) {
second = curr;
}
}
printf("%d\n",second);
return 0;
}

关于c - 在不使用数组的情况下从标准输入中查找第二大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493707/

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