1:
#include<stdio.h> main() { int i,j,n; for(i=1;i<=5;i++)//将图形分为上下两部分 { for(j=i;j<=4;j++) printf(" ");//空格前部分最多是四 for(n=1;n<=2*i-1;n++) printf("*"); printf(" "); } for(i=6;i<=9;i++) { for(j=1;j<=i-5;j++) printf(" "); for(n=1;n<=19-2*i;n++)// 9减去两边的空格数,空格数是i-5 printf("*"); printf(" "); } }
运行结果:
2:
#include<stdio.h> main() { int i,j; for(i=1;i<=5;i++)//将整体分为两部分 { for(j=1;j<=2*i-1;j++) printf("*"); printf(" "); } for(i=6;i<=9;i++) { for(j=1;j<=19-2*i;j++)//空格数随行数的增加而增加二,星数等于9减空格数 printf("*"); printf(" "); } }
运行结果:
3
#include<stdio.h> main() { int i,j,n; for(i=1;i<=5;i++) { for(j=1;j<=10-2*i;j++)//星数等于2i-1,空格数等于 九减星数 printf(" "); for(n=1;n<=2*i-1;n++) printf("*"); printf(" "); } for(i=6;i<=9;i++) { for(j=1;j<=2*i-10;j++) printf(" "); for(n=1;n<=19-2*i;n++) printf("*"); printf(" "); } }
运行结果:
4
#include<stdio.h> main() { int i,j,n; for(i=1;i<=5;i++)//分为两部分 { for(j=1;j<i;j++)//空格数是i-1 printf(" "); for(n=1;n<=11-2*i;n++) printf("*"); printf(" "); } for(i=6;i<=9;i++) { for(j=1;j<=9-i;j++)//星数是2i-9,空格数是(9-(2i-9))/2=9-i printf(" "); for(n=1;n<=2*i-9;n++) printf("*"); printf(" "); } }
运行结果:
5:
int i,j,n; for(i=1;i<=5;i++) { for(j=1;j<i;j++) printf(" "); for(n=1;n<=9;n++) printf("*"); printf(" "); } for(i=6;i<=9;i++) { for(j=1;j<=9-i;j++) printf(" "); for(n=1;n<=9;n++) printf("*"); printf(" "); } }
运行结果:
6:
#include<stdio.h> main() { int i,j,n; for(i=1;i<=4;i++)//分为三个部分 { for(j=i;j<=4;j++) printf(" "); for(n=1;n<=2*i-1;n++) printf("*"); printf(" "); } for(i=5;i<=7;i++) { for(n=1;n<=9;n++)//每行的星数都相等 printf("*"); printf(" "); } for(i=8;i<=11;i++) { for(n=1;n<=12-i;n++) printf("*"); for(j=1;j<=2*i-15;j++)//空格数为九减星数,等于9-2*(12-i)=2*i-15 printf(" "); for(n=1;n<=12-i;n++)//因为空格两边有星号所以要后半部分星号排列在空格后面 printf("*"); printf(" "); } }
运行代码:
总结:
先计算好算法,联系好星号和空格之间的数据和位置间的关系,然后把复杂的图形分成更简单的几部分。
我认为的难点是:
continue语句