以上是输出菱形的图片,接下来有三种输出方法,三种方法只有几条语句不太一样
第一种:没有输入,直接使用代码输出
#include<stdio.h>
int main()
{
int i, j, k;//i行 j空格 k"*"
for (i = 1; i <= 7; i++) //在这里直接定义上半部分有7行
{
for (j = 1; j <=7-i; j++)//当j<=7-行数时,输出空格,然后j++,当j>7-行数时,跳出循环
{
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++)//当k<=2*行数-1时,输出*
{
printf("*");
}
printf("\n");
}
for (i = 1; i <= 6; i++)
{
for (j = 1; j <=i; j++)//j<=i输出空格,然后j++,当j>i时退出
{
printf(" ");
}
for (k = 1; k <= 13-2*i; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
上述方法的缺点是只能通过更改for循环中的数字控制输出
第二种:有输入,根据输入输出菱形
#include<stdio.h>
int main()
{
int i, j, k;//j:空格 k:"*"
int line = 0;//上半部分行数
printf("上半部分行数:");
scanf("%d", &line); //输入上半部分行数
for (i = 1; i <= line; i++)
{
for (j = 1; j <= line - i; j++)//当j <= 行数-i时,输出空格,然后j++,当j > 行数-i时,跳出循环
{
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++)
{
printf("*");
}
printf("\n");
}
for (i = 1; i <= line-1; i++)//line-1是下半部分
{
for (j = 1; j <= i; j++)//j<=下半部分行数时,输出空格,然后j++,当j>i时退出
{
printf(" ");
}
for (k = 1; k <= (2*line-1)- 2 * i; k++)//2*line-1是总行数
{
printf("*");
}
以下是第二种代码实现的图片:
第三种:有输入,输出相应菱形,和第二种在for循环中有所不同
#include<stdio.h>
int main()
{
int line = 0;
int i = 0;
printf("上半部分行数:");
scanf("%d", &line);//例如输入9
//打印上半部分
for (i = 0; i < line; i++)
{
//打印一行
//打印空格
int j = 0;
for (j = 0; j < line - 1 - i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for (i = 0; i < line - 1; i++)
{
//打印一行
int j = 0;
for (j = 0; j <= i; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
以下是第三种方法的输出结果: