这个说明一下,scanf对输入数据的格式要求比较严格,如果你写%d,就只能输入32位以内的整数变量;如果你写%f,就只能输入float型变量;如果你写%lf,就只能输入double型变量等等。你用错类型或变量,输入结果都是错误的。而cin要智能很多,能够自行判断输入数据和变量类型,只要变量类型足够在输入值的有效范围,就可以完成正确输入。
就你这代码来说。long long类型,用scanf输入时,必须指定为%lld才可以正确输入;但用cin时,只需要输入的数在long long范围内,就可以输入到变量内,不需要显式指定变量的类型。
希望有所帮助
a和sum数组是 long long 类型
scanf 和 printf中要用"%lld", 不是"%d"
scanf("%d", &a[i]);
改成
scanf("%lld", &a[i]);
printf("%d\n", sum[r]-sum[l-1]);
改成
printf("%lld\n", sum[r]-sum[l-1]);
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!