C语言实现打印菱形和心形
作者:互联网
C语言实现打印菱形和心形
说明
代码中变量命名可能不太规范,部分过程和注释可能略显冗余,仅供大家参考(^ _ ^)
运行环境
Visual Studio 2019
1.打印实菱形
代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int height;//记录要打印的菱形的高度
printf("请输入要打印菱形的高度:");
scanf("%d", &height);
int i,j;//用于循环判断的两个变量,i为外层循环变量,j为内层循环变量
int k = height / 2 + 1;//记录菱形中间层数的位置,也是层中存在的*最大数量
int m= k;//用于记录每层最左侧*的位置
int n;//用于标记每层的*的位置
int num;//记录每层的*的数量
printf("------------\n");
printf("菱形打印如下\n");
for (i = 1; i <= height; i++)
{
n = m;//将每层第一个*的位置赋给n
num = i;
if (num > k)
{//当num的值超过层中存在的*最大数量时
num = height - num + 1;
}
for (j = 1; j <= height; j++)
{
if (j == n)
{
printf("*");
num--;//每打印一个*,num数减小1
if (num != 0)
{//如果当前层还存在未打印的*,则将n移到下一个要打印*的位置(同一层中每个*相隔2个)
n += 2;
}
}
else
{
printf(" ");
}
}
if (i < k)
{//当i小于k时,此时每层最左侧*的位置加1,否则减1
m--;
}
else
{
m++;
}
printf("\n");//打印一个换行符
}
return 0;
}
运行结果
2.打印空心菱形
代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int height;//记录要打印的菱形的高度
printf("请输入要打印菱形的高度:");
scanf("%d", &height);
int i, j;//用于循环判断的两个变量,i为外层循环变量,j为内层循环变量
int k = height / 2 + 1;//记录菱形中间层数的位置
int left = k;//定义左指针变量,用来记录每一行中左*的位置
int right = left;//定义右指针变量,用来记录每一行中右*的位置
printf("------------\n");
printf("菱形打印如下\n");
for (i = 1; i <= height; i++)
{
for (j = 1; j <= height; j++)
{
if (j == left || j == right)
{
printf("*");
}
else
{
printf(" ");
}
}
if(i >= k)
{
left++;
right--;
}
else
{
left--;
right++;
}
printf("\n");//打印一个换行符
}
return 0;
}
运行结果
3.打印心形
代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;//用于循环自增的两个变量
int max_width = 19;
int l1, l2;//标记上三层的两个三角形状的两个左指针(最左边*)的位置
l1 = 4, l2 = 14;//记录两个指针的初始位置
int a1, a2;//记录上三层的两个三角形中各自*的位置
int count1, count2;//表示上三层每一个三角形状图形在每层中*的数量
for (i = 1; i <= 3; i++)//先打印上三层
{
a1 = l1;
a2 = l2;
count1 = i + 1;
count2 = i + 1;
for (j = 1; j <= max_width; j++)
{
if(j == a1)
{
printf("*");
count1--;
if(count1 != 0)
{
a1 += 2;
}
}
else if(j == a2)
{
printf("*");
count2--;
if (count2 != 0)
{
a2 += 2;
}
}
else
{
printf(" ");
}
}
printf("\n");
l1--;
l2--;
}
int k = 1;//记录下三角区域左指针的位置(最左边*)
int m;//记录下三角区域每层*的位置
int count3, count4;//表示下三角形状图形在每层中*的数量
count3 = (max_width + 1) / 2;//下三角区域第一层*的个数为(最大宽度+1)除以2
for (i = 1; i <= 10; i++)//再打印下三角区域
{
m = k;
count4 = count3;
for (j = 1; j <= max_width; j++)
{
if (j == m)
{
printf("*");
count4--;
if (count4 != 0)
{
m += 2;
}
}
else
{
printf(" ");
}
}
printf("\n");
count3 --;
k++;
}
return 0;
}
运行结果
标签:num,int,心形,打印,C语言,--,菱形,printf 来源: https://blog.csdn.net/weixin_41938785/article/details/114439608