题目
连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入输出
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
示例:
输入:
abc
123456789
输出:
abc00000
12345678
90000000
解法一
本人直观解法
#include<iostream>
#include<string>
using namespace std;
int main() {
string str[2];
int size;
char c;
for (int j = 0; j < 2; j++) {
cin >> str[j];
}
for (int j = 0; j < 2; j++) {
size = str[j].size();
//size不断减8 直到size<8
int i = 0;
while (size >= 8) {
for (int k = 0; k < 8; k++) {
printf("%c", str[j][k+i]);
}
printf("\n");
size = size - 8;
i += 8;
}
//字符串长度为8的倍数 size为0 则不处理
//size>0则输出且补零
if (size >0) {
for (int k = 0; k < 8; k++) {
if (i < str[j].size()) {
printf("%c", str[j][i]);
i++;
}
else {
printf("0");
}
}
printf("\n");
}
}
return 0;
}
解法二
使用substr函数
#include<iostream>
#include<string>
using namespace std;
void func(string str) {
while (str.size() > 8) {
cout << str.substr(0, 8) << endl;
str = str.substr(8);
}
if (str.size() > 0) {
cout << str.append(8 - str.size(), '0') << endl;
}
}
int main() {
string str[2];
cin >> str[0];
cin >> str[1];
func(str[0]);
func(str[1]);
return 0;
}