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

搜索更多相关主题的帖子: C语言 数字 位数 设计 
2007-07-15 17:21
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
struct number
{
char old[10];
char new[10];
int n;
};

int main()
{
struct number a[5];
int n[5]={123,2,33,1006,12};
char tmp[10];
int size=5,i,len=0,j,temp;

for(i=0;i<size;i++)
{
sprintf(a[i].old,"%d\0",n[i]);
if(strlen(a[i].old)>len)
len=strlen(a[i].old);
}

for(i=0;i<size;i++)
{
sprintf(a[i].new,"%s\0",a[i].old);
for(j=0;j<len-strlen(a[i].old);j++)
{
strcat(a[i].new,"0\0");
}
a[i].n=atoi(a[i].new);
}

for(i=0;i<size;i++)
{
;// printf("%s\n",a[i].new);
}

for(i=0;i<size-1;i++)
{
for(j=i;j<size;j++)
{
if(a[i].n<a[j].n)
{
temp=a[j].n;
a[j].n=a[i].n;
a[i].n=temp;

strcpy(tmp,a[j].old);
strcpy(a[j].old,a[i].old);
strcpy(a[i].old,tmp);
}
}


}

for(i=0;i<size;i++)
{
printf("%s",a[i].old);
}
}

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-15 18:11
caishuzhou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-15
收藏
得分:0 
这个好象运行不了 !!!!!
2007-07-15 18:17
caishuzhou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-15
收藏
得分:0 
我试过了,不行请高手指点一下!!
2007-07-15 18:20
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
???不可能啊,我能运行啊,虽然我是在linux下,windows下也行,贴错误看看

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-16 12:50
wt3415032
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-18
收藏
得分:0 
好像是错了。。。。。
版主理解错了题的意思
2007-07-18 17:12
快速回复:[求助]:C语言设计!!
数据加载中...
 
   



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

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