华为机考HJ4字符串分隔C语言题解

华为机考HJ4字符串分隔C语言题解

好家伙,今天的while循环检测文件末尾又好使了。
把白给打在公屏上。


主要思路就是求余的花样使用。
首先把字符串数组里的内容全部放入新的数组。
新的数组每满八个就会刷新一次。
这里主要利用的是旧的数组的角标对8求余作为新数组的角标。
特别注意的是第0个字符,0对8求余为0,但开头不应该输出回车,所以应该设置条件排除。
得到其余的求余为0的角标后正常输出回车。

其次同样利用对8求余补0。
一开始我以为数组的初值都为0,但忘了这是字符数组,大意了。


一个每天使用单片机的人碰上这种数据类型的题,总是容易混淆。。。
把白给打在公屏上。
希望大家都能拿到offer。


#include
#include


//检测字符串长度,将字符串长度对8求余。
//将数组角标对8求余的结果作为新字符串的角标并放入

int len;
char str[101],new[101];
int extra,add,des,i,count=0,j;
int main()
    
{
while(scanf("%s",str)!= EOF)
 {
len = strlen(str);
for( i = 0; i < len ;++i )   //注意区分i++与++i 
{
    new[i%8] = str[i];
    
    if((i%8)==0 && i> 0)
    {
        printf("\n");
    }
    printf("%c",new[i%8]);

 }   
    
    while(len%8)//补0

        {
            printf("0");
            ++len;
        }
     printf("\n");
    

 }
 return 0;
}

你可能感兴趣的:(华为机考,c语言,字符串)