组数游戏关于去零操作的问题

c语言,组数游戏
我把一个复制到另一个里面
用被复制后的补零比较
最后比较出最大值
然后我不去零
直接输出另一个复制结构体里的补零前的数字行不
如果不行,请问我这个程序是怎样实现去零操作的

#include<stdio.h>//头文件 
#include<unistd.h>
#include<string.h>
#define N 20//宏定义N等于20
int max = 0;//定义变量并初始化
void getnum();
void tuozhan();
void paixu();   /*函数的声明*/
void chuling();
void shuchu();
    int n, tmp, m, i, j;//定义变量
    struct
{
 char data[20];
 char ext_data[20];/*结构体*/
}Elem[N], ti;//定义结构体数组和变量

int main()//主函数以及函数的调用
{
 printf(" ************************************\n");
 printf("          欢迎来到组数游戏            \n");
 printf(" ************************************\n\n");
 printf("请输入你需要输入的整数个数(小于20)\n");
 getnum();
 tuozhan();//函数的调用
 paixu();
 shuchu();
 return 0;//返回值为零
}


void getnum()//获取数值以及求出最大位数
{
 int i;
 scanf("%d", &n);//获取整数个数
 if (n > 20)
 {
  printf("你输入的数字大于20\n");
 }
 for (i = 0; i < n; i++)
 {
  printf("请输入第%d个整数\n", i + 1);
  scanf("%s", Elem[i].data);
  strcpy(Elem[i].ext_data, Elem[i].data);
  tmp = strlen(Elem[i].data);
  if (tmp > max)
  {
   max = tmp;
  }
 }
}


void tuozhan()//计算拓展数
{
 for (i = 0; i < n; i++)
 {
  tmp = strlen(Elem[i].ext_data);//计算字符串的长度不含'\0'
  /*利用for循环对Elem[i].ext_data[j]进行补零*/
  for (j = tmp; j <= max; j++)
  {
   Elem[i].ext_data[j] = '0';
  }
  Elem[i].ext_data[max] = '\0';//给Elem[i].ext_data[j]增加字符串结束标志
 }
}


void paixu()//对于Elem[i].ext_data[j]进行排序
{
 /*利用冒泡排序*/
 for (i = 0; i < n; i++)
 {
  for (j = 0; j < n - 1; j++)
  {
   if (strcmp(Elem[j].ext_data, Elem[j + 1].ext_data) < 0)//利用strcmp进行比较字符串一.小于字符串 二.返回负数
   {
    memcpy(&ti, &Elem[j], sizeof(ti));
    memcpy(&Elem[j], &Elem[j + 1], sizeof(ti));/*利用内存复制函数进行交换利用字节数*/
    memcpy(&Elem[j + 1], &ti, sizeof(ti));
   }
  }
 }
}


void shuchu()
{
 printf("输出的最大数为:");
 for (i = 0; i < n; i++)
 {
  printf("%s", Elem[i].data);//利用for循环将Elem[i].data数据输出
 }
 printf("\n");
}

话说,组数游戏怎么玩的?
1.输入数字的大小,比如10;
2.输入10个数;
3.将这10个数位数对齐?
4.将对齐后的数排序?
5.遍历输出这10个数?全输出了,好像和输出最大值没什么关系
另:为什么不用数字,而要用字符串进行大小比较?

简单测试了一下,从输出结果来看,你这样做是可以的
只是由于你使用的是字符串形式进行结果的输出,如果需求是输出整数类型(如int)的结果,就比较麻烦了,还得把字符串连接在一起转化成整数