gpt4 book ai didi

c - 找出第二大数

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:54 25 4
gpt4 key购买 nike

是的,已经有很多人讨论过这个问题,但这个问题似乎有点特别。程序应该从用户输入的五个数字中找出第二大的数字。我们不能既不使用 loops 也不使用 if 语句。也不能使用 arraysgoto's,但可以使用三元运算符。 I/0 的样本:

输入:34 ​​-52 87 -12 20 输出:34

输入:-87 52 87 87 20 输出:87

如您所见,用户可以输入两个相同的数字,程序应该可以这样处理。这是 C 语言编程。

#include <stdio.h>
#include <stdlib.h>


int main(void)
{

int i1, i2, i3, i4, i5;
int max, second_max;

scanf("%d %d %d %d %d", &i1, &i2, &i3, &i4, &i5);

max = i1;
max = (i2 > max) ? i2 : max;
max = (i3 > max) ? i3 : max;
max = (i4 > max) ? i4 : max;
max = (i5 > max) ? i5 : max;

second_max = i1;
second_max = (i1 > second_max && i1 < max) ? i1 : second_max;
second_max = (i2 > second_max && i2 < max) ? i2 : second_max;
second_max = (i3 > second_max && i3 < max) ? i3 : second_max;
second_max = (i4 > second_max && i4 < max) ? i4 : second_max;
second_max = (i5 > second_max && i5 < max) ? i5 : second_max;




printf("\nmax: %d", max);
printf("\nsecond_max : %d", second_max);




return 0;
}

在这里我可以找到所有内容,当涉及到第二个输出样本时,它失败了。我有编程经验,但从早上开始就无法解决这个问题

最佳答案

显然,如果可以对数字进行排序,问题就很容易解决。那么如何仅使用三元运算符对数字进行排序呢?答案被称为 sorting network .

代码如下:

#include <stdio.h>

void swap( int *a, int *b )
{
int x = *a <= *b ? *a : *b;
int y = *a <= *b ? *b : *a;
*a = x;
*b = y;
}

int main( void )
{
int a = 1, b = 9, c = 3, d = 8, e = 3;

swap( &a, &b );
swap( &c, &d );
swap( &b, &e );
swap( &a, &b );
swap( &d, &e );
swap( &a, &c );
swap( &c, &d );
swap( &b, &c );
swap( &c, &d );

printf( "%d %d %d %d %d\n", a,b,c,d,e );
}

数字排序后,第二大的数字是d

请注意,如果您不能使用子例程和/或指针,则只需复制 swap 函数的主体并将其粘贴到 main 中九次。然后根据需要更改字母。玩得开心。

关于c - 找出第二大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673059/

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