题目描述:
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
要求输入一个长度小于80的字符串。
解题思路:
要求题目要求输入一个长度小于80的字符串,那我定义长度为80的字符数组,就不用考虑长度问题了。
定义两个字符数组。str[80] result[80]
输入字符串: gets(str)
判断str的中满足是英文条件的全部放到result字符数组中:
result[j++]=str[i];
最后输出结果即可:
puts(result);
题目要求
注意事项:
注意长度吧!80
参考代码:#include
#include
int main()
{
char str[80],result[80];
gets(str);
for(int i=0,j=0; i
{
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
{
result[j++]=str[i];
}
}
puts(result);
}
解题思路:
首先还是定义长度为80的字符数组,免去长度问题,注: 本题OJ系统不严谨,不考虑长度也能通过。
不借助临时字符数组转存,由于字符串就是每个字符组成,每当有满足条件的字符就当做单个字符输出即可!
参考代码:#include
#include
int main()
{
char str[80];
gets(str);
for(int i=0; i
{
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
{
putchar(str[i]);
}
}
return 0;
}
解题思路:
前面说过,OJ系统判断不是太严谨,所有参加测试的字符串长度都没有超过80。所以可以不用考虑长度因素。
参考代码:#include
int main()
{
char ch;
while((ch=getchar())!=EOF)
{
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
{
putchar(ch);
}
}
return 0;
}
测试环境:
Windows & Debian Kali
测试结果: