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


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <Windows.h>
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;

运行结果:

 

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

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

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱发使我稳重

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值