题目要求:
输出:多组输出星号金字塔到屏幕上。如下形式:
空格 | 空格 | 空格 | * | |||
空格 | 空格 | * | * | * | ||
空格 | * | * | * | * | * | |
* | * | * | * | * | * | * |
算法分析:
每一行是奇数,根据最后一行确定每一行应该输入多少空格。
例如,最大一行为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______________________________________________