求助一道pascal题

设有n个正整数,将他们连接成一排,组成一个最大的多位整数.例如:n=3时,3个整数13,312,343,连成的最大整数为:34331213。又如:n=4时,4个整数7,1... 设有n个正整数,将他们连接成一排,组成一个最大的多位整数.例如:n=3时,3个整数13,312,343,连成的最大整数为:34331213。又如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
程序输入:N
N个数
程序输出:连接成的多位数 
我要的pascal代码
展开
 我来答
阳光上的桥
2007-08-22 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65806
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
我简单说一下方法,希望对你有帮助:

#define MaxN 100

sort_str_desc(char *a[], int n)
{
/*本函数的功能:对字符串数组a的前n个元素按降序排序*/
int i,j,k;
char s[10];
for (i=0;i<n;i++) printf("a[%d]=%s\n",i,a[i]);
for (i=0;i<n-1;i++)
{
k=i;
for (j=i+1;j<n;j++) if (strcmp(a[j],a[k])>0) k=j;
if (k!=i) {strcpy(s,a[i]);strcpy(a[i],a[k]);strcpy(a[k],s);}
}
}

main()
{
int i,n, a[MaxN];
char *b[MaxN];
printf("n=?");scanf("%d",&n);
for (i=0;i<n;i++){
printf("a[%d]=",i);scanf("%d",&a[i]);
b[i]=malloc(10);
sprintf(b[i],"%d",a[i]);
printf("b[%d]=%s\n",i,b[i]);
}
sort_str_desc(b,n);
for (i=0;i<n;i++) printf("%s",b[i]);
}

以上程序验证通过,用PASCAL还要简单点,只是我没有环境验证,一下程序可能存在语法问题,麻烦你自己调试一下:

PROGRAM TEST;

CONST MAXN=100;

VAR
i,j,k,n: INTEGER;
a: ARRAY [1..MAXN] OF INTEGER;
b: ARRAY [1..MAXN] OF STRING;

PROCEDURE sort_str_desc;
VAR s: STRING;
BEGIN
FOR i:=1 TO n-1 DO
BEGIN
k:=i;
FOR j:=i+1 TO n DO IF b[j]>b[k] THEN k:=j;
IF k<>i THEN BEGIN s:=b[k]; b[k]:=b[i]; b[i]:=s; END;
END;
END;

BEGIN
WRITELN('n=');READLN(n);
FOR i:=1 TO n DO
BEGIN
WRITE('a[',i,']=');
READLN(a[i]);
b[i]:=STR(a[i]);{不同的PASCAL环境的系统转换函数可能不同,有的可能是IntToStr,反正目的是转换为字符串}
END;
sort_str_desc;
FOR i:=1 TO n DO WRITE(b[i]);
END.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式