c - 编写一个程序,将三个整数作为输入,并打印第二大数字
问题描述
我试过这个程序取 3 个整数并打印第二大数字:
#include<stdio.h>
int main()
{
int a,b,c,max2;
printf("Enter 3 integers: ");
scanf("%d%d%d",&a,&b,&c);
max2=a;
if(a>b){
max2=b;
printf("")
}
return 0;
}
现在我被困在这里。我无法找到此代码背后的逻辑。我能做些什么?
解决方案
这不是您可以理解的逻辑,它不会给您正确的预期结果。
代码:
#include <stdio.h>
int main()
{
int a, b, c;
printf("Values: ");
scanf("%d%d%d", &a, &b, &c);
if(a>b && a>c)
{
if(b>c)
printf("2nd largest: %d", b);
else
printf("2nd largest: %d", c);
}
else if(b>c && b>a)
{
if(c>a)
printf("2nd largest: %d", c);
else
printf("2nd largest: %d", a);
}
else if(a>b)
printf("2nd largest: %d", a);
else
printf("2nd largest: %d", b);
return 0;
}
您应该比较所有三个变量以获得2nd largest
这些数字。
输出:
Values: 32 31 12
2nd largest: 31
解释:
首先选择任何变量并将其与其他两个变量进行比较,例如if(a>b && a>c)
,如果是true
,则表示两个变量a
中的largest
任何一个,b
并且c
是2nd largest
,所以在if(a>b && a>c)
块内有一个比较if(b>c)
,如果true
thenb
是第二大的,否则c
是第二大的. 同样,比较其他两个变量是否最大。例如else if(b>c && b>a)
和else if(c>a && c>b)
。
推荐阅读
- java - 如何在android中显示来自firebase的用户名和电子邮件
- c++ - 创建大小为其他两个矩阵大小的矩阵时超出范围
- mutex - 为什么临界区不能作为互斥体工作?
- python - python dicts of dicts out of python dicts
- php - 无法从所需 php 调用的基本 .php 访问变量
- php - 当似乎没有任何 EXIF 数据时,Windows 文件资源管理器如何知道照片的方向?
- openshift - 通过 lwip 嵌入式硬件连接到 openshift 应用程序
- amazon-cloudformation - Cloudformation 构建卡在“创建中” - 尝试添加它以使用特定的 SG
- python-3.x - 在 pylint 中遵守 R1705 的真正好处是什么?代码真的更安全吗?
- tensorflow - TF 对象检测 API 混合精度