按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
分析思路:
1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,再length=length-N;
2.再次循环判断与要输出位数N的大小,如果小于N的话,输出length个字符和n-length个0字符,即 然后在字符串末尾补(N-length%N)个0
3.重复循环直到length<0。
代码:
#include <iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
void resolve(char *str,int length,int N){
//int length=strlen(str); //获得字符串的长度length
char strtemp[255];
while(length>0){ //循环直到length<0
if (length>=N) //大于N,直接printf前N位字符
{
int i;
for (i=0;i<N;i++)
{
strtemp[i]=*str;
str++;
}
strtemp[i]='\0'; 记得添加\0
}
else //小于N,输出length个字符和n-length个0字符
{
int i;
for (i=0;i<length;i++)//输出length个字符
{
strtemp[i]=*str;
str++;
}
for (i=length;i<N;i++)//输出n-length个0字符
{
strtemp[i]='0';
}
strtemp[i]='\0';
}
cout<<strtemp<<" ";
length-=N;//length=length-N;
}
}
int main(){
int M,N;
cin>>M>>N;
char str[255];
while (M,N)//判断其值不为空
{
for (int i=0;i<M;i++)
{
scanf("%s",str);
int length=strlen(str); //获得字符串的长度length
resolve(str,length,N);
}
}
return 0;
}