gpt4 book ai didi

c++ - while 循环的问题

转载 作者:行者123 更新时间:2023-11-28 04:59:59 25 4
gpt4 key购买 nike

#include <iostream>
#include <math.h>
using namespace std;

int main() {
int arrowBaseHeight = 0;
int arrowBaseWidth = 0;
int arrowHeadWidth = 0;
int i = 0;
int j = 0;

cout << "Enter arrow base height:" << endl;
cin >> arrowBaseHeight;

cout << "Enter arrow base width:" << endl;
cin >> arrowBaseWidth;

cout << "Enter arrow head width:" << endl;
cin >> arrowHeadWidth;
cout << endl;

// Draw arrow base

while (i <= arrowBaseHeight){
while (j <= arrowBaseWidth){
cout << "*";
j++;
}
cout << endl;
j = 0;
i++;
}

// Draw arrow head (width = 4)


return 0;
}

我正在尝试编写一个简单的程序,它接受 3 个用户输入的整数并将它们分配给 arrowBaseHeight、arrowBaseWidth 和 arrowHeadWidth。输出应该是一系列星号 (*),打印如下:

**
**
**
****
***
**
*

创建一个箭头的图像。

我一直在尝试找出使用嵌套循环打印出箭头底部部分的最佳方法(我一直在使用 while,但如果 for 更好,请告诉我)。我尝试了多种不同的方法,但我还没有找到一种不会返回错误的方法。我还没有到达箭头部分,但如果有人想指出正确的方向,那将会很有帮助!

最佳答案

你已经很接近了,但是如果你想让一个循环准确地执行 n次,启动你的计数器i在 0 时,条件应为 i < n , 不是 i <= n .

关于头部,你只需要从输入的宽度开始减少每行打印的字符数。

#include <iostream>

int main()
{
using std::cout;
using std::cin;

int arrowBaseHeight = 0;
cout << "Enter arrow base height:\n";
cin >> arrowBaseHeight;

int arrowBaseWidth = 0;
cout << "Enter arrow base width:\n";
cin >> arrowBaseWidth;

int arrowHeadWidth = 0;
cout << "Enter arrow head width:\n";
cin >> arrowHeadWidth;
cout << '\n';

// Draw arrow base
for ( int i = 0; i < arrowBaseHeight; ++i )
{
for ( int j = 0; j < arrowBaseWidth; ++j )
{
cout << '*';
}
cout << '\n';
}

// Draw arrow head
for ( int i = 0, width = arrowHeadWidth; i < arrowHeadWidth; ++i, --width )
{
for ( int j = 0; j < width; ++j )
{
cout << '*';
}
cout << '\n';
}

return 0;
}

你会看到很多重复的代码,考虑使用一些自定义函数来重构它。

关于c++ - while 循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46293706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com