这道题刚开始想的是 分为三步 一是如果长度=8,那就直接打印字符串,如果长度<8,那就再字符串后面追加数字0,如果长度>8,那就先打印长度为8的字符,然后换行在打印剩下的字符,在补0,但是这种做法我还是没有实现出来而且似乎也太麻烦。?
接下来是我看别人的思路的
首先我们打印的每一行都是长度为8的字符串,所以我们没打印一行就要换行,看是否字符串长度大于8,如果长度大于8,还要在打印一行,这一行打印字符或者0。那我们仔细想一想什么时候打印0,什么时候打印字符呢,首先我们打印的字符长度肯定是等于字符长度,然后剩下的就补0.
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
while(scanf("%s",str)!=EOF) {
int len =strlen(str);
int i=0,j=0;
for(i=0;i<len;i+=8)//如果字符串超过长度8,那就需要在打印一行
{
for(j=0;j<8;j++)//一行要打印8个
{
if(j+i<len)//如果长度小于=8那就是打印第一行,超过8打印第二行,此时下一行还是从下标0开始
{//因为字符只有长度个,所以我们打印字符必须要等于长度个,剩余的都补0
printf("%c",str[i+j]);
}
else {
printf("%c",'0');//剩余的补0
}
}
printf("\n");//每次等于长度8就换行
}
}
return 0;
}
?
|