基于visual Studio2013解决C语言竞赛题之0519最大值
题目
解决代码及点评
/************************************************************************/ /* 19. 求N个数中的最大值,最大值出现的次数,然后求出次大值(次大值一定存在) */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int FindMax19(int * arr,int num) // 求最大值 { int max=0; for(int i=1;i<num;i++) // 循环查找最大值 { if (arr[max]<arr[i]) { max=i; } } return arr[max]; } int FindSMax19(int * arr,int num) // 查找次最大值,一样通过循环去查找 { int max=arr[0]; int two=arr[0]; for(int i=1;i<num;i++) { if (max<arr[i]) // 当发现一个更大的数时,要保存最大数和第二大的数 { two=max; max=arr[i]; } else if (arr[i]>two&&arr[i]<max) // 或者某一个数只是大于第二大的数,那么就只要更换第二大的就行 { two=arr[i]; } } if (two==max) { printf("没有次大值"); return -1; } return two; } void main() { int arr[10]={0}; for (int i=0;i<10;i++ ) { arr[i]=rand()%20; } for (int i=0;i<10;i++ ) { printf("%5d",arr[i]); } int num=0; int max=FindMax19(arr,10); for (int j=0;j<10;j++) { if (arr[j]==max) { num++; } } printf("最大值为%d出现次数为:%d",max,num); printf("次大值为:%d",FindSMax19(arr,10)); system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果