本帖最后由 cdzjf 于 2013-8-20 14:56 编辑
1.
我对此题做了小小的改动,让用户自己输入要打印多少行星号,这个行是指的正序部分的行数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,x,y,z,t;
a=1,c=1;
printf("请输入要打印几行星号");
scanf("%d",&t);
y=t-1;
system("cls"); //目的是把上面喊用户输入的那几个去掉,影响美观。
while(a<=t)
{
b=0;
while(b<y)
{
printf(" ");
b++;
}
y--;
x=1;
while(c>=x)
{
printf("*");
x++;
}
c=c+2;
printf("\n");
a++;
}
a=1,b=t,c=c-4; //如果C-2的话,将会出现同样的星号数量,这里开始要递减一个,当然也可以从上面那个就少一个也可以的。本来是递减,但上面执行完程序后,C的值是t次加2的,其值是比最后一行的星星还多2个。
while(a<t) //只能小于,不可以小于等于,因为这样后面多对一个空行。
{
x=0,y=t+1; //t+1的目的也是让空格从这行就开始执行。
while(y>b)
{
printf(" ");
y--;
}
b--;
z=c; //本来是用C的值,但如果直接用,等下面的Z--(x--)执行完以后C就成0了,星号那个循环就再也进不去了,所有只有用一个跳板
while(z>x)
{
printf("*");
z--;
}
c=c-2;
printf("\n");
a++;
}
system("pause");
return 0;
}
|