简单c语言,这个程序的问题在哪?十分感谢!
题目如图,我的程序如下,在我打完所有程序后,输入题目给的示例却不能得到正确答案。救救孩子吧!QAQ#include<stdio.h>#include<stdlib.h>i...
题目如图,我的程序如下,在我打完所有程序后,输入题目给的示例却不能得到正确答案。救救孩子吧!QAQ#include<stdio.h>#include<stdlib.h>int main(){int n,i,j,e,t,t1;int a[1000],a1,b1,c,d,b[1000];scanf("%d",&n);for(i=0;i<n;i++) {scanf("%d",&a[i]); }for(i=0;i<n;i++) {a1= a[i]/1000%10;b1= a[i]/100%10;c= a[i]/10%10;d= a[i]%10;b[i]=a1+b1+c+d;//计算各位数之和 }for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++)if(b[j]<b[j+1]) { t=b[j]; t1=a[j]; b[j]=b[j+1]; a[j]=a[j+1]; a[j+1]=t1; b[j+1]=t;//冒泡排序 }else if(b[j]=b[j+1])//按题目中“如果相等输出小的”进行排序 { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }}for(i=0;i<n;i++)printf("%d %d\n",a[i],b[i]);}
展开
2个回答
展开全部
原程序就一处错误。请把else if(b[j]=b[j+1])
改为else if(b[j]==b[j+1])就可以了。
其实,这个程序可以简化如下:
#include<stdio.h>
int main()
{ int n,i,j,t,t1;
int a[1000],b[1000]= {0};
scanf("%d",&n);
for(i=0; i<n; i++)
{ scanf("%d",&a[i]);
for(j=a[i]; j; j/=10)b[i]+=j%10;
}
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(b[j]<b[j+1]||b[j]==b[j+1]&&a[j]>a[j+1])
{ t=b[j];
t1=a[j];
b[j]=b[j+1];
a[j]=a[j+1];
a[j+1]=t1;
b[j+1]=t;//冒泡排序
}
for(i=0; i<n; i++)
printf("%d %d\n",a[i],b[i]);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询