c++ - 如何在奇数颗星星中制作星星金字塔?
问题描述
#include<iostream>
using namespace std;
int main() {
int i, j;
for(i = 1; i <= 5; i++) {
for(j = 1; j <= i; j++) {
cout<< "*";
}
cout<< endl;
}
return 0;
}
那是我上面的代码。奇数如 1 然后 3 星然后 5 星,等等。我所有的尝试都失败了。起初,开始不停地滚动。然后只出现了一列一排星星。它应该很简单,但它不工作!
像 i%2 == 0 这样的东西不起作用。
谢谢你。
编辑:应该看起来像这样:
*
***
*****
******
ETC
解决方案
如果你把它分成小块,它可能很简单。
对于初学者来说最好的策略是自下而上,即首先得到最小的部分,做最简单的事情,你不能分成更小的部分。然后一次“上升”一个级别,直到达到结合所有部分的算法的“大视图”:
第一个“片段”:
n
在一行上打印星星:最简单的方法是使用std::string
构造函数,通过重复一个字符来构造一个字符串并打印:
std::cout << std::strin(n, '*') << '\n'
第二件:为每一行获取正确的星数:你从1开始,增加2;简单的:
for (int star_count = 1; star_count <= 7; star_count += 2)
并将它们放在一起:
for (int star_count = 1; star_count <= 7; star_count += 2)
std::cout << std::string(star_count, '*') << '\n';
我要强调的一件事是我为变量使用了有意义的名称。在极少数情况下,类似i
,n
是可以接受的,并且仅在这些变量被指定用于该用途的情况下,即i
用作数组中的索引。它非常有用,您应该尽快养成正确命名所有变量的习惯。
例如,如果不是继续开始次数,我会考虑我的行号和我会这样写的星数之间的关系:
for (int line_index = 1; line_index <= 4; ++line_index)
std::cout << std::string(line_index * 2 - 1, '*') << '\n';
推荐阅读
- ffmpeg - 将 8 个单声道加入 7.1 音频流
- sql-server - 设置 indexname 时 Delphi TFDTable 打开失败
- fortran - fortran77中MAX(a1, a2, a3)的输出为0
- sql - Oracle SQL 根据特定的列列表检查值
- javascript - 获取返回的 html 标记
- python - 需要创建具有相同人口的垃圾箱。还需要生成包含 bins 和 cut 之间的交叉表的报告
- google-cloud-storage - 如何为 google-cloud-cpp sdk 启用日志记录
- python - 静态图像到 base64 标记失败
- python - 在 python 中使用 genfromtxt 时出现值错误
- r - R:合并两个数据帧(分组/汇总)时如何避免出错?