題目要求:輸入至少兩個整數,求最大值和第二大值
思路:先定義兩個變量max1和max2分別記錄最大值和第二大值,再定義個變量定義輸入計數,是第幾個數字輸入了
如果輸入第一個數字,直接將它記錄爲最大值
如果輸入第二個數字,先與第一個數字比較,如果大於第一個,則將其記錄爲最大值,第一個數字記錄爲次大值;如果小於第一個,直接將其記錄爲次大值
以上,最大值和次大值的初始值都有了,後邊輸入第三個以上的數字,同樣的道理,如果比最大值大,則記錄爲最大值,之前的最大值記錄爲次大值;如果比最大值小比次大值大,則記錄爲第二大值,如果比前邊兩個值都小,直接丟棄。
按照以上思路,整體代碼如下:
#include
using namespace std;
int main()
{
int max1=0,max2=0,time=0,n=0;
while(scanf("%d",&n)!=EOF)//輸入完畢後ctrl+z然後回車,結束循環
{
++time;
if(time==1)
{
max1=n;
}
else if(time==2)
{
if(n>max1)
{
max2=max1;//順序不能顛倒,否則max1和max2的值相同了
max1=n;
}
else
{
max2=n;
}
}
else
{
if(n>=max1)
{
max2=max1;//順序不能顛倒,否則max1和max2的值相同了,先將最大值保 存爲次大值,後將新值保存爲最大值
max1=n;
}
else if(n>max2)
{
max2=n;
}
}
}
printf("%d,%d",max1,max2);
return 0;
}