cpython3


私信TA

用户名:smartZhou

访问量:80338

签 名:

等  级
排  名 35
经  验 13999
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

题目描述:

编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。

要求输入一个长度小于80的字符串。


解题思路:

要求题目要求输入一个长度小于80的字符串,那我定义长度为80的字符数组,就不用考虑长度问题了。

定义两个字符数组。str[80] result[80]

输入字符串:  gets(str)

判断str的中满足是英文条件的全部放到result字符数组中:

result[j++]=str[i];

最后输出结果即可:

puts(result);

题目要求

注意事项:
注意长度吧!80
参考代码:

#include <stdio.h>
#include <string.h>
int main()
{
	char str[80],result[80];
	gets(str);
	for(int i=0,j=0; i<strlen(str); i++)
	{
		if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
		{
			result[j++]=str[i];
		}
	}
	puts(result);
}



解题思路:

首先还是定义长度为80的字符数组,免去长度问题,注: 本题OJ系统不严谨,不考虑长度也能通过。

不借助临时字符数组转存,由于字符串就是每个字符组成,每当有满足条件的字符就当做单个字符输出即可!



参考代码:

#include <stdio.h>
#include <string.h>
int main()
{
	char str[80];
	gets(str);
	for(int i=0; i<strlen(str); i++)
	{
		if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
		{
			putchar(str[i]);
		}
	}
	return 0;
}


解题思路:

前面说过,OJ系统判断不是太严谨,所有参加测试的字符串长度都没有超过80。所以可以不用考虑长度因素。


参考代码:

#include <stdio.h>
int main()
{
	char ch;
	while((ch=getchar())!=EOF)
	{
		if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
		{
			putchar(ch); 
		}
	}
	return 0;
}


测试环境:

Windows & Debian Kali

测试结果:

微信图片_20190129180932.png










 

0.0分

11 人评分

  评论区

#include <stdio.h>

#define is_string(x) ('a'<=x&&x<='z')||('A'<=x&&x<='Z')

int main()
{
	char str[80];
	gets(str);
	for(int i=0;str[i]!=0;i++)
		if(is_string(str[i]))
			printf("%c",str[i]);	
	printf("\n");
	return 0;
}
2020-02-12 18:50:16
#include <stdio.h>
#include <string.h>

int main(void)
{
	char str[80] = {0,};
	int i = 0, len = 0;
	gets(str);
	len = strlen(str);
	for (i = 0; i < len+1; ++i) {
		if (str[i] == '\0')break;
		if (('A' <= str[i] && str[i] <= 'Z') || ('a' <= str[i] && str[i] <= 'z'))continue;
		strcpy(&str[i], &str[i+1]);
		str[len--] = 0;
		--i;
	}
	puts(str);
	return 0;
}
为什么这样错误50%呢?
2020-01-15 22:35:31
膜拜大佬
2019-11-23 21:04:12
  • «
  • 1
  • »