#include int main() { int student_id[3]; float math_score[3], physics_score[3], english_score[3], total_score[3]; // 遍历三个学生的数据录入 int i; for (i = 0; i < 3; i++) { // 录入学号,并验证其有效性(5位自然数且首位不为0) while (1) { scanf("%d", &student_id[i]); if (student_id[i] >= 10000 && student_id[i] <= 99999) { break; } else { printf("学号应为5位自然数且首位不能是0,请重新输入学号%d的信息:\n", i + 1); // 清除输入缓冲区中的无效输入 while (getchar() != '\n'); } } // 录入并验证三个科目的成绩(两位整数加一位小数) int j; for (j = 0; j < 3; j++) { float *score = (j == 0) ? &math_score[i] : (j == 1) ? &physics_score[i] : &english_score[i]; while (1) { scanf("%f", score); if (*score >= 0.0 && *score < 100.0) { // 假设成绩在0到99.9之间 break; } else { printf("成绩应在0.0到99.9之间,请重新输入学生%d的科目%d成绩:\n", i + 1, j + 1); // 清除输入缓冲区中的无效输入 while (getchar() != '\n'); } } } // 计算总成绩 total_score[i] = math_score[i] + physics_score[i] + english_score[i]; } // 按照指定格式打印输出结果 for (i = 0; i < 3; i++) { printf("%05d %.1f %.1f %.1f %.1f\n", student_id[i], math_score[i], physics_score[i], english_score[i], total_score[i]); } return 0; }