c语言怎样画坐标轴,c语言 用小星星画各种图形(菜鸟学C语言)

本文介绍了如何使用C语言结合线性规划来绘制图形,如钻石形状和大风车。通过调整坐标轴和设置不同条件,展示了将高中线性规划知识应用于编程的可能性,强调了数学在计算机科学中的重要性,以及实践和兴趣在学习过程中的作用。

我们想要的是上图,可惜我们设计的时候是这样:

图片2

这是因为屏幕的(0,0)坐标在左上角,其坐标增长方向是x向右(不变),y轴向下增长。

所以我们想要的是图1,但是要按照图2进行线性规划。

我们高中学过线性规划,用线性规划会方便很多

可以得到:

y = -x + n

x >= 0

y >= 0

转化为代码就是必须同时满足以下三种条件

j>=0

&&

i>=0

&&

i

&&

代码:

#include

//j>=0 &&

i>=0 &&

i

int diamond(char c,int n)

{

int i,j;

int a,b;

for(i = 0; i <

n;i++)

{

for(j = 0;j <

n;j++)

{

a = i-j;

b = j+i;

if(j >= 0 &&

i >= 0 && i

< n - j)

printf("*");

}

printf("\n");

}

}

int main()

{

char c;

int n;

diamond('*',9);

return 0;

}

得到结果:

administrator@ubuntu:~/idea$

./a.out

*********

********

*******

******

*****

****

***

**

*

Tip:由于屏幕的左上角坐标是(0,0),x是向右递增,y是向下递增。就是正的形状倒置了,所以我们设计的时候是图上形状的相反。另外可以为diamond函数多设计两个参数,用来定位,位置和i

,j的初始值有关,这个简单的小程序或许不够吸引大家的关注,但是我们高中所做的线性规划可以用到这里,也就是线性规划能做的,我们都可以做,复杂的条件经过变换总是可以变得简洁易懂,再也不用纠结怎样去,函数平滑的曲线可以为我们创造很多自己想要的图形,只要函数能表示出来的,能线性规划出来的,都可以试试这个办法。真的很不错哦。

一个小小的idea,给我带来的是很多欣喜,自己学得东西,终于得到了用途。这充分说明了计算机和数学的联系。这是我探索路上的一个思考和成果。从数学的方面,我们可以发现很多的欣喜。

大风车:

关键判断代码:if((j>=n &&

j <=2*n &&

i>=n &&

i>=j) \

|| (j >=0 &&

j <=n &&

i>= 0 && i

<=n &&

i<=j) \

|| (j >= 0

&& j <= n

&& i >= n

&& i <= 2*n - j)

\

|| (j >= n

&& j <= 2*n

&& i <= n

&& i >= 2*n-j))

\

基本的格式是:if((条件范围1) || (条件判断2) || (条件判断3) || (条件判断4))

效果如下:

administrator@ubuntu:~/idea$

./a.out

******** *

******* **

****** ***

***** ****

**** *****

*** ******

*********

***************

********* ******

*** ***** **** **** ***** *** ****** ** *******

* ********

代码如下:

#include

int diamond(char c,int n)

{

int i,j;

for(i = 1; i < 2 *

n;i++)

{

for(j = 1;j < 2 *

n;j++)

{

if((j>=n &&

j <=2*n &&

i>=n &&

i>=j) || (j >=0

&& j <=n

&& i>= 0

&& i <=n

&& i<=j) || (j

>= 0 && j

<= n && i

>= n && i

<= 2*n - j) || (j >= n

&& j <= 2*n

&& i <= n

&& i >=

2*n-j))

printf("%c",c);

else

printf(" ");

}

printf("\n");

}

}

int main()

{

char c;

int n;

diamond('*',8);

return 0;

}

一个大风车,就是用线性规划做的。有点麻烦,但对数学好的同学,应该是很容易的事儿。当然,前提是:没有考虑效率,这计算机得进行多少运算哪!

上面的条件们可以进行一些优化。

我觉得这个方法对我来说最大的收获就是:1、我可以用自己的思考来做自己想要的图形,很明显,兴趣提升了。

2、学习计算机必须以数学为基础,当然,物理也不能落下(物理对学嵌入式很重要)。

3、单纯对于实现来说,我可以做到用原来的知识学以致用,并且有了一个新的实现手段。

4、有力的反驳了同学说的“不可能”。

代码看起来明显还很菜鸟,但是兴趣一定是最好的老师,什么事儿都看自己愿不愿意琢磨。

各位童鞋们,加油了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值