空心菱形是算法入门的基础题目,做出这道题并没有什么难度,但是下面的代码是根据网上的一些讨巧的方法写出来的,思想值得借鉴。
int _tmain(int argc, _TCHAR* argv[]) { int num; int fk = 0, mk = 0; scanf("%d",&num); //取得空格数和行数的关系,上半部分正着数是i,下半部分倒着数是n-i for (int i = 1; i <= num;i++) { //上半部分 if (i < (num + 1) / 2) { //前部空格数 fk = (num + 1) / 2 - i; //中部空格数 mk = 2*i - 3;//从第二行开始 } //下半部分 else { fk = i - (num + 1) / 2; mk = 2 * (num - i) - 1; } for (int m = 1; m <= fk; m++) printf(" "); printf("*"); for (int n = 1; n <= mk; n++) printf(" "); //不是第一行也不是最后一行,需要在每行末尾添加* if (i > 1 && i < num) { printf("*"); } printf("\n"); } //你会发现,这种算法直接忽略了后面的空格部分,但是在显示上却没有区别。 system("pause"); return 0; }