求助一道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代码 展开
程序输入:N
N个数
程序输出:连接成的多位数
我要的pascal代码 展开
展开全部
我简单说一下方法,希望对你有帮助:
#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.
#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.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询