C++句子理解。。20分

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:12:05
#include<iostream>
using namespace std;
int main()
{
int i,j,n,k;
cin>>n;
for(i=0;i<=n/2;i++)
{
for (j=0;j<(n/2-i);j++)
cout<<" ";
for(k=0;k<n-2*j;k++)
cout<<"*";
cout<<endl;
}
for(i=0;i<n/2;i++)
{
for (j=0;j<=i;j++)
cout<<" ";
for(k=0;k<n-2*j;k++)
cout<<"*";
cout<<endl; ;
}

}
这里for (j=0;j<=i;j++) 这句话很不理解,j是代表空格数,第一行空格2个,第二行3个,应该是第一行1个,第二行2个,我在C++编译器中改j=1,buneng1yunxing,why?
这是个菱形

改成 j=1, 而i开始却等于0,显然不对。
原先的程序是对的:第一行i=0时,打n/2个空格,菱形下半段,第一行打0个空格,每增加一行多打一个空格。

如果希望整体错位一下可以for (j=0;j<=i+2;j++)...,
但上半段也需要相应修改如
for (j=0;j<(n/2-i+1);j++)...

打印前面半边的空格阿,第i行前半段打印n/2-i个,
哦,刚刚没看清,当n为3,第一行是2个,一个前一个后。还有什么问题?

for(i=0;i<n/2;i++)
{
for (j=0;j<=i;j++)

i = 0 , j = 0 是就会输出一个 空格的.因为条件是 j<=i 而不是 j<i;