| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 909 人关注过本帖
标题:组数问题
只看楼主 加入收藏
fyxcj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-29
收藏
 问题点数:0 回复次数:10 
组数问题

组数问题!
设有n个正整数(n<=20),将它们联成一排,组成一个最大的多位数。程序输入:n,程序输出:n个书连接成的多为位数。
以下是设计思路:
可以将问题这样变化一下:
比如我输入的是123,2,33,1006,12这几个数
我先找到最大的数字位数为四位,再将所有的数字变为四位数:
1230,2000,3300,1006,1200
然后进行排序
3300,2000,1230,1200,1006
这样将后面加上的0去掉的序列就是最大数字了
于是连成的最大的数字就是
332123121006
请哪位高手帮我写出这个程序!

搜索更多相关主题的帖子: 正整数 最大的 1230 
2007-06-29 19:02
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我先找到最大的数字位数为四位,再将所有的数字变为四位数:
1230,2000,3300,1006,1200
然后进行排序
3300,2000,1230,1200,1006
这样将后面加上的0去掉的序列就是最大数字了

这步可以换一下吧``

实际就是比较每一个数的第一位数的大小`染后排序``输出``

再思考下`

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-29 19:12
fyxcj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-29
收藏
得分:0 
以下是引用死了都要C在2007-6-29 19:12:18的发言:
我先找到最大的数字位数为四位,再将所有的数字变为四位数:
1230,2000,3300,1006,1200
然后进行排序
3300,2000,1230,1200,1006
这样将后面加上的0去掉的序列就是最大数字了

这步可以换一下吧``

实际就是比较每一个数的第一位数的大小`染后排序``输出``

再思考下`

那如果几个数第一位相等了怎么搞啊?

2007-06-29 19:22
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
相等后``可以比第2位啊`


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-29 19:34
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

把它们看成一整数来比较。


深山苦学C语言,终年不见外面世界。
2007-06-29 19:37
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我现在只遍了一点点
我明天下午来继续编``
明天上午要考试```
我现在要回去复习``


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-29 20:20
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
收藏
得分:0 

最后的1200是怎么变出来的 没看懂


我让我喜欢的人不开心     真没用
2007-06-30 07:55
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

问题已经解决```

程序代码:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int srsj ( int * ) ;
void tyws ( int *, int *b, int c ) ;
void shellsort ( int *, int *w, int n ) ;


int main ( )
{
int i, c ;
int s[20] ;
int b[20] ;

c = srsj (s) ; /*输入我们要输入的数据<=20个*/

tyws (s,b,c) ; /*将所以数转换为4位,不足的右边补上0*/

printf ("\n\n你输入的数为:\n"); /*将我们输入的数显示出来*/
for ( i=0; i<c; i++ )
printf ("%ld.", s[i]);

shellsort ( b,s,c ) ; /*进行排序操*/

printf ("\n") ;

printf ("输出结果为:\n") ; /*输出结果*/
for ( i=0; i<c; i++ )
printf ("%ld", s[i]);

getch();
return 0;
}


int srsj (int *s)
{
int i, c ;

printf ("请输入你想输入的数的个数:\n");
scanf (" %d", &c ) ;

system ("cls") ;

printf ("请输入你想输入的数:\n");
for ( i=0; i<c; i++ )
scanf (" %ld", &s[i]);

return c ;
}


void tyws(int *s, int*b, int c) /*根据数的位数补0*/
{
int i ;

for ( i=0; i<c; i++ )
{
if ( s[i] < 10 )
b[i] = s[i]*1000 ;
else if ( (s[i] >= 10) && (s[i] < 100) )
b[i] = s[i]*100 ;
else if ( (s[i] >= 100 ) && (s[i] < 1000 ) )
b[i] = s[i]*10 ;
else b[i] = s[i] ;
}
}


/*这是SHELL排序算法```我在里面加上了对原始输入数据的排序``这样就对原来我们输入和扩展后的数同时排序*/
/*LZ若是看不懂下面的算法``不要紧下来研究``现在只要知道`它是用来排序的就可以了*/
void shellsort(int *v, int *w, int n)

{
int gap,i,j,temp;


for (gap = n/2; gap > 0; gap /= 2)

for (i = gap; i < n; i++)

for (j=i-gap; j>=0 && v[j]<v[j+gap]; j-=gap)
{

temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;

temp = w[j];
w[j] = w[j+gap];
w[j+gap] = temp;

}
}



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-30 15:09
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
调试环境DEV++4.9.9.2

第一步:

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-30 15:10
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
回复:(fyxcj)组数问题
程序运行如下:

第一步:

图片附件: 游客没有浏览图片的权限,请 登录注册



第二步:


图片附件: 游客没有浏览图片的权限,请 登录注册


第三步:


图片附件: 游客没有浏览图片的权限,请 登录注册



OK``说实话`把我累安逸了````
我暂时找不到其他更简单的方法```不好意思啊``



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-30 15:14
快速回复:组数问题
数据加载中...
 
   



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

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