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

如何修复C语言程序以随机输出用户输入的课程字符串?

修正后的C语言课程随机选择程序

问题分析

原代码存在两个关键问题导致功能失效:

  • 接收完课程输入后提前执行return(0),使得后续的随机数生成与结果打印逻辑完全无法运行;
  • printf语句中将换行符错误写为/n,而非C语言标准的\n,会导致输出异常。

修正后的完整代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cs50.h>

int main(void)
{
    // 获取用户输入的课程数量
    int course_count = get_int("输入课程数量:");
    
    // 定义字符串数组存储课程名称
    string courses[course_count];
    
    // 循环接收每门课程的名称
    for (int i = 0; i < course_count; i++)
    {
        courses[i] = get_string("输入第%d门课程:", i + 1);
    }
    
    // 初始化随机数生成器(基于当前时间,确保每次运行结果不同)
    srand(time(NULL));
    // 生成0到course_count-1之间的随机索引
    int random_idx = rand() % course_count;
    
    // 输出随机选中的课程,使用正确的换行符\n
    printf("%s, I choose you!\n", courses[random_idx]);
    
    return 0;
}

关键修正说明

  1. 移除提前返回语句:删除原代码中接收完课程后的return(0),让程序流程能顺利执行到随机数生成和结果打印的代码段。
  2. 修正换行符:将printf中的/n替换为\n,这是C语言中标准的换行转义字符,保证输出后正确换行。
  3. 补充随机数初始化:添加srand(time(NULL))语句,利用当前系统时间作为随机数种子,避免每次运行程序都得到相同的随机结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:55:20