C语言输出n行* (打印菱形)


#include 
#include 
#include 
#include 
#include 
int main(void)
{
	//首先分析:用户输入的是奇数还是偶数
	//其次分析:选择偶数的话选择在上部分还是下部分少打一行
	//上部分
	int n;
	int count = 0;
	printf("请输入正整数(偶数无法构成菱形哦!):\n");
	scanf_s("%d,\n",&n);
	for (int i = 0; i < n / 2 + 1; i++)		//打印菱形  无论几行 都要保持对称   我们选择将 对称行给上面还是下面都可以
	{
		
		for (int j = 1; j <= n / 2 - i ; j++)		// 每次空格都需要减一
		{
			printf(" ");
		}
		for (int k = 1; k <= 2 * i + 1; k++)
		{
			printf("*");
		}
		printf("\n");
		count++;
	}
	//下部分
	for (int i = 0; i < n / 2; i++)
	{
		
		for (int j = 0; j < i + 1; j++)			//外层增长一次我也增长一次
		{
			printf(" ");
		}

		//这里防止用户输入了偶数(我们进行判断)  最终还是违背行数    实现效果

		if (n % 2 == 0)			
		{
			for (int k = 1; k < n - 2 * i; k++)			//k = 1   他的条件就是 总的个数   减掉  每次增长(需要少掉的两个)  然后乘以每次增长的次数
			{
				printf("*");
			}

		
		}
		else
		{
			for (int k = 1; k < (n - 1) - 2 * i; k++)
			{
				printf("*");
			}
			
		}
		
		printf("\n");
		count++;
	}


	printf("一共打印了:%d\n",count);

	return 0;

运行结果:
C语言输出n行* (打印菱形)_第1张图片

 

正常情况下我们只需要考虑奇数(将菱形打印出来就可以了)

因为偶数不可能打印出菱形

这里代码里面输入偶数会自动判断多加一行对称行    生成菱形   但又打破了输入值得不等

你可能感兴趣的:(c语言,c++,算法)