---------------------------------------解法一 ----------------------------------------------
解题思路:
其实本题思路很简单,代码很简短,易理解。
由于输入的是一串长度小于等于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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int main(){ char arr[80],res[10][80]; int count=0,i,k; while(1){ gets(arr); k = 0; for(i=0;arr[i]!='\0';i++){ if(arr[i]!=' ') res[count][k++] = arr[i]; } res[count][k] = '\0'; if(i==0) break; count++; } for(i=0;i<count;i++){ printf("%s\n",res[i]); } return 0; } 求教大佬,哪里出错了?错误提示:Runtime Error:Segmentation fault。#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { char arr[100]; int i = 0; for (i; i < 100; i++) { if (getchar() != EOF) arr[i] = getchar(); else break; } int leng = strlen(arr); for (int j = 0; j < leng; j++) { if (arr[j] = ' ') continue; else printf("%c", arr[j]); } return 0; } 我这样写为什么出错了?没有输出