来源:
西安电子科技大学XDOJ在线C语言编程练习题50;
问题描述:
小明决定申请一个新的QQ号码,系统随机生成了若干个号码供他选择。小明的选号原则是:
1. 选择所有号码中各位数字之和最大的号码。
2. 如果有多个号码各位数字之和相同则选择数值最大的号码。
请你写一个程序帮助小明选择一个QQ号码。
解题思路:
1.定义一个数组a[n]用于存放待选的号码,定义另一个数组b[n]得到各个号码的各位和;
2.以b[n]为依据用沉底法排序,遇到b[n]相等时判断a[n],注意要实时记录角标;
3.输出排序后最后一个a[n];
代码实现:
#include<stdio.h>
int main(){
int count,max,b[100],i=0,j=0,k=0;
long a[100],n,x;
scanf("%d",&count);
for ( i = 0; i < count; i++)
{
scanf("%ld",&a[i]);
}
for ( j = 0; j < count; j++)
{
n=a[j];
b[j]=0;
while (n>0)
{
b[j]=b[j]+n%10;
n=n/10;
}
}
max=b[0];
x=a[0];
for ( k = 1; k < count; k++)
{
if (max<b[k])
{
max=b[k];
x=a[k];
}else if (max==b[k])
{
if (x<a[k])
{
x=a[k];
}
}
}
printf("%d",x);
return 0;
}