题目:
题目描述:
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入多次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
示例1
输入
abc
123456789
输出
abc00000
12345678
90000000
结果:
方法一:
方法二:
解题思路:
方法一:
1,scanf直接获取一组字符串是为了节省数组的空间。对于我们而言,只要有8个就可以。
2,按照顺序获取每一个字母,并且存储到对应的要输出的数组的位置。
3,判断如果获取到\n了,说明已经输入完毕一组字符串,那么判断此时位于8个位置的第几个:
如果是第一个,说明上一个符串打印完刚好是8.
如果不是第一个,那么久在后面的数组中补充0.
方法二:
直接获取一组字符串,一个个输出的时候,到第八个则打印一个换行。
代码:
方法一:
#include <stdio.h>
#include <string.h>
int main() {
int count = 0;
char ch;
char arr[8] = {};
while(scanf("%c", &arr[count]) != EOF) {
if(arr[count] == '\n') {
while(count < 8 && count != 0) {
arr[count++] = '0';
}
}
else {
count++;
}
if(count == 8) {
printf("%s\n", arr);
memset(arr, '\0', 8);
count = 0;
}
}
return 0;
}
方法二:
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[101] = {""};
int len, i, n;
while(scanf("%s", arr) != EOF)
{
len = strlen(arr);
n = len % 8;
if(len == 0)
continue;
for(i = 0; i < len; i++)
{
printf("%c", arr[i]);
if((i+1) % 8 == 0)
puts("");
}
if(n == 0)
continue;
for(i = 0; i < (8-n); i++)
putchar('0');
puts("");
memset(arr, '\0', 101);
}
return 0;
}