题目如图,这是我的程序#include<stdio.h>#include<math.h>int main(){int n,i,sum,k,a[100],max;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}i=0;for(i=0;i<n;i++){while ( n!=0 ) { k=a[i]%10; sum=sum+k; a[i]/=10; if(a[i]==0) {break;} }if(i==0){max=sum;k=a[i];}else if(i!=0){if(sum>max){max=sum;k=a[i];}else if(sum==max){if(a[i]>k)k=a[i];}}}printf("%d",k);}
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int a[100],b[100],i,j,t,n;
printf("Want to how much input number?\nn=");
if(scanf("%d",&n)!=1 || n<1){
printf("Input error, exit...\n");
return 0;
}
for(i=0;i<n;scanf("%d",a+i++));//输入号码
for(i=0;i<n;i++)
for(b[i]=0,t=a[i];t;b[i]+=t%10,t/=10);
for(j=i=0;i<n;i++)
if(b[j]<b[i])
j=i;
for(i=0;i<n;i++)
if(b[j]==b[i] && j-i && a[i]>a[j])
j=i;
printf("The result is %d\n",a[j]);
return 0;
}
两点问题:
由于一直循环a[i]/=10,你的a[i]越来越小,直到等于0,你却把这个0赋给k,当然怎么也输出不对喽
你每次增加i进入循环后,sum没有清0,也就是说你把前面号码的数字之和也加到后面去了
这么说,该知道怎么改了吧