C语言输出菱形
通过for循环语句进行遍历,打印总行数和总列数相等的菱形。
两种思维:
1.从第一行开始遍历所有列
2.从第一列开始遍历所有行
程序是从第一行开始遍历所有列
打印上半部分当前行与当前列的关系:
(column+1)/2 - (i-1) <= j && j<= (column+1)/2 + (i-1)
j>=(column+1)/2-(i-1) (column+1)/2-(i-1)为第i行左边的星号
j<=(column+1)/2+(i-1) (column+1)/2+(i-1)为第i行右边的星号
打印下半部分当前行与当前列的关系:
(column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i)
j>=(column+1)/2-(line-i) (column+1)/2-(line-i)为第i行左边的星号
j<=(column+1)/2+(line-i) (column+1)/2+(line-i)为第i行右边的星号
#include <stdio.h>
#include<stdlib.h>
int main()
{
int line; //菱形总行数
int column; //菱形总列数
int i; //当前行
int j; //当前列
printf("请输入菱形的行数(奇数):");
scanf("%d",&line);
//判断是否是奇数
if (line %2 == 0)
{
printf("必须输入奇数!\n");
exit(1);
}
column = line; //总行数和总列数相同
for ( i = 1; i <= line; i++) //遍历所有行
{
if (i< (line+1)/2+1) //上半部分(包括中间一行)
{
for (j = 1; j <= column; j++) //遍历上部分的所有列
{
if ((column+1)/2 - (i-1) <= j && j<= (column+1)/2 + (i-1))
{
printf("*");
}
else
{
printf(" ");
}
}
}
else //下半部分
{
for (j = 1; j <= column; j++)
{
if ((column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i))
{
printf("*");
}
else
{
printf(" ");
}
}
}
printf("\n");
}
system("pause");
}