---------------------------------------解法一 ----------------------------------------------
解题思路:
其实本题思路很简单,代码很简短,易理解。
由于输入的是一串长度小于等于80的字符串,字符串即是一串字符。所以:
1)定义一个字符
char ch;
2)不断输入单个字符:
while((ch=getchar())!=EOF)
3)每输入一次全局计数器g_count加1:
++g_count
4)当输入的不是空格,即
ch != ' ' 或者ch !=32(空格的ASCII是32)
直接输出该字符
putchar(ch)。
5)当g_count超过80时,直接跳出while循环。
注意事项:
注意长度。可以用全局计数器统计字符个数。
参考代码:
#include <stdio.h> int g_count=0; int main() { char ch; while((ch=getchar())!=EOF&&++g_count) { if(g_count>=80) break; if(ch!=32) putchar(ch); } return 0; }
---------------------------------解法二--------------------------------
解题思路:
定义一个长度为80的字符数组。
使用gets输入
不是空格就输出好了。
注意事项:
我在使用此方法去求解本题时,开始结果不正确,然后我发现本题是进行多选测试。而不仅仅是单行数据测试。所以要用while(gets(array))。
还应该记得每测试完一组数据都要换行:
putchar('\n')
参考代码:
#include <stdio.h> #include <string.h> int main() { int i; char array[80]; while(gets(array)) { for(i=0; i<strlen(array); i++) { if(array[i]!=32) putchar(array[i]); } putchar('\n'); } return 0; }
-------------------------------------解法三----------------------------
解题思路:
可以把符合条件的存入另一个中间媒介,然后把这个中间媒介输出。
注意事项:
记住每次临时字符数组temp要内存清空:
memset(temp,0,sizeof(temp));
#include <stdio.h> #include <string.h> int main() { int i; char array[80],temp[80]; while(gets(array)) { int j=0; for(i=0; i<strlen(array); i++) { if(array[i]!=32) temp[j++]=array[i]; } puts(temp); memset(temp,0,sizeof(temp)); } return 0; }
测试环境:
Windows 10 Source Insight 4.0 & Ubuntu/ Kali Debian Linux
总结: 本题的求解方法很多,例如利用C++ string类库也能轻松求解, 后面不一 一举例了。总有一款方法适合你。
0.0分
18 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复