【问题标题】:Graphical Explanation图解说明
【发布时间】:2019-04-01 21:53:39
【问题描述】:
#include <stdio.h>

int main()
{
   int c;  /* Present Character */
   int old_c; /* Previous Character */

   while ((c = getchar()) != EOF) {
      if (old_c == ' ' && c != ' ') {
         putchar(' ');
         putchar(c);
      } else if(c != ' ') {
         putchar(c);
      }
      old_c = c;
   }
   return 0;
}

我真的不明白这段代码是如何工作的。这是 C 编程语言练习 1.9 的解决方案:

练习 1-9:

编写一个程序,将其输入复制到其输出,将一个或多个空格的每个字符串替换为一个空格。

C 编程语言第 2 版,
B. Kernighan 和 D. Ritchie,普伦蒂斯 霍尔,第 20 页。

这是我的问题

例如我输入为输入:Hello World\n

'\n' 不是最后一个字符吗?保存到old_c : old_c = c;

有人可以向我解释如何编写代码,因为我真的很想学习 c 编程语言和编程。 我是个初学者;

【问题讨论】:

  • 你能在问题中包含练习文本吗?
  • 上面的代码有一个错误,因为old_c在未初始化时使用。
  • 回答部分问题,如果你在终端输入Hello World\n,\n不会被解释为一个换行符,它会被单独读入,所以最后一个字符只是n。
  • 从您的问题中不清楚该程序的输出是什么,以及您期望的输出是什么。也不清楚原来的问题是什么,

标签: c logic


【解决方案1】:

这段代码做了 9 件事:

  1. 首先,它声明了一些变量c和old_c,
  2. 然后它将键盘输入读入c。
  3. 之后,它会检查old_c 是否为 和c 是否不是。
  4. 如果是这样,它会打印一个空格和最后按下的字符。
  5. 否则,它只会打印最后按下的字符。
  6. 然后,old_c 设置为 c。
  7. 跳到 2 直到输入停止(通常使用 CTRL+D 或回车键)
  8. 然后加载返回值(在本例中为0),
  9. 并以该返回值退出。

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多