【发布时间】:2019-12-24 16:39:00
【问题描述】:
我写了一个比较三元组问题的代码。问题陈述是:
输入:2个大小为3的数组
任务是通过将a[0] 与b[0]、a[1] 与b[1] 以及a[2] 与b[2] 进行比较来找到它们的比较点。
如果a[i] > b[i],那么 Alice 将获得积分。如果a[i] < b[i] 则授予 Bob 积分。如果a[i] == b[i],那么任何人都不会收到分数。比较点是该人获得的总点数。给定a 和b 确定它们各自的比较点。
我写的代码是:
#include<stdio.h>
void main(){
int i, alice[3], bob[3];
int a = 0;
int b = 0;
for(i=0; i<3; i++){
scanf("%d", &alice[i]);
}
for(i=0; i<3; i++){
scanf("%d", &bob[i]);
}
for(i=0; i<3; i++){
if(alice[i] > bob[i])
a++;
else if (alice[i] < bob[i])
b++;
}
printf("%d %d", a, b);
}
但是当我把两个scanf()放在一行时,
for(i=0; i<3; i++){
scanf("%d", &alice[i]);
scanf("%d", &bob[i]);
}
对于所有输入,输出类似于 2 1 或 1 2。将两个 scanf() 调用放在一个 for 循环中是错误的吗?我不明白这个问题背后的原因是什么?有人能解释一下原因吗?
【问题讨论】:
-
它将以不同的顺序读取它们。哪个正确取决于输入的顺序。
-
试试
printf("enter Alice's value #%d\n", i); scanf("%d", &alice[i]);printf("enter Bob's value #%d\n", i); scanf("%d", &bob[i]); -
非常感谢@interjay。解决了。
-
非常感谢@pmg。解决了。