查找最大值,最小值,以及第二大值

/*

  • 文件名:数组查找特定值.c
  • 功能描述:查找数组中的最大值,最小值,第二大值
    */
    #include <stdio.h>

#define NR 10 // 数组元素个数

/从主函数开始/
int main(int argc, char **argv)
{
int ar[NR];
int i;

fprintf(stdout, "请输入%d个整数:\n", NR);

/* 获取并检查用户输入 */
while (1)
{
    /* 循环获取NR个数据 */
    for (i = 0; i < NR; i++)
	{
	    if (fscanf(stdin, "%d", &ar[i]) != 1)
	    {
	        fprintf(stdout, "输入错误!请重新输入:\n");
    		while (getchar() != '\n'); // 丢弃多余非法字符
    		break;                     // 打破内层for循环
	    }
    }

    /* 检查是否获取到NR个数据 */
	if (i != NR)
	{
        continue;
	}
	else
	{
	    break;
	}
}

/* 查找最大值和最小值 */
int max, min;
max = ar[0];            // 假定第一个数为最大值
min = ar[0];            // 同时假定也第一个数为最大值

/* 从第二个数开始比较查找最值 */
for (i = 1; i < NR; i++)
{
    if (ar[i] > max)    // 最大值
	{
	    max = ar[i];
	}

	if (ar[i] < min)   // 最小值,不能使用else if,否则会跳过比较
	{
	    min = ar[i];
	}
}
fprintf(stdout, "最大值为:%d  最小值为:%d\n", max, min);

/* 接下来:查找第二大值 */
int second;

/* 先获取前两个数的第一大和第二大值 */
ar[0] > ar[1] ? (max = ar[0], second = ar[1]): \
                   (max = ar[1], second = ar[0]);

/* 从第2个数开始比较查找 */
for (i = 2; i < NR; i++)
{
	if (ar[i] > max)           // 查找最大值:目的是为了比较第二大值
	{
	    second = max;          // 先把最大值保存给第二大值
	    max = ar[i];
	}
	else if (second < ar[i])  // 比最大值小的数再看看是否大于第二大值
	{
	    second = ar[i];
	}
}
fprintf(stdout, "第二大值为:%d\n", second);

return 0;

}


本文来自 王廷云的博客 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/aiwangtingyun/article/details/79608981?utm_source=copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值