#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main(int argc, const char *argv[]) { unsigned int number; double grade1, grade2, grade3; scanf("%u;%lf,%lf,%lf", &number, &grade1, &grade2, &grade3); printf("The each subject score of No. %u is %.2lf, %.2lf, %.2lf.", number, (round(grade1 * 100)) / 100, (round(grade2 * 100)) / 100, (round(grade3 * 100)) / 100); return 0; }
请注意,题目中有这么一句话:“注:输出成绩时需进行四舍五入且保留2位小数”。round()函数对浮点数四舍五入求近似值,参数和返回值均为double,但round四舍五入保留的是整数,即保留0位小数,所以我们先将成绩*100,用round四舍五入后再/100,从而实现四舍五入且保留2位小数。