题目描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
题目来源
输入描述
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
输入:
abc
复制
输出:
abc00000
思路
这道题我用笨办法将字符数组长度取余小于8就循环补0
然后分段输出
具体实现
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
int main() {
char c[100];
string q = "0";
char* l = &q[0] ;
cin >> c;
if (c == "") return 0;
int i = strlen(c);
int j = i % 8;
if (j != 0) {
for (int k = 0; k < (8 - j); k++) {
strcat(c, l);
}
i = i + 8 - j;
}
int m = 0;
for (int n = 0; n < i / 8; n++) {
int p = 0;
while (p < 8) {
printf("%c", c[m++]);
p++;
}
printf("\n");
}
return 0;
}
时间复杂
双循环有一层为常数级,所以为O(n)
小结
这道题我看其他人用cout写出来的十分简洁,需要好好研究一下,进行进一步学习