今天参加华为招聘的机试,抱着试试的态度,结果还是发现自己基本概念的缺失。
题目的要求是:输入一个字符串,包含各种类型的字符,现在要求保留其中的字母(大小写)和数字,其它的都删掉,输出处理后的字符串。
题目很简单,就是对字符串每个位置上的字符做一下判断即可,将要求保留的字符赋给输出字符数组。
机试中,给出了函数my_string函数的接口void my_string(char *input, char *output)。直接在函数中完成功能,可以很轻松地实现:
void my_string(char *input, char *output) { int i=0,j=0; for( ; input[i]!='\0'; i++) { if ( (input[i]>='a' && input[i]<='z') || (input[i]>='A' && input[i]<='Z') ||(input[i]>='0' && input[i]<='9') ){ output[j] = input[i]; j++; } } }
void main() { char m[20],n[20]="\0"; char *p=m,*q=n; printf("please input the former string: "); fgets(p,20,stdin); my_string(p, q); printf("%s",q); }
/* mystring.cpp : 定义控制台应用程序的入口点。 华为题目:输入一个字符串,保留字符串中的字母(大小写)和数字,输出处理后的字符。 time:2012.9.15 */ #include "stdafx.h" #include<stdio.h> void my_string(char *input, char *output); void main() { char m[20],n[20]="\0"; char *p=m,*q=n; printf("please input the former string: "); fgets(p,20,stdin); my_string(p, q); printf("%s",q); } void my_string(char *input, char *output) { int i=0,j=0; for( ; input[i]!='\0'; i++) { if ( (input[i]>='a' && input[i]<='z') || (input[i]>='A' && input[i]<='Z') ||(input[i]>='0' && input[i]<='9') ){ output[j] = input[i]; j++; } } }