1、爱心代码与输出
#include<stdio.h>
int main()
{
char a = '*';//定义字符
int i = 0;//定义第一部分行数
int j = 0;
int m = 9;//定义起始一半'*'的数量(爱心是左右对称的)
int n = 20;//定义起始最左边空格的数量
//打印三行空格更美观
for (j = 0; j < 3; j++)
printf("\n");
//打印第1、2行
for (i = 0; i < 2; i++)
{
int j = 0;
n = n - (4 * i);
m = m + 8 * i;
for (j = 0; j < n ; j++)
{
printf(" ");
}
for (j = 0; j < m; j++)
{
printf("%c", a);
}
for (j = 11; j >(0 + 8*i); j--)
{
printf(" ");
}
for (j = 0; j < m; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
}
//打印第3行
n = n - 2;
for (j = 0; j < n ; j++)
{
printf(" ");
}
int b = 0;
b = 2*(m+2)+3;//定义变量b为第三行'*'的数量
for (j = 0; j < b; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
//打印第4、5行
for (i = 0; i < 2; i++)
{
n = n - 1;//最左端空格的数量
b = b + 2;//整行'*'的数量
for (j = 0; j < n; j++)
{
printf(" ");
}
for (j = 0; j < b; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
}
//打印第6~第10行
for (i = 0; i < 5; i++)
{
for (j = 0; j < n; j++)
{
printf(" ");
}
for (j = 0; j < b; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
}
//打印后面的第11行~第17行
for (i = 0; i < 6; i++)
{
n = n + 1;//让后面每行的空格数加1个
b = b - 2;//让后面每行的'*'数加2个
for (j = 0; j < n; j++)
{
printf(" ");
}
for (j = 0; j < b; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
}
for (i = 0; i < 20; i++)//先判断条件为i<20,后利用break跳出for循环
{
n = n + 2;//让后面每行的空格数加2个
b = b - 4;//让后面每行的'*'数减4个
for (j = 0; j < n; j++)
{
printf(" ");
}
for (j = 0; j < b; j++)
{
printf("%c", a);
}
printf("\n");//一行结束换行
if(b <= 1)//利用break跳出for循环
break;
}
return 0;
}
2、逐句分析
(1)起始空三行
(2)打印第1、2行
(3)打印第三行
(4)打印第4、5行
(5)打印第6~第10行
(6)打印后面的第11行~第17行
(7)打印后面的行