请给个2次函数的图像和性质图像,图像为2这个数字,谢谢

1373人阅读
【K and R程序研究】(4)
& & & & & &第二章【续集】 图形和函数图像的绘制
& 前面我们详细介绍了C语言绘制常见图形和正弦余弦图像的方法,此篇文章为上一篇(,强烈建议:先看上一篇再看续集!!!)的继续,主要有以下内容:
& & & 圆形和抛物线的绘制
& & &&绘制函数图像的第二种方法
& & &&同一坐标系下绘制多个函数图像(交叉图像)
4、圆形和抛物线的绘制
& &有了前面绘制三角函数图像的基础,圆形和抛物线的绘制应该非常简单,我们以圆形为例说明:
a、观察需要绘制的图像
& & & 每行需要输出两个点,而且图像左右轴对称
&& b、使用的函数:(x-10)2+(y-10)2=102
&& c、输出21行,行坐标间距为1
&& d、左半圆的列号:10-sqrt(100-(r-10)*(r-10))
&&&&& 右半圆的列号:10+sqrt(100-(r-10)*(r-10))
&& e、调整输出行宽比(因屏幕的行宽比不是一比一,因此不进行调整会导致输出为椭圆)
&& 按照以上步骤编写代码如下:
&C++ Code&By DuanXu-yzc
&*&绘制圆形(圆心坐标(10,10),半径为10)
#include&&stdio.h&
#include&&math.h&
int&main&(&void&)
&&&&int&r;
&&&&int&c;
&&&&float&
&&&&rows&=&20;
&&&&adjust&=&2.3;&&&//&屏幕行宽比(输出屏幕行间距和列间距不同,用adjust作为调整)
&&&&for&(&r=20;&r&=0;&r--&)
&&&&&&&&//&左半圆
&&&&&&&&for&(&c=0;&c&adjust*(10-sqrt(<span style="color:#ff-(r-10)*(r-10)));&c&#43;&#43;&)
&&&&&&&&&&&&printf&(&&&&&);
&&&&&&&&printf&(&&*&&);
&&&&&&&&//&右半圆
&&&&&&&&for&(&;&c&adjust*(10&#43;sqrt(<span style="color:#ff-(r-10)*(r-10)));&c&#43;&#43;&)
&&&&&&&&&&&&printf&(&&&&&);
&&&&&&&&printf&(&&*&&);
&&&&&&&&printf&(&&\n&&);
&&&&return&0;
得到的图像:
抛物线的绘制与圆形极为相&#20284;,直接上代码和结果:
* 绘制抛物线
#include &stdio.h&
#include &math.h&
int main ( void )
double adjust = 2.3;
rows = 20;
for ( r= r&=0; r-- )
for ( c=0; c&adjust*(10-sqrt(5*r)); c&#43;&#43; )
printf ( & & );
printf ( &*& );
for ( ; c&adjust*(10&#43;sqrt(5*r)); c&#43;&#43; )
printf ( & & );
printf ( &*& );
printf ( &\n& );
5、绘制函数图像的第二种方法
& & 到目前为止,我们使用的方法都是逐行输出,然后通过反函数找到每行需要输出星号的位置,最后通过输出相应个数的空&#26684;,确定星号的位置,输出星号。现在介绍另外一种方法,其实与已知的方法很相&#20284;,区别在于不需要先输出空&#26684;来确定星号的位置,而是逐个判断每行中的各列需要输出的字符是空&#26684;还是星号,以圆形为例,每行中,只有列号(调整比例后的)为adjust*(10-sqrt(5*r)和adjust*(10&#43;sqrt(5*r)的位置需要输出星号,其余位置均输出空&#26684;。按照这个方法我们重新编写程序如下:
* 绘制圆形(圆心坐标(10,10),半径为10)的另一种方法
#include &stdio.h&
#include &math.h&
int main ( void )
float adjust = 2.3;
rows = 20;
for ( r= r&=0; r-- )
left = adjust*(10-sqrt(100-(r-10)*(r-10))); // 左半圆的列号(将浮点转化为整型)
right = adjust*(10&#43;sqrt(100-(r-10)*(r-10))); // 右半圆的列号(将浮点转化为整型)
for ( c=0; c&=adjust*20; c&#43;&#43; )
if ( c == left || c == right )
printf ( &*& );
printf ( & & );
printf ( &\n& );
得到图像:
(这个图像与前一种方法绘制的图像有一处明显不同,为什么?请读者思考。)
&& 6、同一坐标系下绘制多个函数图像(交叉图像)
&& 我们来观察一下直线和圆在同一坐标系下相交的图形:
& & 同样,这个图像也需要逐行输出,如果按照第一种绘制方法,就需要确定每行中星号的位置,我们发现,图像上半部分的星号依次出现在:左半圆、右半圆、直线,中间部分是:左半圆、直线、右半圆,下半部分是:直线、左半圆、右半圆,这使得我们需要在程序中需要针对不同的行段采取不同的输出顺序,如果图像更复杂的话,这同情况会变得更糟糕。我们再看看第二种绘制方法,这种方法只需要知道哪些地方需要输出星号,并不需要明确的顺序,因此更适合这种交叉图像输出的情况,下面是绘制直线和圆的代码和结果:
* 同一坐标系下绘制圆形和直线
#include &stdio.h&
#include &math.h&
int main ( void )
int rows = 20;
int round_l;
int round_r;
float adjust = 2.3;
for ( r= r&=0; r-- )
round_l = adjust*(10-sqrt(100-(r-10)*(r-10)));
round_r = adjust*(10&#43;sqrt(100-(r-10)*(r-10)));
line = adjust*r;
for ( c=0; c&=adjust*20; c&#43;&#43; )
if ( ( c == round_l
c == line ) ||
( c == round_r
c == line ) )
printf ( &&#43;& );
// 交叉的点标记'&#43;'
else if ( c == round_l
c == round_r )
printf ( &*& );
// 圆形边界标记'*'
else if ( c == line )
printf ( &&#43;& );
// 直线标记'&#43;'
printf ( & & );
// 其它位置标记空&#26684;
printf ( &\n& );
& & 使用同样的方法绘制余弦和正弦的交叉图像如下:
* 同一坐标系中绘制余弦和正弦图像
#include &stdio.h&
#include &math.h&
#define PI 3.14
int main ( void )
int rows = 20;
int sin_1;
int sin_2;
int sin_3;
int sin_4;
int cos_1;
int cos_2;
float adjust = 10;
for ( r=1; r&0; r-=0.1 )
sin_1 = adjust * asin(r);
sin_2 = adjust * (PI-asin(r));
cos_1 = adjust * acos(r);
cos_2 = adjust * (2*PI-acos(r));
for ( c=0; c&=adjust*2*PI; c&#43;&#43; )
if ( ( c == sin_1
c == cos_1 )
( c == sin_2
c == cos_1 )
( c == sin_1
c == cos_2 )
( c == sin_2
c == cos_2 ) )
printf ( &&#43;& );
else if ( c == sin_1
|| c == sin_2 )
printf ( &*& );
else if ( c == cos_1
c == cos_2 )
printf ( &&#43;& );
printf ( & & );
printf ( &\n& );
for ( r=0; r&=-1; r-=0.1 )
sin_3 = adjust * (PI-asin(r));
sin_4 = adjust * (2*PI&#43;asin(r));
cos_1 = adjust * acos(r);
cos_2 = adjust * (2*PI-acos(r));
for ( c=0; c&=adjust*2*PI; c&#43;&#43; )
if ( ( c == sin_3
c == cos_1 )
( c == sin_4
c == cos_1 )
( c == sin_3
c == cos_2 )
( c == sin_4
c == cos_2 ) )
printf ( &&#43;& );
else if ( c == sin_3
|| c == sin_4 )
printf ( &*& );
else if ( c == cos_1
c == cos_2 )
printf ( &&#43;& );
printf ( & & );
printf ( &\n& );
& & & & 图形输出是C语言初学者经常遇到的问题,实际上大多数简单的图形并不需要使用复杂的控制结构,所见即所得的方法更加简洁,不过对于复杂的图形或者函数图像,使用控制结构会更好。在使用控制结构输出图形时,要把握一个原则:只能逐行输出,因此,在输出一行时必须把这一行中所有需要输出的字符全部输出,所以,找到每行中各个位置需要输出的字符(或者说,各字符在每行中的位置)尤为关键!我们有两种方法来确定位置,其中第二种方法更通用简洁。在输出图形时,特别是函数图像,要充分利用对称、平移关系简化程序,另外,要注意调节屏幕的行宽比和适当的图像放大,防止图像失真。
& &&1、此博文版权归所有,如需转载请注明出处,谢谢。
& &&2、在未经博主允许的情况下,任何个人和机构都不得以任何理由出版此文章,否则必将追究法律责任!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:17781次
排名:千里之外
原创:19篇知识点梳理
1、如果一个图形沿着一条对折后两部分完全重合,这样的图形叫做图形。2、如果一个图形绕某一点180度,旋转后的图形能和原图形完全重合,那么这个图形叫做中心对称图形。 而这个中心点,叫做中心对称点。3、旋转对称图形:把一个图形绕着一个定点旋转一个角度后,与初始图形重合,这种图形叫做旋转对称图形,这个定点叫做旋转对称中心,旋转的角度叫做旋转角.
函数的图像及变化:1、图像:一次函数对勾函数指数函数对数函数正弦函数余弦函数正切函数的图像余切函数的图像2、平移变化:&Ⅰ水平平移:函数y=f(x+a)的图像可以把函数y=f(x)的图像沿x轴方向向左(a>0)或向右(a<0)平移|a|个单位即可得到;&Ⅱ竖直平移:函数y=f(x+a)的图像可以把函数y=f(x)的图像沿x轴方向向上(a>0)或向下(a<0)平移|a|个单位即可得到.&3、对称变换:&Ⅰ函数y=f(-x)的图像可以将函数y=f(x)的图像关于y即可得到;&Ⅱ函数y=-f(x)的图像可以将函数y=f(x)的图像关于x轴对称即可得到;&Ⅲ函数y=-f(-x)的图像可以将函数y=f(x)的图像关于原点对称即可得到;&Ⅳ函数y=f-1(x)的图像可以将函数y=f(x)的图像关于直线y=x对称得到.
整理教师:&&
举一反三(巩固练习,成绩显著提升,去)
根据问他()知识点分析,
试题“给出下列四个命题:①若f(x+2)=f(2-x),则f(x)...”,相似的试题还有:
有六个命题:①如果函数y=f(x)满足f(a+x)=f(a-x),则y=f(x)图象关于x=a对称;②如果函数f(x)满足f(a+x)=f(a-x),则y=f(x)的图象关于x=0对称;③如果函数y=f(x)满足f(2a-x)=f(x),则y=f(x)的图象关于x=a对称;④函数y=f(x)与f(2a-x)的图象关于x=a对称;⑤函数y=f(a-x)与y=f(a+x)的图象关于x=a对称;⑥函数y=f(a-x)与y=f(a+x)的图象关于x=0对称.则正确的命题是_____(请将你认为正确的命题前的序号全部填入题后横线上,少填、填错均不得分).
关于定义在R上的函数y=f(x)有下面四个判定:(1)若对任意x∈R,恒有f(4-x)=f(4+x),则函数y=f(x)的图象关于直线x=4对称;(2)若对任意x∈R,恒有f(4-x)=f(x-4),则函数y=f(x)的图象关于y轴对称;(3)函数y=f(4-x)与函数y=f(4+x)两者的图象关于y轴对称;(4)函数y=f(4-x)与函数y=f(x-4)两者的图象关于直线x=4对称.其中正确判定的序号是_____.
若函数y=f(x-1)图象与g(x)=ln\sqrt{x}+1图象关于直线x=-2对称,则f(x)=_____.函数问题函数y=x^2的图像变换成y=1/2(x-2)^2-2的图像时,函数图像的开口大小有没有发生变化?如何变化?请详细说明,谢谢!
爱刷lr0434
y=x^2的图象横坐标不变,纵坐标变为原来的二分之一倍,得到y=1/2x^2的图象,这时开口变大了y=1/2x^2的图象向右平移2个单位,得到y=1/2(x-2)^2的图象y=1/2(x-2)^2的图象向下平移2个单位,得到y=1/2(x-2)^2-2的图像总结:经过上述变化,开口变大了.
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 1.2二次函数的图像 的文章

 

随机推荐