【华为机试】——HJ5 进制转换😎
- 前言🙌
- HJ4 字符串分隔
- 方法一:巧用scanf的输入格式
- 方法二:循环+分解思想
- 总结撒花💞
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
前言🙌
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【华为机试】——HJ4 字符串分隔的题目解析。
HJ4 字符串分隔
题目描述:
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
示例1
输入:
abc
输出:
abc00000
方法一:巧用scanf的输入格式
scanf输入格式%ns,表示只读入字符串的前n个字符,然后指针会自动跳到下一个字符位置,当循环再次读入时,又会读入字符串的前n个字符到缓冲区覆盖之前的n个字符。不够n位就读取结束。
#include <stdio.h>
#include<string.h>
int main() {
char a[101];
while (scanf("%8s", a) != EOF)
{
int len = 8 - strlen(a);
printf("%s",a);
int i = 0;
for(i = 0; i < len; i++)
{
printf("0");
}
printf("\n");
}
return 0;
}
方法二:循环+分解思想
- 首先先处理的是按照题目要求将字符串输出
- 然后将最后一组的不满固定长度n的字符串进行补0
#include <stdio.h>
#include<string.h>
int main() {
char a[101];
while (scanf("%s", a) != EOF)
{
//处理字符串
int len = strlen(a);
int i = 0;
for (i = 0; i < len ; i++)
{
printf("%c",a[i]);
if((i+1) % 8 == 0)
{
printf("\n");
}
}
//补0
for (int j = 0; j < 8 - (len % 8); j++)
{
//当能够被8整除时,会进行不必要的8个0输出,这里写个条件
//判断一下。
if(len % 8 == 0)
break;
printf("0");
}
}
return 0;
}
运行结果:
总结撒花💞
本篇文章旨在分享宏与函数的对比的相关知识点。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘