📄 n个正整数,将他们连接成一排,组成一个最大的多位整数.txt
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
void tc(char **a,int n,int maxlen) ;
void pp(char **,int,int);
int main(int argc, char* argv[])
{ int n,i,len=0,ml=0;
char **c=NULL,t[80];
scanf("%d",&n);
c=realloc(c,n*sizeof(char *));
assert(c!=NULL);
for (i = 0; i<n; i++)
{
scanf("%s",t);
c[i]=malloc(strlen(t)*sizeof(char));
assert(c[i]!=NULL);
strcpy(c[i],t);
len+=strlen(c[i]);
ml=(ml<(int)strlen(c[i]))?strlen(c[i]):ml;
}
tc(c,n,ml);
pp(c,n-1,0);
system("pause");
return 0;
}
void pp(char **a,int n,int sl)
{
int i,p,o;
char *b;
for (i = 0; i<=n-1; i++)
{
o=i;
for (p=i+1; p<=n; p++)
if (strcmp(a[o],a[p])<0) o=p ;
if (o!=i)
{
b=a[o];
a[o]=a[i];
a[i]=b;
}
}
for (i=0; i<=n; i++)
{
for (p=0; p<(int)strlen(a[i]); p++)
{
if (a[i][p]=='a')
{
a[i][p]='\0';
break;
}
}
printf("%s",a[i]);
}
putchar('\n');
}
void tc(char **a,int n,int maxlen)
{
int i,p;
for (i=0; i<n; i++)
if ((int)strlen(a[i])<maxlen)
for (p=strlen(a[i])-1; p<maxlen; p++)
strcat(a[i],"a");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -