•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。-笔试面试资料
这是qklbishe.com第8797 篇笔试面试资料
提供答案分析,通过本文《•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String s = new String(sc.nextLine()); if(s.length()%8 !=0 ) s = s + "00000000"; while(s.length()>=8){ System.out.println(s.substring(0, 8)); s = s.substring(8); } } } }
2016-07-07 23:26:13 回复(145)
#include <iostream> #include <string> using namespace std; void ***(string str) { if (str == "") return; if (str.size() <= 8) { str.append(8 - str.size(), '0'); cout << str << endl; return; } cout << str.substr(0, 8) << endl; ***(str.substr(8, str.size())); } int main() { string str1, str2; cin >> str1 >> str2; ***(str1); ***(str2); return 0; }
2016-07-22 18:15:20 回复(41)
C/C++
Allen解神
#include <iostream> using namespace std; int main(){ string str; while(getline(cin,str)){ while(str.size()>8){ cout << str.substr(0,8) <<endl; str=str.substr(8); } cout << str.append(8-str.size(),'0') << endl; //不够8位的补0 } }
2016-08-26 19:52:31 回复(18)
Python
华科平凡
def printStr(string): if len(string) <= 8: print(string + "0" * (8 - len(string))) else: while len(string) > 8: print(string[:8]) string = string[8:] print(string + "0" * (8 - len(string))) a=input() b=input() printStr(a) printStr(b)
Python3解法。
2017-09-06 15:53:23 回复(23)
Python
蚊子我来啦
a=raw_input() b=raw_input() def chstr(line): left = len(line)%8 if left != 0: line += "0" * (8 - left) for i in range(len(line) / 8): print line[i*8:(i+1)*8] chstr(a) chstr(b)
2016-07-06 21:53:17 回复(16)
#include <iostream> #include <string> using namespace std; int main() { string s; while(cin >> s) { s = s + "0000000"; //特别强调这里是7个0 while(s.size() >= 8) { cout << s.substr(0,8) << endl; s = s.substr(8); } } return 0; }
2019-07-28 16:38:13 回复(9)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String s=sc.nextLine(); StringBuffer sb=new StringBuffer(s); if(s.length()%8!=0){ int n=8-s.length()%8; for(int i=0;i<n;i++){ sb.append("0"); } } while(sb.length()>=8){ System.out.println(sb.substring(0, 8)); sb=sb.delete(0, 8); } } } }
2016-07-12 09:34:30 回复(16)
#include <stdio.h> #include <string.h> char* copy(char* dst, char* src, int n){ for (int i = 0; i < n; ++i){ if (src[i]) dst[i] = src[i]; else dst[i] = '0'; } return dst; } int main(){ char buf[112] = {0}; char out[9] = {0}; while(gets(buf)){ char *p = buf; while(*p){ printf("%sn", copy(out, p, 8)); p += 8; } memset(buf, 0, 112); } }
2016-04-14 21:22:03 回复(9)
#include<iostream> #include<string> #include<vector> using namespace std; int main() { string str1; string str2; while(cin >> str1) { cin >> str2; vector<string>temp; temp.push_back(str1); temp.push_back(str2); for(int i = 0;i <2;i++) { string t = temp[i]; int n1 = t.size()/8; int n2 = t.size()%8; for(int k=0;k<8-n2 && n2>0;k++) { t +='0'; } if(n2>0) n1++; for(int j=0;j<n1;j++) { cout<<t.substr(j*8,8)<<endl; } } } }
题目要一次输入两个,就两个cin,之后判断若是某个不是8的整数倍,就在字符串后面补齐‘0’,然后利用substr 分段输出就行。蛋疼。。华为这种题目
2016-04-06 17:07:19 回复(2)

/* 本题思路为先补全字符串到8的整数倍,然后输出 我是用数组存储字符串的 */ #include<iostream> #include<string.h> using namespace std; void Output(char a[]) { int l = strlen(a); int m = l / 8; //整除数 int n = l % 8; //余数 int i,j; //在字符串尾部添加0 for (i = 0; i < 8 - n && n>0; i++) a[l + i] = '0'; if (n > 0) m++; for (i = 1; i <= m; i++) { for (j = 0; j < 8; j++) printf("%c", a[8 * (i - 1) + j]); printf("n"); } } int main() { char a[200], b[200]; //循环输入测试用例 while (cin >> a) { cin >> b; Output(a); Output(b); } }
2016-08-04 11:01:24 回复(4)

//主要明白substr(起始位置,截取子字符窜个数)函数即可 #include <iostream> #include <string> #define MAX_SIZE 100 using namespace std; void Output(string str); int main() { string str1; string str2; cin >> str1 >> str2; if (str1.length() > MAX_SIZE||str1.length() < 1||str2.length() > MAX_SIZE||str2.length() < 1) { cout << "input error!" << endl; } else { Output(str1); Output(str2); } return 0; } void Output(string str) { int quotient = str.length()/8; int remainder = str.length()%8; int count = 0; for (int i=0;i<quotient;i++) { string substr = str.substr(count,8); cout << substr << endl; count += 8; } if (remainder != 0) { cout << str.substr(count,remainder); for (int i=remainder;i<8;i++) { cout << "0"; } cout << endl; } }
2016-03-24 15:11:40 回复(0)
Python
lurking
def strprint(string):while len(string) > 8:print(string[:8])string =string[8:]print(string +"0"*(8-len(string)))a =input()b =input()strprint(a)strprint(b)
2018-09-04 22:02:24 回复(0)
#include <stdio.h> #include <string.h> const int N = 1000; int main() { char str[N]; int len, need; while (gets(str)) { len = strlen(str); for (int i = 0; i < len; i++) { if ((i + 1) % 8 == 0) { printf("%cn", str[i]); } else { printf("%c", str[i]); } } if (len % 8 != 0) { need = 8 - len % 8; for (int i = 0; i < need; i++) { printf("0"); } printf("n"); } } return 0; }
2017-07-07 08:27:21 回复(2)
Java
村上挪威
import java.util.Scanner; public class Main{ public static void main(String[]args){ Scanner in = new Scanner(System.in); while(in.hasNextLine()){ String str1 = in.nextLine(); String str2 = in.nextLine(); SpliteString(str1); System.out.println(); SpliteString(str2); } } static void SpliteString(String str){ if(str.length() <= 8){ for(int i = 0;i < 8;i++) if(i < str.length()) System.out.print(str.charAt(i)); else System.out.print("0"); }else{ for(int i = 0;i < 8;i++){ System.out.print(str.charAt(i)); } System.out.println(); SpliteString(str.substring(8));//递归,再判断除去前8个字符之后的长度是否大于8 } } }
2016-07-12 21:58:30 回复(2)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int i,length,count;
char str1[100],str2[100],cstr[9];
while(scanf("%s",str1) != EOF){
length = strlen(str1) ;
for(i = 0; i < length; i++){
if(i % 8 != 0)
cstr[count++] = str1[i];
else{
cstr[8] = ‘