简单c语言,可以帮我看一下这个c语言问题出在哪里吗?谢谢!为什么我的程序输出不正确呢?

题目如图,这是我的程序#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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-05

两点问题:

    由于一直循环a[i]/=10,你的a[i]越来越小,直到等于0,你却把这个0赋给k,当然怎么也输出不对喽

    你每次增加i进入循环后,sum没有清0,也就是说你把前面号码的数字之和也加到后面去了

这么说,该知道怎么改了吧