我已经读过一些关于使用花括号的先前问题,根据我的理解,如果你只有一行但是如果要使用多行代码则不需要使用花括号,你需要使用括号。
我有一项任务,教师确实要求我们在每种情况下使用括号来养成良好的习惯。他还允许我们研究和使用示例代码。
现在,我的问题是,我发现了一些不使用括号的示例代码。当我尝试将括号添加到代码中时,它使我的输出不正确。 有人可以向我解释如何在多行代码中正确使用大括号,并就如何达到我正在寻找的结果提出建议。
以下是输出正确时的代码:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
}
else
{
for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}
当我试图“清理它”时,看起来像这样:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
{
if(i == n)
{
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
}
else
{
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}
答案 0 :(得分:3)
问题是你在打印循环中放了太多:
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
应该是:
for(int j = 1; j <= i; j++)
{
cout << '*';
}
cout << endl;
没有花括号的循环只能包含单个语句。这意味着使用cout
的行尾打印仅在循环结束时调用。
这是使用花括号的完整代码:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;
for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;
}
else
{
for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}