"编写一个程序将其输入复制到其输出中,用一个空格替换一个或多个空格的每个字符串."
我假设他这意味着输入像...
我们(空白)(空白)(空白)去(空白)至(空白)(空白)(空白)在(空白)商城!
...并输出如下:
我们(空白)去(空白)至(空白)在(空白)商城!
这可能比我要做的更容易,但是,我似乎无法弄明白.我真的不想要代码...更多伪代码.
另外,我该怎么看?我很确定我编写的任何程序至少需要一个variable
,一个while
循环,几个if
语句,并且将同时使用getchar()
和putchar()
函数......但除此之外,我不知所措.我还没有一个程序员的思路,所以如果你能给我一些建议,我应该如何看待一般的"问题",这真是太棒了.
(请不要提起else
,我还没有在书中那么远,所以现在这超出了我的范围.)
Mat*_*ner 13
while c = getchar:
if c is blank:
c = getchar until c is not blank
print blank
print c
Run Code Online (Sandbox Code Playgroud)
isblank
如果您愿意,可以替换此处的使用.没有说明哪些字符设计为空白,或者用什么空白值代替其他字符打印.
在马修在下面的评论中提出的许多观点之后,这个版本和包含isblank
的那个是相同的.
int c;
while ((c = getchar()) != EOF) {
if (c == ' ') {
while ((c = getchar()) == ' ');
putchar(' ');
if (c == EOF) break;
}
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
由于C中的关系运算符产生整数值1或0(如本书前面所述),逻辑表达式"当前字符非空白或前一个字符非空白"可以使用整数运算进行模拟,从而缩短(如果有点神秘) )代码:
int c, p = EOF;
while ((c = getchar()) != EOF) {
if ((c != ' ') + (p != ' ') > 0) putchar(c);
p = c;
}
Run Code Online (Sandbox Code Playgroud)
变量p
初始化,EOF
以便在第一次比较期间具有有效的非空值.
归档时间: |
|
查看次数: |
10817 次 |
最近记录: |