| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:出问题了。。。
只看楼主 加入收藏
wt3415032
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-18
收藏
 问题点数:0 回复次数:1 
出问题了。。。
要求]
设有n个数(n<=20),将它们联成一排,组成一个最大的多位数.程序输入:n,程序输出:个联接成的多位数.
[提示]
以下是设计思路:
可以将问题这样变化一下:
比如我输入的是 123 2 33 1006 12 这样几个数字
我首先找出最大的数字的位数为四位,再将所有得数字变成四位数:
1230 2000 3300 1006 1200
然后进行排序
3300 2000 1230 1200 1006
这样将后面加上的0去掉的序列不就是最大数字吗?
于是最大数字就是
332123121006

搞出来的程序有点问题。数字一输多了就没办法正常运行了。大虾们帮忙看一下。谢谢~
main()
{
int i,j,m,t,n,f=1,d=1,max,a[20],c[20],e[20];
printf("the number of n=");
scanf("%d",&n);
if(n>20&&n<1)printf("error");
printf("input the number");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<n;i++)
{
if(max<a[i])max=a[i];
}
printf("max=%d\n",max);
/*求出数组a中元素的最大值*/
do
{
if(( max/10)!=0)
{
max/=10;
f++;
}
}
while((max/10)!=0);printf("f=%d\n",f);
/*计算出最大值的位数*/
for(i=0;i<n;i++)
{
e[i]=a[i];c[i]=a[i];
do
{
if((c[i]/10)!=0)
{
c[i]/=10;
d++;
}
}
while((c[i]/10)!=0);

for(m=0;m<f-d;m++)
e[i]=e[i]*10;
}
for(i=0;i<n;i++)printf("e=%d\n",e[i]);
printf("d=%d\n",d);
/*把与数组a相同的数组c中的元素变为与最大值位数相同的数组e*/

for(j=0;j<n-1;j++)

for(i=0;i<n-j;i++)
if(e[i]<e[i+1])
{t=e[i];e[i]=e[i+1];e[i+1]=t;
t=a[i];a[i]=a[i+1];a[i+1]=t;}
/*将数组e中的元素从大到小排序,而数组a与其成为相对应的顺序*/
for(i=0;i<n;i++)
printf("%d",a[i]);

}

2007-07-20 19:33
岳C
Rank: 1
等 级:禁止发言
帖 子:354
专家分:0
注 册:2007-7-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2007-07-20 21:54
快速回复:出问题了。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023695 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved