如何修复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; }
关键修正说明
- 移除提前返回语句:删除原代码中接收完课程后的
return(0),让程序流程能顺利执行到随机数生成和结果打印的代码段。 - 修正换行符:将
printf中的/n替换为\n,这是C语言中标准的换行转义字符,保证输出后正确换行。 - 补充随机数初始化:添加
srand(time(NULL))语句,利用当前系统时间作为随机数种子,避免每次运行程序都得到相同的随机结果。
内容的提问来源于stack exchange,提问作者Tyler
相关产品推荐
相关产品推荐

