简单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]);} 展开
 我来答
听不清啊
高粉答主

2019-11-20 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

原程序就一处错误。请把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]);

}

路过者天蝎96
2019-11-20 · TA获得超过3743个赞
知道大有可为答主
回答量:3573
采纳率:79%
帮助的人:2444万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式