Problem A:保留字母
Description
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
Input
一个字符串,长度不超过80个字符。
Output
删掉非英文字母后的字符串。
Sample Input
abc123+xyz.5
Sample Output
abcxyz
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[80];
int n,i;
cin>>str;
n=strlen(str);
for(i=0;i<=n-1;i++)
{if((str[i]>=‘a‘&&str[i]<=‘z‘)||(str[i]>=‘A‘&&str[i]<=‘Z‘))
cout<<str[i];}
cout<<endl;
return 0;
}
这个题要求只保留英文字母,所以我们输入一组字符串(cin>>str;)之后,求出它的长度(n=strlen(str);),因为用到了srelen,所以要加头文件#include<cstring>;在长度范围之内,依次(for(i=0;i<=n-1;i++))进行检查,如果是英文字母(if((str[i]>=‘a‘&&str[i]<=‘z‘)||(str[i]>=‘A‘&&str[i]<=‘Z‘))),就把这个字符输出(cout<<str[i];)。
但是cin这个输入语句不能处理空格,所以,如果你输入的是a1b2c##de%fg hi5j^k&%lm@#n,那么,你得到的结果会是abcdefg,而没有hijklmn,如果在运行中你想得到hijklmn,你必须要用gets输入语句,相应的,要加C语言的头文件#include <cstdio>或#include <stdio.h>,即:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char str[80];
int n,i;
gets(str);
n=strlen(str);
for(i=0;i<=n-1;i++)
{if((str[i]>=‘a‘&&str[i]<=‘z‘)||(str[i]>=‘A‘&&str[i]<=‘Z‘))
cout<<str[i];}
cout<<endl;
return 0;
}