【问题标题】:K&R C HistogramK&R C 直方图
【发布时间】:2016-04-07 13:49:39
【问题描述】:

我目前正在 K&R 的 C 编程语言第 2 版中做练习 1-13。我决定从一个简单的直方图开始,它只是用“*”替换单词中的每个字母。

#include <stdio.h>
// histogram

#define IN 1
#define OUT 0

main() {
  int c, state;
  state = OUT;

  while ((c = getchar()) != EOF) {
    if (c == '\n' || c == '\t' || c == ' ') {
      state = OUT;
      putchar('\n');
    }
    else {
      if (c != '\n' || c != ' ' || c != '\t') {
        state = IN;
        putchar('*');
      }
    }
  }
}

不过,看看这段 sn-p 的代码:

 else {
   if (c != '\n' || c != ' ' || c != '\t') {
     state = IN;
     putchar('*');
   }
 }

这是怎么回事,但是如果我输入 if (state != OUT) ,它就不起作用?我最终得到了完全不同的输出。这两种说法本质上不是一回事吗?

【问题讨论】:

  • 这两个陈述本质上不是一回事吗?
  • 只是运行一些简单的例子。考虑一个输入行,一个字母后跟一个换行符。 state 以值 OUT 开头。第一个getchar 阅读了这封信。显示的代码将输出*。您的代码版本不会输出任何内容(因为if (state != OUT) 将是错误的)。

标签: c histogram


【解决方案1】:

c 等于三个术语“或”彼此不等价 c 不等于相同三个术语“或”的否定。

De Morgan's laws

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多