c语言中实现数组几个数求次大值
短信预约 -IT技能 免费直播动态提醒
c语言数组几个数求次大值问题
#include<stdio.h>
int main()
{
int a[] = { 7, 4, 9, 9, 6 };
int len = sizeof(a) / sizeof(int);//求数组元素个数
int max_subscript = 0;//设置最大值下标为0,为数组第一个数
int second_subscript = 1;//设置次大值下标为1,为数组第二个数
while (1)
{
for (int i = 0; i < len;i++)//从下标1(即第二个元素开始遍历)开始遍历
{
if (max_subscript == i)
{
continue;//跳过原来最大值的下标,直接开始i+1的循环
}
if (a[i]>a[max_subscript])//遍历的值a[i]比最大值都大那么此时的最大值为a[i],次大值为原来的最大值即a[max_subscript]
{
second_subscript = max_subscript;//先赋值次大值为原来的最大值
max_subscript = i;//赋值现在的最大值为a[i]
}
else
{
if (a[i] > a[second_subscript])
{
second_subscript = i;
}
}
}
if (a[max_subscript] != a[second_subscript])
{
break; //最大值和次大值不相等就跳出循环,
}
a[second_subscript] = 0;//相等就把次大值得值重置为0
}
printf("最大值a[max_subscript]=%d,次大值a[second_subscript]=%d\n", a[max_subscript], a[second_subscript]);
printf("最大值下标max_subscript=%d,次大值下标second_subscript=%d\n", max_subscript, second_subscript);
getchar();
return 0;
}
c语言输出数组中最大值和次大值
本题主要的得分点在怎么求数组中的最大值和次大值,方法有很多,最常见的就是对数组进行排序,可以很轻松得到最大值和次大值。本题采用另外一个思路,第一次先在数组中找到最大值,第二次查找剩下的最大值(排除掉最大值,不是删除)
另外比较困扰的一点就是怎么直接从带空格的输入中直接得到整型数字,而不是像本题一样先当字符串去接收,然后从字符串中转数字保存到另外的一个整型数组中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
int main()
{
// please write your code here
char oriInput[200] = {0};
int inputInt[100] = {0};
fgets(oriInput,200,stdin);
int len = strlen(oriInput);
int i=0,k=0;
int fimax=0,semax=0;
char *pStart = oriInput;
for(i=0; i<len; i++)
{
if(oriInput[i] == ' ')
{
oriInput[i] = '\0';
inputInt[k++] = atoi(pStart);
pStart = &oriInput[i+1];
}
}
inputInt[k] = atoi(pStart);
for(i=0; i<=k; i++)
{
if(fimax < inputInt[i])
fimax = inputInt[i];
}
for(i=0; i<=k; i++)
{
if(semax < inputInt[i] && inputInt[i] != fimax)
semax = inputInt[i];
}
if(fimax == semax)
semax = 0;
printf("%d %d",fimax,semax);
return 0;
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341