BC11 学生基本信息输入输出
废话不多说上题目:
这道题表面上很简单,但是里面有很重要的点先给大家上正确的代码:
#include<stdio.h>
int main()
{
int stu = 0;
float c = 0;
float English = 0;
float math= 0;
scanf("%d;%f,%f,%f", &stu, &c, &English, &math);
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.", stu, c, English, math);
return 0;
}
这道题一定要按人家的格式来输入和输出,注意哪里有分号哪里有逗号空格这些都是决定你能不能通过测试的因素,下来是最重要的点,请看这段代码:
#include<stdio.h>
int main()
{
int stu = 0;
double c = 0;
double English = 0;
double math= 0;
scanf("%d;%lf,%lf,%lf", &stu, &c, &English, &math);
printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.", stu, c, English, math);
return 0;
}
你们说上面这段代码正确吗。
我们发现预期输出80.85实际输出80.84,这是因为浮点数没办法全部精确保存在内存中因为double和float的精度不一样,所以保存近似的小数结果也不一样。
double用的是%lf输入输出,float用的是%lf输入输出。