山东理工ACM 1188 C语言实验——各位数字之和排序

这篇博客主要展示了如何使用C语言实现一个算法,该算法读取一系列整数,计算每个数的各位数字之和,然后根据这些和进行排序。通过一个while循环接收输入,计算每个数的和并存储在新的数组中。之后使用冒泡排序法对和进行排序,同时保持原始数组的对应关系。最后输出排序后的数字序列。
摘要由CSDN通过智能技术生成

http://acm.sdut.edu.cn/judgeonline/showproblem?problem_id=1188

#include<iostream>
using namespace std;
int main()

 int n,sum,a[100],sm[100],i,j,k,t;
      while(cin>>n)
    {
         if(n==0)  break;
  
        for(i=1;i<=n;i++)
       {
         cin>>a[i];
         sum=0;
         sm[i]=a[i];
        while(sm[i]) //求和
       {
         sum=sum+sm[i]%10;
         sm[i]=sm[i]/10;
       }               //a[i]对应数各位数字求和
      sm[i]=sum; //和赋给sm【i】
   
  }
     for(i=1;i<=n;i++) //和排序
  {
    k=i;
    for(j=i+1;j<=n;j++)
     if(sm[j]<sm[k])
      k=j;
     if(k!=i)
     {
      t=a[i];a[i]=a[k];a[k]=t;
      t=sm[i];sm[i]=sm[k];sm[k]=t; //当数a【i】的位置变化时,对应和sm【i】也应变化
     }
  
  }
 
  for(i=1;i<=n;i++)
   cout<<a[i]<<" ";
  cout<<endl;
 }
 return 0;
  
}
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值