为什么我的循环执行得太频繁? 我正在设计一个C++类的程序,教授要我们制作一个用*输出钻石形状的程序。我一直坚持的是我的程序输出了太多的行
而不是为什么我的循环执行得太频繁? 我正在设计一个C++类的程序,教授要我们制作一个用*输出钻石形状的程序。我一直坚持的是我的程序输出了太多的行,c++,loops,while-loop,C++,Loops,While Loop,而不是 * *** * 它正在输出 * *** ***** *** * 我将如何修改代码以使其正常工作?我整个上午都在网上搜索答案,运气不好 这是我的密码: #include <iostream> using namespace std; int main () { //Define Varaible int N; cout << "Please enter a postitive integer: "; cin &g
*
***
*
它正在输出
*
***
*****
***
*
我将如何修改代码以使其正常工作?我整个上午都在网上搜索答案,运气不好
这是我的密码:
#include <iostream>
using namespace std;
int main () {
//Define Varaible
int N;
cout << "Please enter a postitive integer: ";
cin >> N;
cout << "Here is your diamond." << endl << endl;
for (int i = 0; i <= 2 * N; i++) {
for (int j = 0; j <= 2 * N; j++) {
if (i <= N) {
if (j < N - i || j > N + i) {
cout << ' ';
}
else {
cout << '*';
}
}
else {
if (j < i - N || j > 3 * N - i) {
cout << ' ';
}
else {
cout << '*';
}
}
}
cout << endl;
}
return 0;
}
您得到的行数比预期的多的原因是您正在创建2*N+1行数,而实际需要2*N-1行数 解决方法很简单:读取输入后,将N减小1
cin >> N;
assert(N > 0);
--N;
这样,代码的其余部分就不必更改了。您应该记住,在[0,5]范围内(包括[0,5])有6个元素,而不是5个元素。因此,当您执行循环并希望执行5次迭代时,通常会执行以下操作之一:
for( int i = 0; i < 5; ++i ) // do stuff
或
当C或C++编程时,第一个版本经常使用,因为它适合数组索引,程序员习惯使用这种形式。
但正如我之前所说,如果你这样做:
for( int i = 0; i <= 5; ++i ) // do stuff
这将是6次迭代。通过什么输入,您会得到错误的图像?如果你得到了太多的一行并且不理解你自己的代码…?,添加N=N-1;在某处
for( int i = 0; i <= 5; ++i ) // do stuff