原题链接:C语言考试练习题_保留字母
题目描述:
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
要求输入一个长度小于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
测试结果:
0.0分
8 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复