while(N--){
scanf("%d%d%d", &address,&data[address],&nt[address]);
/*
scanf("%d",&address);
scanf("%d", &data[address]);
scanf("%d",&nt[address]);
*/
}
使用注释里面的输入可以通过AC,但是用一个scanf("%d%d%d", &address,&data[address],&nt[address]);却总是WA,百思不得其解呀
这个是因为注释外面的,去地址是取的输入前的address值,输入的address没生效,单步执行的时候address是输入的值,是一个动态的地址
对后面的值进行输入的时候,address值还没有确定
scanf("%d %d %d", &address,&data[address],&nt[address]);
格式化字符串中间加空格,再输入10 12 13
执行顺序为由右向左,当你输入的时候,会首先赋值右面的值,当赋值右面的值的时候,address应用之前的。
第一种你输入abc,它给赋值分别为abc,第二个你输入之后必须用回车终止,既a回车,b回车,c回车才会将三个值给对应的变量,不然你输入abc回车终止,只给第一个变量赋值,后边两个变量没有值
如果这个不做数据判断的话。。
scanf("%d%d%d", &address,&data[address],&nt[address]); 这样最合适,按照标准格式即可
如果做每一个数据的判断。。
scanf("%d",&address); //根据数据判断输入的正确与否。。才能继续下一个数据输入。
scanf("%d", &data[address]);
具体区别上面都说了,其实差不多,就是一个时间复杂度问题吧,第一个省时间所以经常能在acm中看到。。推荐经常用第一种