C语言最大和次大

来源:百度知道 编辑:UC知道 时间:2024/06/21 20:14:25
Problem Description

输入n和n个各不相等的整数(1<n<100),求最大和次大元素的序号.n为0时测试结束.
Sample Input
5 1 2 3 4 5
3 12 4 5
6 2 4 6 -8 0 1
0
Sample Output
5 4
1 3
3 2

#include<stdio.h>
void main()
{
int i,t1,t2,n,num,max1,max2;
scanf("%d",&n);
while(n!=0)
{
max1=max2=0;
t1=t2=0;
for(i=1;i<=n;i++)
{
scanf("%d",&num);
if(num>max1)
{
t2=t1;
t1=i;
max2=max1;
max1=num;
}
else if(num>max2)
{
max2=num;
t2=i;
}
}
printf("%d %d\n",t1,t2);
scanf("%d",&n);
}
}
基本思想:先找第一大的,并用t1保存它的位置,如果某数比第一大还大,则第一大的就成为第二大的,则将相应的第一大变为那个数;
并且序号也发生改变 本程序中t1 t2 分别保存两个序号,还要注意一下,如果一开始就找到了一个最大的,那找次大的就相当于从剩下的找一个最大的,就是else 语就的起作用了

#include<stdio.h>

int main(){

int n,max,max2,t,i,maxIndex,max2Index;

scanf("%d",&n);

while(n){

scanf("%d",&max);
maxIndex = 1;

scanf("%d",&max2);

if(max2>max){
maxIndex =