我正在打印星星钻石,但是我的代码正在编译和运行,但它只打印了一半的钻石......任何人都请帮忙。
下面我提到了我的代码。 我无法理解这个问题,为什么系统只执行上半部而不是钻石的另一半。
#include<iostream>
using namespace std;
int main()
{
int n,i=0,j;
cin>>n;
while(i<=(n/2))
{
j=0;
while(j<(n/2)-i){
cout<<" ";
j=j+1;
}
j=0;
while(j<i+1){
cout<<"*";
j=j+1;
}
j=0;
while(j<=i-1){
cout<<"*";
j=j+1;
}
cout<<"\n";
i=i+1;
}
while(i<=(n/2))
{
j=0;
while(j<(n/2)-i)
{
cout<<" ";
j=j+1;
}
j=0;
while(j<i)
{
cout<<"*";
j=j+1;
}
j=0;
while(j<i-1){
cout<<"*";
j++;
}
cout<<"\n";
i--;
}
return 0;
}
答案 0 :(得分:1)
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
for(int i=0;i<=n/2;i++)
{
for(int j=0;j<n;j++)
{
if((i+j==n/2) ||(abs(i-j)==n/2))
printf("*");
else
printf(" ");
}
printf("\n");
}
for(int i=n/2-1;i>=0;i--)
{
for(int j=0;j<n;j++)
{
if((i+j==n/2) || (abs(i-j)==n/2))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
如果n = 5
*
* *
* *
* *
*
答案 1 :(得分:0)
您在while()循环中使用相同的迭代器(i)。在第二个循环中使用不同的迭代器,或重置它。
答案 2 :(得分:0)
当您第一次循环i
时,您有i = n/2 + 1
在第二个循环中,您希望i
减少。所以它必须是while (i > 0)
而不是目前的。