无法让这个“条件运算符”程序工作

时间:2017-01-02 06:28:10

标签: c

import warc
import boto    

for line in sys.stdin:
        line = line.strip()
        #Connect to AWS and read a dataset
        conn = boto.connect_s3(anon=True, host='s3.amazonaws.com')
        pds = conn.get_bucket('commoncrawl')
        k = Key(pds)
        k.key = line

        f = warc.WARCFile(fileobj=GzipStreamFile(k))
        skipped_doc = 0
        for num, record in enumerate(f):
            # analysis code

我无法让这个程序做我想做的事。我要求用户输入整数。如果该数字介于1-20之间,我希望它将该数字吐出来。如果不是,我希望它为“y”吐出值。我不想使用“if”语句。

3 个答案:

答案 0 :(得分:2)

您需要更改

scanf("%d ", &x);

scanf("%d", &x);  // remove trailing whitespace
        ^^

因为输入需要与提供的格式字符串完全匹配。

否则,要匹配尾部换行符(空格),您还需要明确提供空白一个终止条件。 (示例:按 ENTER ,然后输入任何其他非空格,再按 ENTER )。

答案 1 :(得分:1)

scanf中有一个空间,因为您面临一个问题。请删除空格并尝试运行代码。谢谢:))

#include <stdio.h>
int x, y; 
y = 999;
int main()
{
printf("\nEnter a whole number: ");
scanf("%d", &x);
y = ((x >= 1) && (x <= 20)) ? x : y;
printf("The value is %d ", y);
return 0;
}

答案 2 :(得分:0)

我执行了上面的代码,我得到了以下错误: /temp/file.cpp:4:1:错误:'y'没有命名类型  Y = 999;
 ^ 编译失败

以下变更解决了这个问题: int x,y = 999;