题目意思:输入一个多位数,求出最大及其次大数位相加的结果。
解题思路:1 求出每个数位的数,并记录下来。
2 比较每一位数的大小,求出最大的数。
3 在最大数的基础上,求出次大的数。
4 将最大的数与次大的数相加得出结果。
代码:
#include<iostream>
using namespace std;//使用namespace
int a,b,max_b,sec;//设整数型变量a,b,max_b,sec
int main()//主函数的起始
{
cin>>a;//输入变量a,a是题目中的多位数
while(a>0)//循环,条件为题目中的多位数大于0
{
b=a%10;//求出多位数a的最后一个数位的数,得出变量b(以便计算最大值与次大值)
a=a/10;//去掉多位数a的最后一位,成为新变量a(以便计算下一次的变量b)
if(max_b<b)//如果变量max_b(指最大的数)小于变量b(指变量a的最后一位)代表最大值小于变量b,即使用新量b,就执行下面语句
{
sec=max_b; //当变量b大于变量max_b时,把变量max_b的值赋给变量sec,相当于sec得到一个新的值(即次大值)但有时变量max_b大于变量b,所以此语句不是每次都运行
max_b=b; //这时,把变量b的值赋给max_b,相当于max_b得到一个新的值(即最大值)
}
else//如果上方条件不符合(变量max_b不小于变量b)代表现最大值大于新值b
{
if (sec<b)//在此条件下,如果变量sec(指次大的数)的值小于b,指次大值小于b,使用新量b,执行下面语句
{
sec=b;//当达到上方条件时(变量sec小于变量b),将变量b的值赋给变量sec,相当于次大值得到新量
}
}
}
cout<<max_b+sec<<endl;//输出变量max_b与变量sec的和
return 0;//结束主函数的运行
}