用循环打印菱形_C语言算法
来源:互联网 发布:单片机数字电压表设计 编辑:程序博客网 时间:2024/06/01 13:07
菱形打印
打印菱形在控制台的思路是,把菱形上下拆分,分两段很接近的代码来打印, 其实这样代码很不好看,并且不好阅读 我们知道,要打印的图案是这种:
*
***
*****
***
*
满足上下对称,左右对称,那么,你能不能也弄一个二重循环,同样是对称的? 很简单,首先我们要抛开习惯性思维,for循环不一定要在0开始或者0结束 我们可以让循环从 -c 到 c ,这样不就轻松产生一个对称的吗?(只要取个绝对值) 我们把菱形的中心看成是坐标0,0,那么,会输出星号的坐标,是 |x| + |y| <= c 的点。
#include <stdio.h>
#define IABS(x) ( (x) >= 0 ? (x) : -(x) )//定义一个计算绝对值的宏
void print(intsize) // size是这个菱形的半径,直径会是size * 2 + 1
{
int x, y;
for (y = -size; y <= size; y++)
{ for (x = -size; x <=size; x++)
{ if ( IABS(x) +IABS(y) <= size ) //x和y各自的绝对值的和,即 |x| + |y| <= size
putchar('*');
else putchar(' ');
}
putchar('\n');
}
}
int main()
{ print(5); //输出一个半径为5的菱形return 0;
}
如果我需要得到空心菱形呢?非常非常简单,因为菱形边界上的点,满足的是|x| + |y| == c 所以,我们只要把那个if里的小于等于号,改成双等于号 == 就可以了。
再类似地,如果我不要*号,我要最外层是字母A,然后里一层是B这样呢?
即:
A
ABA
ABCBA
ABA
A
那么,我们只要在putchar那里做一个字符计算:
void print(intsize) // size是这个菱形的半径,直径会是size * 2 + 1
{ int x, y;
for (y = -size; y <=size; y++)
{ for (x = -size; x <=size; x++)
{ if ( IABS(x) +IABS(y) <= size ) //x和y各自的绝对值的和,即 |x| + |y| <= size
putchar( 'A'+ (size - IABS(x) -IABS(y)) ); //留意这里的计算方法
else putchar(' ');
} putchar('\n');
}
}
类似地,如果我们要打印的是X形:
* *
* *
*
* *
* *
同样可以利用这个思路完成。
打印菱形在控制台的思路是,把菱形上下拆分,分两段很接近的代码来打印, 其实这样代码很不好看,并且不好阅读 我们知道,要打印的图案是这种:
*
***
*****
***
*
满足上下对称,左右对称,那么,你能不能也弄一个二重循环,同样是对称的? 很简单,首先我们要抛开习惯性思维,for循环不一定要在0开始或者0结束 我们可以让循环从 -c 到 c ,这样不就轻松产生一个对称的吗?(只要取个绝对值) 我们把菱形的中心看成是坐标0,0,那么,会输出星号的坐标,是 |x| + |y| <= c 的点。
#include <stdio.h>
#define IABS(x) ( (x) >= 0 ? (x) : -(x) )//定义一个计算绝对值的宏
void print(intsize) // size是这个菱形的半径,直径会是size * 2 + 1
{
int x, y;
for (y = -size; y <= size; y++)
{ for (x = -size; x <=size; x++)
{ if ( IABS(x) +IABS(y) <= size ) //x和y各自的绝对值的和,即 |x| + |y| <= size
putchar('*');
else putchar(' ');
}
putchar('\n');
}
}
int main()
{ print(5); //输出一个半径为5的菱形return 0;
}
如果我需要得到空心菱形呢?非常非常简单,因为菱形边界上的点,满足的是|x| + |y| == c 所以,我们只要把那个if里的小于等于号,改成双等于号 == 就可以了。
再类似地,如果我不要*号,我要最外层是字母A,然后里一层是B这样呢?
即:
A
ABA
ABCBA
ABA
A
那么,我们只要在putchar那里做一个字符计算:
void print(intsize) // size是这个菱形的半径,直径会是size * 2 + 1
{ int x, y;
for (y = -size; y <=size; y++)
{ for (x = -size; x <=size; x++)
{ if ( IABS(x) +IABS(y) <= size ) //x和y各自的绝对值的和,即 |x| + |y| <= size
putchar( 'A'+ (size - IABS(x) -IABS(y)) ); //留意这里的计算方法
else putchar(' ');
} putchar('\n');
}
}
类似地,如果我们要打印的是X形:
* *
* *
*
* *
* *
同样可以利用这个思路完成。
- 用循环打印菱形_C语言算法
- 用for循环打印菱形
- 用循环模式打印菱形
- 用for循环打印菱形
- 用C语言打印菱形
- 单个循环打印菱形
- 循环打印菱形字母
- 二重循环打印菱形
- for循环打印菱形
- 【for循环】打印菱形
- C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表
- C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表 .
- 用C语言打印一个菱形
- 用C语言实现打印菱形
- C语言打印菱形
- c语言打印菱形
- c语言打印菱形
- c语言打印菱形
- GridView 行交换 ,上移 下移
- Spring JMS 整合Weblogic JMS(weblogicMQ)
- Java系统程序员修炼之道
- MD5加密类
- poj 3592(强连连通分量+缩点+重建图形+spfa求最长路)
- 用循环打印菱形_C语言算法
- 使用配置文件动态获取WebService地址
- MyBatis 入门
- SecureCRT
- oracle scn详解
- Linux启动
- GridView 行交换
- extern "C"的用法解析
- C内联汇编