【C语⾔】之实现数组中查最⼤值、最⼩值和第⼆⼤值/*
* ⽂件名:数组查特定值.c
* 功能描述:查数组中的最⼤值,最⼩值,第⼆⼤值
* 编辑⼈:王廷云
* 编辑⽇期:2017-12-12
*/
#include<stdio.h>
#define    NR    10 // 数组元素个数
/*从主函数开始*/
int main(int argc,char**argv)
{
c语言数组最大值最小值
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);
return0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。