void main()
{
int a=0,b=4,c=1,d
for(a=0a<3a++)
{
for(d=0d<4d++)putchar(' ')
for(d=0d<cd++)putchar('*')
for(d=0d<4d++)putchar(' ')
b-=2
c+=2
}
}
考虑到如果输入太大的数字,那么产生的金字塔形状必然乱套,因为屏幕输出不了那么多,所以限制用户输入1-20之间的数字。不想限制的话,把1-20判断语句去掉即可。本例的范围使用30,是让大家看一下超出范围的输出。。。
/*输出数字金字塔*/
#include <stdio.h>
int main()
{
int number, lnumber, rnumber
int rows,blank
printf("Please input a number between 1 to 30:")
scanf("%d", &number)
while ( (number <0 || number >30) )
{
printf("Input wrong number! Please input again:")
scanf("%d", &number)
}
{
rows = (number - 1)
for (rowsrows >= 0rows--)
{
for (blank = rowsblank >= 0blank--)
printf(" ")
for (lnumber = 1lnumber <= (number - rows)lnumber++)
{
printf("%d ", lnumber)
}
for (rnumber = (number - rows - 1)rnumber >= 1rnumber--)
{
printf("%d ", rnumber)
}
printf("\n")
}
}
}
代码如下, 可以通过修改上面#define的ROW和CHAR控制行数以及打印的字符。
#include <stdio.h>#define ROW 5
#define CHAR '*'
int main()
{
int i, j
for (i = 1 i <= ROW ++i)
{
// 输出ROW-i个空格
for (j = 0 j < ROW-i ++j)
putchar(' ')
// 输出2i-1个字符
for (j = 0 j < i*2-1 ++j)
putchar(CHAR)
// 换行
putchar('\n')
}
return 0
}