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

C语言do-while循环实现Y/N控制流程重复、选课总费用统计问题排查

核心问题定位
  • 选Y后循环失效的根本原因:scanf(" %c", join)调用时未对join变量取地址,不符合scanf需要传入变量内存地址的入参规则,用户输入的字符根本没有被写入join变量,join始终是栈上的随机初始值,循环条件判断完全失效
  • 总费用统计功能缺失:定义的totalFee变量未做初始化,也没有在每次选定课程后累加对应课程的费用,即使循环正常运行,也没有可用于输出的累计值
  • 隐含的逻辑不一致问题:代码开头通过宏定义的各课程费用,和分支判断里硬编码的费用数值不匹配;D课程的打印语句中冗余输出了无意义的字符D;存在Python拼写为Phyton的笔误
修正实现思路
  • 修正scanf的入参错误,所有需要通过scanf写入值的字符变量前必须加取地址符&,保证用户输入的Y/y/N/n能被正确读取,驱动循环正常运行
  • 将totalFee初始值设为0,在每个课程分支中累加对应课程的费用,统一使用开头定义的宏值替代硬编码的费用数,避免数值偏差
  • 清理打印语句中的冗余字符和拼写错误,在do...while循环结束(用户选择N/n退出选课)后,统一输出累计的总选课费用
修正后完整可运行代码
#include <stdio.h>
// 对齐原分支中展示的课程费用定义宏,减少硬编码
#define A 100   // C入门课费用
#define B 110   // C++入门课费用
#define C 120   // Java入门课费用
#define D 130   // Python入门课费用
#define E 140   // PHP课程费用

int main()
{
    int totalFee = 0; // 总费用从0开始累加
    char code, join;
    
    printf("\t\t Training Centre\n");

    do
    {
        printf("\nEnter course code: ");
        scanf(" %c", &code); // 修正取地址缺失的问题
        
        if(code == 'A')
        {
            printf("Course name: C for beginner\nFees: %d", A);
            totalFee += A;
        }
        else if(code == 'B')
        {
            printf("Course name: C++ for beginner\nFees: %d", B);
            totalFee += B;
        }
        else if(code == 'C')
        {
            printf("Course name: Java for beginner\nFees: %d", C);
            totalFee += C;
        }
        else if(code == 'D')
        {
            // 修正拼写错误,删除冗余打印的字符D
            printf("Course name: Python for beginner\nFees: %d", D);
            totalFee += D;
        }
        else
        {
            printf("Course name: PHP for beginner\nFees: %d", E);
            totalFee += E;
        }
    
        printf("\n\nDo you want to join other class? (Enter Y for 'Yes' / N for 'N'): ");
        scanf(" %c", &join); // 修正取地址缺失的问题
    }
    while (join == 'Y' || join == 'y');
    
    // 循环退出后输出累计总费用
    printf("\nTotal accumulated course fee: %d\n", totalFee);
    return 0;
}

内容的提问来源于stack exchange,提问作者myr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:27:01