⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 组数游戏.txt

📁 组数游戏
💻 TXT
字号:
老师有个题目要做,急啊~~~~~ 
设有N个正整数(N<20),将它们连成一排,组成一个最大的多位数。程序输入:N,程序输出:N个数连接成的多位数。 
【提示】:(老师告诉我们的提示) 
设计思路: 
比如我们输入的是 123 2 33 1006 12 这样几个数 
我们先找出最大的数字的位数为四位,在将所有的数字变成四位数: 
1230 2000 3300 1006 1200 
然后从大到小排序:3300 2000 1230 1200 1006 
这样将后面加上的0去掉的序列就是最大的数字:332123121006
#include "stdio.h" 

typedef struct 
{ 
int num; 
int ws; 
int z_num; 
}NODE; 
NODE dig[22]; 
int n; 
NODE max; 
int getws(int a) 
{ 
int r=0; 
while(a!=0) 
{ 
r+=1; 
a/=10; 
} 
return r; 
} 
void getnum() 
{ 
int i=0; 
printf("input n:"); 
scanf("%d",&n); 
for(i=1;i<=n;i+=1) 
{ 
printf("input the %d number:",i); 
scanf("%d",&(dig[i].num)); 
dig[i].ws = getws(dig[i].num); 
if(dig[i].num>max.num) 
max=dig[i]; 
} 
} 

void fill_zero() 
{ 
int i; 
for(i=1;i<=n;i+=1) 
{ 
for(;dig[i].ws<max.ws;) 
{ 
dig[i].num*=10; 
dig[i].ws+=1; 
dig[i].z_num+=1; 
} 
} 
} 
void sort() 
{ 
int i; 
int j; 
NODE tmp; 
for(i=1;i<=n;i+=1) 
{ 
for(j=1;j<n;j+=1) 
{ 
if(dig[j].num<dig[j+1].num) 
{ 
tmp=dig[j]; 
dig[j]=dig[j+1]; 
dig[j+1]=tmp; 
} 
} 
} 
} 
void back() 
{ 
int i; 
for(i=1;i<=n;i++) 
{ 
while(dig[i].z_num>0) 
{ 
dig[i].num/=10; 
dig[i].z_num-=1; 
} 
} 
} 
void print() 
{ 
int i; 
for(i=1;i<=n;i++) 
printf("%d",dig[i].num); 
} 
main() 
{ 
getnum(); 
fill_zero(); 
sort(); 
back(); 
print(); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -