本文主要是介绍华为2019勇敢之星软件岗实习生笔试-截取字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
在GBK编码下,请编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但是要保证汉字不能被截取半个,同时忽略字符串中的数字后输出最终结果
输入描述:
一行字符串和待接截取的字节数
输出描述:
按字节截取的字符串
示例1
输入
华HUA
输出
华HU
备注
保证汉字不被截取半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
#include<stdio.h>
#include<string.h>
int main()
{char str[1000];char newstr[1000];int cutnum;int flag=0;int size = 0;int i=0;int j=0;while((str[size++] = getchar()) != '\n');scanf("%d",&cutnum);for(i=0; i<size; i++) //剔除字符串中的数字{if(str[i]>='0'&&str[i]<='9')continue;else{newstr[j] = str[i];j++;}}for(i=0; i<j; i++){if((unsigned char)newstr[i]>128 && (unsigned char)newstr[i+1]>128) //判断是否为GBK编码下的汉字{i++;flag = 1;}elseflag = 0;if(i>cutnum-1)break;else{if(flag)printf("%c%c",newstr[i-1],newstr[i]);else printf("%c",newstr[i]);}}return 0;
}
这篇关于华为2019勇敢之星软件岗实习生笔试-截取字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!