【C语言】在屏幕上输出任意行数的菱形(完整代码)

题目描述:

从键盘输入一个奇数(n),则输出对应行数(n行)的菱形

解题思路:

根据常识可知,若要输出符合题意中n行的菱形,我们需要将每行最中间的*对齐,那么必然就需要在不同行的前面输出不同个数的空格,保证菱形的形状正确。
因此我们可以定义三个变量(我用的i,j,k),其中 i 用于控制输出的行数,j 用于控制在*前面输出的空格数,k用于控制输出的*个数。
我们可以用i 变量控制先输出(n/2+1)行的上三角形,再输出(n/2)行的下三角形,从而组成菱形;
菱形中每一行输出空格的个数用j 控制,数学推理得j 在上三角形的每行中最大为(n/2+1-i),在下三角形的每行中最大为 i
菱形中每一行输出*的个数用k 控制,数学推理得k 在上三角形的每行中最大为(2 * i -1),在下三角形的每行中最大为(n - 2 * i)

完整代码
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int n=0;
    	int i, j,k;
    	printf("你想输出菱形的行数是奇数几:");
    		scanf("%d",&n );
    	printf("你想要的菱形如下:\n");    
    	for (i = 1; i <= (n / 2 + 1); i++) //上三角
    	{
    		for (j = 1; j <= (n/2+1-i); j++)
    			printf(" ");       //输出*前面的空格
            for (k = 1; k <= (2 * i -1); k++)
    		    printf("*");		   //输出*
    		printf("\n");
    	}
    	for (i = 1 ; i <= n / 2; i++)    //下三角
    	{
    		for (j = 1; j <= i; j++)
    			printf(" ");      //输出*前面的空格
    		for (k = 1; k <= (n - 2 * i); k++)
    			printf("*");       //输出*
    		printf("\n");
    	}
    	system("pause");
    	return 0;
    }
运行结果:

这里示例我注释掉了手动输入的操作scanf("%d",&n );,直接将n定义成了5。小伙伴在使用时可以自行选择用什么方法哦
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值