C++使用for循环时出现segmentation fault,请求错误排查
解决代码中的段错误及逻辑问题
问题分析
- 数组越界触发段错误:你的
words数组只有9个元素,合法索引范围是0~8,但循环条件写的是i <=9,当i循环到9时,访问words[9]属于越界访问,直接导致segmentation fault。 - 逻辑不符合预期需求:原代码仅单独判断
input_a和input_b的奇偶,但实际需要遍历input_a到input_b的所有数:≤9的输出对应英文单词,>9的判断奇偶。
修正后的代码
#include <iostream> #include <string> using namespace std; int main() { string words[9] = {"one","two","three","four","five","six","seven","eight","nine"}; int input_a, input_b; cin >> input_a >> input_b; for (int num = input_a; num <= input_b; ++num) { if (num <= 9) { cout << words[num - 1] << endl; } else { cout << (num % 2 == 0 ? "even" : "odd") << endl; } } return 0; }
测试结果
使用给定测试输入:
8 11
输出与预期完全一致:
eight nine even odd
内容的提问来源于stack exchange,提问作者JakeCaspian
相关产品推荐
相关产品推荐

