当一个for循环中包含多个scanf()时会发生什么情况
我已经写了一个代码来比较三元组问题 输入:2个大小为3的数组 任务是通过比较a[0]与b[0]、a[1]与b[1]以及a[2]与b[2]来找到它们的比较点。 如果a[i]>b[i],则Alice将获得分数。如果a[i]当一个for循环中包含多个scanf()时会发生什么情况,c,for-loop,scanf,C,For Loop,Scanf,我已经写了一个代码来比较三元组问题 输入:2个大小为3的数组 任务是通过比较a[0]与b[0]、a[1]与b[1]以及a[2]与b[2]来找到它们的比较点。 如果a[i]>b[i],则Alice将获得分数。如果a[i]
#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);
}
但是当我把两个扫描放在一行时
for(i=0; i<3; i++){
scanf("%d", &alice[i]);
scanf("%d", &bob[i]);
}
所有输入的输出类似于2 1或1 2。在一个for循环中放置两个扫描是错误的吗?我不明白这个问题背后的原因是什么?有人能解释一下原因吗?第一个版本读到alice的三个值,然后是bob的三个值。第二个版本为alice读取一个值,然后为bob读取一个值,并重复3次
如果输入的数字是1,2,3,4,5,6,那么在第一个示例中,alice得到1,2,3,而bob得到4,5,6;在第二个例子中,alice得到1,3,5,而bob得到2,4,6。结果完全不同。它将以不同的顺序读取它们。哪一个是正确的取决于输入的顺序。请尝试printfenter Alice的值%d\n,i;扫描%d,&alice[i];printfenter Bob的值%d\n,i;扫描%d,&bob[i];