现在的位置: 首页 > 综合 > 正文

华为机试小题目之保留字符串中的字母和数字

2013年10月05日 ⁄ 综合 ⁄ 共 1154字 ⁄ 字号 评论关闭

今天参加华为招聘的机试,抱着试试的态度,结果还是发现自己基本概念的缺失。

题目的要求是:输入一个字符串,包含各种类型的字符,现在要求保留其中的字母(大小写)和数字,其它的都删掉,输出处理后的字符串。

题目很简单,就是对字符串每个位置上的字符做一下判断即可,将要求保留的字符赋给输出字符数组。

机试中,给出了函数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++;
		}
	}
}

      需要自己写一个main函数,测试一下函数的正确性,当时就卡在这个位置了(指针没学好,没有为指针开辟空间),其实直接用字符数组就好,不需要指针。主函数的代码如下:

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++;
		}
	}
}

抱歉!评论已关闭.