0.前言
拿到题目可以先用解数学题的方式去寻找办法。
思路一: 对整型数组A[n]进行升序或降序,输出最后两个数的值或A[0]和A[1]的值。
思路二:直接进行循环比对找出最大值和次最大值。
{循环i从1到10,
A[i]与max、second_max的关系有三种:
大于max、介于两者之间、小于second_max
1.A[i]>max,最大值赋给次最大值,A[i]赋给最大值
2.A[i]<max且A[i]>second_max,A[i]赋给次最大值
3.A[i]<second_max,保持不变。}
1.思路1—参考代码
#include<iostream>
using namespace std;
int main()
{
/*设n为10,按升序用冒泡法排序10个数*/
int A[10]={1,3,4,6,45,23,1,7,0,8};
int a=-999999999;
/*确保max和second_max不会比A[n]数组中的最大值大*/
for (int i= 0; i<10; i++)
for(int j=0;j<9-i;j++)
if(A[j]>A[j+1] ) /*A[j]>A[j+1]改为A[j]<A[j+1]即为降序*/
{a=A[j];A[j]=A[j+1];A[j+1]=a; }
cout<<"max="<<A[9]<<endl;
cout<<"second_max="<<A[8]<<endl;
return 0;
}
2.思路2—参考代码
#include<iostream>
using namespace std;
int main(){
int max,second_max;
int A[10]={0,1,2,1,4,3,7,6,5,7};
max=second_max=A[0];
for(int i=1;i<10;i++)
{
if(A[i]>max)
{second_max=max;
max=A[i]; }
else
if(A[i]<max && A[i]>second_max)
second_max=A[i];
}
cout<<"max="<<max<<endl;
cout<<"second_max="<<second_max<<endl;
return 0;
}
3.授人以渔
代码中的数组A[n]和n可以是本就设置好的,同时也可以是在运行代码过程中手动输入内容,这样代码会更加灵活。
int max,second_max;
/*设置max为负数是为了让其足够小,以免数组中没有数可以超过它*/
max=second_max=A[0]; (或 max=-9999,second_max=-999;)
int n;
cin>>n; /*输入整型数组的个数*/
int A[n];
for(int i=0;i<n;i++) /*数组A[n]中n和A[n]有具体的值*/
cin>>A[i]; /*输入整型数组A[n]的值*/
完成+1 …