C程序输入提示异常、未展示输入成绩问题求助
问题解决:C程序输入提示异常与未展示输入成绩
问题根源
- 输入提示连在一起:所有
printf语句末尾未添加换行符\n,标准输出(stdout)默认是行缓冲模式,只有遇到换行符或缓冲区满时才会将内容刷新到终端,导致所有提示信息被缓冲后一次性输出。 - 未展示输入成绩:原代码缺少输出
m1至m5成绩的逻辑,因此不会显示用户输入的数值。
修改后的代码
/* finding aggregate and percentage marks of a student */ /* author-akshat khatri date 29-05-2023 */ #include <stdio.h> int main() { float m1, m2, m3, m4, m5, agr, per; printf("enter value of m1: "); scanf("%f", &m1); printf("enter value of m2: "); scanf("%f", &m2); printf("enter value of m3: "); scanf("%f", &m3); printf("enter value of m4: "); scanf("%f", &m4); printf("enter value of m5: "); scanf("%f", &m5); // 输出用户输入的各科成绩 printf("\nYou entered the following marks:\n"); printf("m1 = %.2f\n", m1); printf("m2 = %.2f\n", m2); printf("m3 = %.2f\n", m3); printf("m4 = %.2f\n", m4); printf("m5 = %.2f\n", m5); agr = m1 + m2 + m3 + m4 + m5; per = agr / 5; printf("\naggregate marks of a student = %.2f\n", agr); printf("percentage marks of a student = %.2f\n", per); return 0; }
修改说明
- 添加换行符与格式优化:在每个
printf语句末尾添加\n,强制刷新输出缓冲区,让提示信息逐行显示;同时在提示文本后添加冒号和空格,提升交互可读性。 - 新增成绩输出逻辑:添加专门代码块输出用户输入的每科成绩,方便验证输入是否正确。
- 优化数值显示格式:使用
%.2f代替%f,限制小数位数为2位,避免输出无意义的长小数,让结果更整洁。
预期输出示例
enter value of m1: 60 enter value of m2: 65 enter value of m3: 70 enter value of m4: 62 enter value of m5: 63 You entered the following marks: m1 = 60.00 m2 = 65.00 m3 = 70.00 m4 = 62.00 m5 = 63.00 aggregate marks of a student = 320.00 percentage marks of a student = 64.00
内容的提问来源于stack exchange,提问作者akshat.1010
相关产品推荐
相关产品推荐

