#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N, M, i, a, b, k, total = 0;
fscanf(stdin, "%d %d", &N, &M);
fprintf(stdout, "N: %d, M: %d\n", N, M);
for(i=0 ; i<M ; i++){
fflush(stdin);
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
fflush(stdout);
fprintf(stdout, "A: %d, B: %d, K: %d\n", a, b, k);
total += (((b-a)+1)*k);
fprintf(stdout, "total: %d\n", total);
}
total = total/N;
fprintf(stdout, "%d\n", total);
return 0;
}
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
第一次执行,但之后没有执行。即使是第一次,只有变量a
的值是正确的,对于变量b
, k
为零。尝试使用fflush(stdin)
在每次输入之前清除stdin,但它没有用。请帮忙。
[评论更新:] 不,我没有输入逗号。
答案 0 :(得分:1)
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
格式字符串
"%d, %d, %d"
这意味着fscanf
要求您输入一个数字,然后一个逗号,然后该空格会丢弃任意数量的空白字符,包括无数字(这是%d
多余的已经跳过它们然后期望一个数字,一个逗号,任意数量的空格字符,包括无,然后是数字。
您输入三个以空格分隔的数字。 fscanf
读取第一个数字,但无法扫描逗号。对fscanf
的其他调用首先需要一个数字,但在stdin
中找到一个逗号,因此失败。
要解决此问题,请更改
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
要
fscanf(stdin, "%d %d %d", &a, &b, &k);
或者
fscanf(stdin, "%d%d%d", &a, &b, &k);
答案 1 :(得分:-1)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N, M, i, a, b, k, total = 0;
fscanf(stdin, "%d %d", &N, &M);
fprintf(stdout, "N: %d, M: %d\n", N, M);
for(i=0 ; i<M ; i++){
fflush(stdin);
fscanf(stdin, "%d %d %d", &a, &b, &k);
fflush(stdout);
fprintf(stdout, "A: %d, B: %d, K: %d\n", a, b, k);
total += (((b-a)+1)*k);
fprintf(stdout, "total: %d\n", total);
}
total = total/N;
fprintf(stdout, "%d\n", total);
return 0;
}