为什么输入100;80.845,90.557,100.233时不能正常输出呢?会显示输入数据有误。

#include
#include
#include
using namespace std;
int main()
{
int a;
float b,c,d;
scanf("%ld;%f,%f,%f",&a,&b,&c,&d);
if(a>=1&&a<=20000000&&b>=0&&b<=100&&c>=0&&c<=100&&d>=0&&d<=100)
{
cout<<"The each subject score of No. "<<a<<" is "<<fixed<<setprecision(2)<<b<<", "<<c<<", "<<d<<".";
}
else{
cout<<"输入数据有误";
}
}

因为你输入的d大于100,而if判断d必须小于100,所以if不成立,执行else分支就打印“输入数据有误”。

因为d是100.233大于100,条件不成立,

scanf("%ld;%f,%f,%f",&a,&b,&c,&d); 改成scanf("%ld%f%f%f",&a,&b,&c,&d);去掉,号

d输入的是100.233,超过了if里面d<=100的判断条件,所以打印输入数据有误