题目要求:

输出:多组输出星号金字塔到屏幕上。如下形式:

空格

空格

空格

*




空格

空格

*

*

*



空格

*

*

*

*

*


*

*

*

*

*

*

*

算法分析:

每一行是奇数,根据最后一行确定每一行应该输入多少空格。

例如,最大一行为7个星,第1行有(7-1)/2=3个空格;

第2行是(7-3)/2=2个空格;

第3行是(7-5)/2=1个空格。

知识点:

1.利用标准字符输出函数putchar();

2.利用for()循环体控制行和列;

3.多组输入的处理方法:

法1:

while(scanf("%d",&n)!=EOF){

...

}

法2:

while(~scanf("%d",&n)){

...

}

注:法1与法2是等价的。

代码:

#include <stdio.h>

int main(){

int n;  //最大行星号数目

while(scanf("%d",&n)!=EOF){

int i;

for(i=0;i<n;i+=2){     //控制行

//控制一行打印

int j;

for(j=0;j<=(n-1-i)/2;j++){   //控制每行的空格

putchar(' ');

}

for(j=0;j<=i;j++){   //控制每行的*

putchar('*');

}

printf("\n"); //打印完一行换行

}

}

return 0;

}

注:n可以重复输入,可以输出多组金字塔。

______________________________________________END______________________________________________