转载并注明出处,原文地址:http://blog.csdn.net/powerwoo25/article/details/47871979
补充一道2015年华为校园招聘机试题(字符串处理)
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
思路: 每读一条字符串的时候,对字符串进行分割,分割成“需要完整输出”的部分跟“需要补0输出”的部分,然后逐段输出原字符串与补全0
转载并注明出处,原文地址:http://blog.csdn.net/powerwoo25/article/details/47871979
#include <cstdio>
#include <cstring>
char *PrintStr(char *str, int len)
{
if(str == NULL || len <= 0)
{
perror("Invalid print parameters!");
return NULL;
}
for(int i = 0; i < len; i++)
{
printf("%c", *str++);
}
printf("\n");
return str;
}
void Solve(char *arr, int pLen)
{
if(arr == NULL || pLen <= 0)
{
perror("Invalid parameters!");
return;
}
int len = strlen(arr);
int times = len / pLen;
int left = len - pLen * times;
while(times--)
{
arr = PrintStr(arr, pLen);
}
for(int i = 0; i < pLen; i++)
{
(i < left) ? printf("%c", *arr++) : printf("0");
}
printf("\n");
}
int main()
{
int strCnt, arrLen;
char inputArr[100];
scanf("%d,%d", &strCnt, &arrLen);
while(strCnt--)
{
scanf("%s", inputArr);
Solve(inputArr, arrLen);
}
return 0;
}