查找数组中第二大的数(c语言)
#include<stdio.h> int flag=0; //标记数组内的内容全部相同 int findsecond(int a[],int len) { int max,secmax; int i; if (a[0]>a[1]) { max=a[0]; secmax=a[1]; } else { max=a[1]; secmax=a[0]; } for (i=2;i<len;i++) if (a[i]>max) { secmax=max; max=a[i]; } else if (a[i]>secmax ) secmax=a[i]; if (secmax==max) flag=1; //考虑这样的数组{10,10,10,10...}所有数据都相同的情况 return secmax; } int main() { int a[32]; int n,i; printf("input the number: "); scanf("%d",&n); for (i=0;i<n;i++) scanf("%d",&a[i]); int second=findsecond(a,n); if (flag==0) printf("%d ",second); else printf("there is no second number "); }
算法描述:max 与secmax,如果a[i]大于max,则secmax=max,max=a[i],随时保存最大的和第二大的值。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 百度网盘视频解析,获取真实源地址
- 下一篇: VC调用cmd进行交互(双管道)