//原】C語言,數組怎樣在去除重復元素後,求最大值與次大值
#include<stdio.h>
int main()
{
int a[7];
printf("input seven numbers:");
for(int i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
int len=7;//5 5 2 5 5
//兩個for循環用來遍歷
for(int j=0;j<len;++j)
{
for(int m=j+1;m<len;++m)
{
if(a[j]==a[m])
{
//發現與第一個for中相同的元素後,采用"覆蓋法"刪除
for(int k=m+1;k<len;++k) //此處會出現寫法的分歧--根據k=m+1的寫法,可能為len-1或其他...
a[k-1]=a[k];
len--;//長度要跟上變化
--m; //因為刪除了一個元素,要與a[j]比較的數組元素的下標實際沒變但值已改變)
}
}
}
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("\n");
int temp;
for(int n=0;n<len;n++)
for(int p=n+1;p<len;p++)
if(a[n]<=a[p])
{
temp=a[n];
a[n]=a[p];
a[p]=temp;
}
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("MAX=%d,S_MAX=%d\n",a[0],a[1]);
return 0;
}
//運行結果
//input seven numbers:7 5 7 5 8 6 8
//7 5 8 6
//8 7 6 5 MAX=8,S_MAX=7
//Press any key to continue
本文出自 “Jean_Z的學習博客” 博客,請務必保留此出處http://7905490.blog.51cto.com/7895490/1299815