You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:38