【C】打印菱形图案实现方法
程序员文章站
2022-03-29 15:53:32
方法1:将菱形图案一分为二,依次打印上面的内容和下面的内容。
源代码:
int main(void)
{
int i = 0;
int j = 0;
int...
方法1:将菱形图案一分为二,依次打印上面的内容和下面的内容。
源代码:
int main(void) { int i = 0; int j = 0; int line = 0; printf("请输入你想要打印菱形的行数:\n"); scanf("%d", &line); //打印上面的图案 for (i=0; i这种方法有点繁琐,不推荐使用,对于打印图案的问题,其实有规律可循,见方法2。
方法2:把菱形抽象化,当做正方形去处理,可以发现对角线的距离是一样长的。于是乎我们以中心点(即就是对角线的交点)为坐标原点,建立二维平面直角坐标系,这里定义各个顶点到原点的距离为D,那么四个顶点的坐标分别是:(-D,0)、(D,0)、(0,-D)、(0,D)。连接这四个顶点,就是一个菱形(对角线垂直平分)。因此凡是在菱形内部的*(包括在四条边上的*),都满足坐标的绝对值之和不超过D。
源代码:
#define _CRT_SECURE_NO_WARNINGS 1 /* * Copyright (c) 2018, code farmer from sust * All rights reserved. * * 文件名称:OutputPattern.c * 功能:输出菱形图案 * * 当前版本:V1.0 * 作者:sustzc * 完成日期:2018年3月27日13:19:19 */ # include # include # include # include /* * 函数名称:PrintfPattern * * 函数功能:打印菱形图案 * * 入口参数:num * * 出口参数:空 * * 返回类型:void */ void PrintfPattern(int num) { int i = 0; int j = 0; for (i=-num; i<=num; i++) { for (j=-num; j<=num; j++) { Sleep(200); if (abs(i)+abs(j) <= num) { printf("*"); } else { printf(" "); } } printf("\n"); } return; } int main(void) { int line = 0; int distance = 0; printf("请输入您想要打印菱形图案的行数:\n"); scanf("%d", &line); distance = (line - 1) / 2; PrintfPattern(distance); system("pause"); return 0; }输出结果:
;>