如何修改C++嵌套循环代码以适配任意输入行数n?
解决任意行数的循环字符序列输出问题
你原来的代码只支持n=6,大概率是把字符序列的长度或者循环条件和6硬绑定了。要适配任意输入行数,核心就是用取模运算让字符序列循环起来,不用管行数多少。
修改后的可复用代码
#include <iostream> #include <string> using namespace std; int main() { int n; cout << "输入行数: "; cin >> n; // 这里放你要循环的字符,想改直接改这个字符串就行 const string cycle_chars = "*#%@$&"; int char_len = cycle_chars.size(); // 外层循环控制行数,从1到输入的n for (int row = 1; row <= n; row++) { // 内层循环输出当前行的每个字符 for (int idx = 0; idx < row; idx++) { // 取模实现循环取字符,idx超过字符长度就从头开始 cout << cycle_chars[idx % char_len]; } cout << endl; } return 0; }
关键改动说明
- 删掉所有和6绑定的硬编码逻辑,换成从字符字符串的
size()获取长度,不管你字符序列多长都能适配 - 内层循环用
idx % char_len定位字符,比如第7个字符(idx=6)会取6%6=0,回到第一个字符*,完美实现循环复用 - 外层循环直接用用户输入的n作为终止条件,完全支持任意正整数行数
测试示例(输入n=7)
输出结果:
* *# *#% *#%@ *#%@$ *#%@$& *#%@$&*
内容的提问来源于stack exchange,提问作者Arrrriiiii
相关产品推荐
相关产品推荐

