/*
华为在线编程题目:连续输入字符串(个数为N,长度不大于100,字符串间按空格分隔),请按长度为8拆分每个字符串
后输出到新的字符串数组,输出的字符串按升序排列。长度不足8补0;
例如:
输入:2 abc 123456789
输出:12345678 90000000 abc00000
解题思路:1.init_str:读取输入数据,保存,并估计拆分后字符串个数;
2.get_str: 得到拆分后字符串
3.sort_str: 排序
4.print_str: 输出排序后字符串
注意:
*/
#include
#include
#include
int init_str(int N, char str[][100]); // 读取并保存字符串,估计拆分后字符串个数
void get_str(int N, char str[][100], char str1[][9]); // 得到拆分后字符串
void sort_str(int total_num, char str1[][9]); //排序
void print_str(int num, char str[][9]); //输出
int main()
{
int N;
scanf("%d", &N);
char str[N][100];
int total_num ;
total_num = init_str(N, str);
char str1[total_num][9];
get_str(N, str, str1);
sort_str(total_num, str1);
print_str(total_num, str1);
system("pause");
return 0;
}
/* input: N = num of input str
* str = str array
* output: num of split str */
int init_str(int N, char str[][100])
{
int i;
int len;
int num;
int total_num = 0;
for(i=0; i
scanf("%s", str[i]);
len = strlen(str[i]);
if((len%8)==0)
{
num = len/8;
}
else
{
num = len/8+1;
}
total_num += num;
}
return total_num;
}
/* input: num = num of print str
* str = str array*/
void print_str(int num, char str[][9])
{
int i;
for(i=0; i
printf("%s\n", str[i]);
}
}
/* input: str = str array before split
* str1 = str array after split
* N = num of input array*/
void get_str(int N, char str[][100], char str1[][9])
{
int ind = 0;
int i,k;
int len;
for(i=0; i
len = strlen(str[i]);
for(k=0; k
str1[ind][k%8] = str[i][k];
if((k+1)%8==0)
{
str1[ind][8] = '\0';
ind++;
}
}
if(len%8!=0)
{
for(k=len%8; k<8; ++k)
{
str1[ind][k] = '0';
}
str1[ind][k] = '\0';
}
ind++;
}
}
/* input: str1 = str array after split
* total_num = num of sorted array*/
void sort_str(int total_num, char str1[][9])
{
int i,j;
char temp[9] = {'0'};
for(i=0; i
for(j=i+1; j
if(strcmp(str1[i],str1[j])>0)
{
// for(k=0; k<8; ++k) // pix to pix
// {
// temp = str1[i][k];
// str1[i][k] = str1[j][k];
// str1[j][k] = temp;
// }
strcpy(temp,str1[i]); // temp must init firstly(then copy), char *temp = NULL is wrong.
strcpy(str1[i],str1[j]);
strcpy(str1[j],temp);
}
}
}
}