初学C语言,请帮忙改一下我的程序。

要输出地结果为“ * “ 两边完全对称。
***
*****
*******
*****
***
*

我的程序如下,但我的是不对称的,改如何修改才能使它出现以上结果,谢谢!
#include<stdio.h>
int main()
{
int i,j;

for(j=1;j<=7;j=j+2)
{for(i=1;i<=j;i++)
printf("*");
printf("\n");}
for(j=7;j>=1;j=j-2)
{for(i=1;i<=j;i++)
printf("*");
printf("\n");}
return 0;
}
要输出地结果为 * 两边完全对称。
***
*****
*******
*****
***
*

我的程序如下,但我的是不对称的,改如何修改才能使它出现以上结果,谢谢!
#include<stdio.h>
int main()
{
int i,j;

for(j=1;j<=7;j=j+2)
{for(i=1;i<=j;i++)
printf("*");
printf("\n");}
for(j=7;j>=1;j=j-2)
{for(i=1;i<=j;i++)
printf("*");
printf("\n");}
return 0;
}

你的程序缺少一部分来控制空格的输出,加上控制空格输出的部分就ok了
#include<stdio.h>
int main()
{
int i,j;

for(j=1;j<=7;j=j+2)
{
i=4-(j+1)/2;
for(;i>0;i--)
printf(" ");
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
for(j=5;j>=1;j=j-2)
{
i=4-(j+1)/2;
for(;i>0;i--)
printf(" ");

for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
return 0;
}你可以试试这个修改后的程序,望采纳追问

你是如何判断出 i=4-(j+1)/2的,Thank you

追答

这个看观察要输出的图形,根据算法来算出每次输出“*”时要空出多少个空格,也可以列出每次空格的个数,找出规律来,多多练习很容易找出的,O(∩_∩)O

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-22
#include<stdio.h>
int main()
{
int i,j;

for(j=1;j<=7;j=j+2)
{
printf("%*s",(7-j)/2,"");
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
for(j=5;j>=1;j=j-2)
{
printf("%*s",(7-j)/2,"");
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
getchar();
return 0;
}
第2个回答  2011-10-22
#include<stdio.h>
int main()
{
int i,j;

for(j=1;j<=7;j=j+2)
{
for(i=1;i<=4-j/2;i++)
printf(" ");
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
for(j=5;j>=1;j=j-2)
{
for(i=1;i<=4-j/2;i++)
printf(" ");
for(i=1;i<=j;i++)
printf("*");
printf("\n");}
return 0;
}
第3个回答  2011-10-22
#include<stdio.h>
int main()
{
int i,j;
for(j=1;j<=7;j=j+2)
{for(i=1;i<=(7-j)/2;i++)
printf(" ");//输出空格
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
for(j=7;j>=1;j=j-2)
{for(i=1;i<=(7-j)/2;i++)
printf(" ");//输出空格
for(i=1;i<=j;i++)
printf("*");
printf("\n");
}
return 0;
}

我这个可以吧,望采纳!
第4个回答  2011-10-22
每一行都应该输出7个字符,而不仅仅输出*,在输出行的循环里要加一个判断,if(i=j) printf("*"); else printf("空格");
每一行都输出相应的空格,让*居中。考虑下吧,具体的代码最好还是你来写,学程序不能复制粘贴别人的
相似回答