《Linux C编程一站式学习》打印菱形

3 篇文章 0 订阅
#include<stdio.h>
#include<math.h>

void diamond(int n,char c)            //定义一个用于打印菱形的函数,五返回值。n为打印的菱形总行数(或总列数),c为用于组成菱形的字符
{
	if(n%2 == 0)                                                //
	{                                                           //该段用于检测输入的正整数是否是奇数,
		printf("Error,please provide an odd number!\n");    //如果不是奇数则报错,并跳出该段函数
		return;                                             //
	}                                                           //
	else{                                                       //
	
	int a = n;                    //定义变量a,用于下面逐行打印时的行数记录
	int m = (n+1)/2;              //变量m为行数的中间值
	for(int a = 1; a<=n; a++)     //该for循环控制了从第一行到第n行逐行打印
	{							//打印每行时,先打印空格,再打印菱形字符
		for(int i = abs(m-a);i>=1;i--)  		//该for循环用于打印每行组图案的第一个字符前的空格
		{						//通过简单的数学知识可发现规律,每行最初空格数是中间数与行号的差的绝对值
			printf(" \t");				//用到了math.h中的绝对值函数abs()
		} 						//最初空格用一个空格和一个制表符来表示
		for(int i = (n-abs(m-a)*2); i>=1;i--)		//该循环用于打印组成菱形图案的符号
		{
			printf("%c\t",c);
		}
		printf("\n");					//每打印完一行便打印一个换行符
	 } 
	 }
 } 
 
int main(void)
{
 	
	diamond(9,'*');						//以行数为5,字符为*为例,用于验证函数是否像预期一样打印出菱形图案
 	
	return 0;
}
#include <stdio.h>
#include <math.h>
#define NUM 3
int main(void)
{
	int i,j;
	for(i=1;i<=NUM*2+1;i++)
	{
		for(j=1;j<=NUM*2+1;j++)
			if(abs(NUM+1-i)+abs(NUM+1-j) <= NUM)
				printf("*");
			else
				printf(" ");
		printf("\n");
	}
	return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值