思路:
(1)获取字符串str,计算长度length. 定义一个零矩阵ling[8]={0},用于填补长度不足8的子串
(2)length=0 :原样输出str
length<8 :原样输出str,占了 0 到 length-1 位。然后用 ing矩阵的 length 到 7位补齐 0
length>=8 :倍数 n = length/8;
多余 d = length%8;
先输出完整的子段: for(i=1;i<=n;i++)
{
for(j=(i-1)*8;j<i*8;j++)
printf("%c",str[j]);
printf("%c",huiche); //题目答案要求加回车
}
{
for(j=(i-1)*8;j<i*8;j++)
printf("%c",str[j]);
printf("%c",huiche); //题目答案要求加回车
}
再输出残缺的字段: if (d>0)
{
for(j=n*8;j<n*8+d;j++)
printf("%c",str[j]);
for(j=d;j<8;j++)
printf("%d",ling[j]); //补齐0
}
{
for(j=n*8;j<n*8+d;j++)
printf("%c",str[j]);
for(j=d;j<8;j++)
printf("%d",ling[j]); //补齐0
}
程序:
# include <stdio.h>
# include <string.h>int main ()
{
char str[101],huiche='\n';
int ling[8]={0}; //用于填补长度不足8的子串
scanf("%[^\n]\n",str)>0;
int length=0,i,j,n,d;
length=strlen(str);
if (length==0)
printf("%s",str);
if (length<8) //length<8 :原样输出str,占了 0 到 length-1 位。然后用 ing矩阵的 length 到 7位补齐 0
{
printf("%s",str);
for(i=length;i<8;i++)
printf("%d",ling[i]); //补齐0
}
if(length>=8)
{
n=length/8; //倍数
d=length%8; //多余
for(i=1;i<=n;i++) //先输出完整的子段
{
for(j=(i-1)*8;j<i*8;j++)
printf("%c",str[j]);
printf("%c",huiche);//题目答案要求加回车
}
if (d>0) //再输出残缺的字段 ,并补齐0
{for(j=n*8;j<n*8+d;j++)
printf("%c",str[j]);
for(j=d;j<8;j++)
printf("%d",ling[j]); //补齐0
}
}
}