BC11 学生基本信息输入输出
示例1
输入: 17140216;80.845,90.55,100.00输出: The each subject score of No. 17140216 is 80.85, 90.55, 100.00.
解题思路
#include<stdio.h>
int main()
{
int id=0;
float c=0.0f;
//系统默认数据0.0为double类型,0.0后面加上f使系统认定这个数是float类型
float math = 0.0f;
float eng = 0.0f;
scanf("%d;%f,%f,%f",&id,&c,&math,&eng);
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",id,c,math,eng);
//%.2d :使数据保留两位小数
return 0;
}
额外知识加成
float c=0.0f;
//系统默认数据0.0为double类型,0.0后面加上f使系统认定这个数是float类型
double 对应的输出格式为 %lf
double 和float
我们输入一个小数12.45
内存会将其转化为二进制进行存储
使用0和1来进行凑12.45这个值,只能无线逼近,但并不能精确储存
存储的数据可能是12.44444444444986894…
double类型和float类型的精度不一样,所以存储的数据的精确度有所差异,误差也有所区别
所以做题的时候,我们不知道后台对数据是如何处理的,所以如果因精确度程序无法通过,我们可以通过更换数据类型来通过题目
精度要求高用double
精度要求不高用float