资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言cosf函数 C语言cos

求一用C语言画直线的程序

C语言的话画直线用MoveTo()和LineTo()很简单啊。

创新互联专注于企业营销型网站、网站重做改版、龙凤网站定制设计、自适应品牌网站建设、H5响应式网站商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为龙凤等各大城市提供网站开发制作服务。

帮你复制一份我学习时老师给的画线两例:

#includegraphics.h

#includemath.h

/*

###############################################################################

功 能:本函数的作用是用逐点比较法来画一条直线

格 式:void myline1(int x1,int y1,int x2,int y2,int color)

参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

调用示例:myline1(10,20,500,440,4)

###############################################################################

*/

void myline1(int x1,int y1,int x2,int y2,int color)

{

/*变量定义开始(2007/10/16增加)*/

int iTx; /*x轴终点的相对坐标xa或临时变量*/

int iTy; /*y轴终点的相对坐标ya或临时变量*/

int iDx; /*x轴方向的步长dx*/

int iDy; /*y轴方向的步长dy*/

int iFt; /*偏差Fm*/

int iSt; /*记数循环数(dx+dy)S*/

int iXt; /*x方向循环变量xm*/

int iYt; /*y方向循环变量ym*/

/*变量定义结束*/

/*变量初始化开始*/

/*如果是第三象限或第四象限则换成第一或第二象限*/

if(y2y1)

{

iTx=x1;

x1=x2;

x2=iTx;

iTy=y1;

y1=y2;

y2=iTy;

}

iTx=x2-x1; /*取x轴的相对坐标*/

iTy=y2-y1; /*取y轴的相对坐标*/

iDx=1;

iDy=1;

iFt=0;

iSt=iTx+iTy;

if(iTx0)iSt=-1*iTx+iTy;; /*如果在第二象限,则x轴方向步长取负值*/

iXt=0;

iYt=0;

/*变量初始化结束*/

/*数据处理开始*/

while(iSt0)

{

putpixel(x1+iXt,y1+iYt,color);

if(iTx=0) /*如果在第一象限*/

{

if(iFt0) /*如果偏差小于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

else /*如果偏差大于或等于0*/

{

iXt+=iDx; /*x方向走一步*/

iFt-=iTy;

}

}

else

{

if(iFt0) /*如果偏差小于0*/

{

iXt-=iDx; /*负x方向走一步*/

iFt+=iTy;

}

else /*如果偏差大于或等于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

}

iSt--;

}

}

/*

###############################################################################

功 能:本函数的作用是用来画一条直线

格 式:void myline2(int x1,int y1,int x2,int y2,int color)

参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

调用示例:myline2(10,20,500,440,4)

###############################################################################

*/

int myline2(int x1,int y1,int x2,int y2,int color)

{

int iX; /*x方向的坐标变量*/

int iY; /*y方向的坐标变量*/

int iTx; /*x方向的步长变量*/

int iTy; /*y方向的步长变量*/

float fDx; /*x方向的差分变量*/

float fDy; /*y方向的差分变量*/

float fMinf; /*算法中的f*/

float fMaxF; /*算法中的F*/

float fS; /*终点判断变量*/

fMinf=0.5; /*f=0.5*/

iX=x1;

iY=y1;

putpixel(x1,y1,color);

if(x1==x2y1==y2) /*如果终点和起始点相同*/

{

return(1);

}

iTx=1;

iTy=1;

fDx=(float)(x2-x1);

fDy=(float)(y2-y1);

fMaxF=fDy/fDx0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/

if(fDx0)iTx=-1;

if(fDy0)iTy=-1;

fS=fDx0?fDx:(-fDx);

if(fMaxF==1) /*如果F=1*/

{

iX=x1;

iY=y1;

while(fS0)

{

iX+=iTx; /*x方向走一步*/

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fS--;

}

}

else if(fMaxF1) /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fMinf+=1/fMaxF; /*f=f+1/F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iX+=iTx; /*x方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

else /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iX+=iTx; /*x方向走一步*/

putpixel(iX,iY,color);

fMinf+=fMaxF; /*f=f+F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iY+=iTy; /*y方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

}

e的正弦次方加上e的负正弦次方等于

#include头文件这个库中有函数exp(x)相信能满足您的要求cmath是c++语言中的库函数,其中的c表示函数是来自c标准库的函数,math为数学常用库函数。cmath库函数列表:C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入:#include编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc-lmtest.c」。函数之自变量与传回之值型别见自变量或函数前之型别宣告。函数已经在「math.h」或其它标头档宣告过了,因此在使用时不必再加型别宣告,例如「y=sin(x);」,不用写成「y=doublesin(doublex);」。函数说明:using::abs;//绝对值using::acos;//反余弦using::acosf;//反余弦using::acosl;//反余弦using::asin;//反正弦using::asinf;//反正弦using::asinl;//反正弦using::atan;//反正切using::atan2;//y/x的反正切using::atan2f;//y/x的反正切using::atan2l;//y/x的反正切using::atanf;//反正切using::atanl;//反正切using::ceil;//上取整using::ceilf;//上取整using::ceill;//上取整using::cos;//余弦using::cosf;//余弦using::cosh;//双曲余弦using::coshf;//双曲余弦using::coshl;//双曲余弦using::cosl;//余弦using::exp;//指数值using::expf;//指数值using::expl;//指数值using::fabs;//绝对值using::fabsf;//绝对值using::fabsl;//绝对值using::floor;//下取整using::floorf;//下取整using::floorl;//下取整using::fmod;//求余using::fmodf;//求余using::fmodl;//求余using::frexp;//返回value=x*2n中x的值,n存贮在eptr中using::frexpf;//返回value=x*2n中x的值,n存贮在eptr中using::frexpl;//返回value=x*2n中x的值,n存贮在eptr中using::ldexp;//返回value*2exp的值using::ldexpf;//返回value*2exp的值using::ldexpl;//返回value*2exp的值using::log;//对数using::log10;//对数using::log10f;//对数using::log10l;//对数using::logf;//对数using::logl;//对数using::modf;//将双精度数value分解成尾数和阶using::modff;//将双精度数value分解成尾数和阶using::modfl;//将双精度数value分解成尾数和阶using::pow;//计算幂using::powf;//计算幂using::powl;//计算幂using::sin;//正弦using::sinf;//正弦using::sinh;//双曲正弦using::sinhf;//双曲正弦using::sinhl;//双曲正弦using::sinl;//正弦using::sqrt;//开方using::sqrtf;//开方using::sqrtl;//开方using::tan;//正切using::tanf;//正切using::tanh;//双曲正切using::tanhf;//双曲正切using::tanhl;//双曲正切using::tanl;//正切

cosf 这个函数是用来干什么的????

inline float cosf(float _X) ——MSDN中的函数原型,也是求弧度值的余弦值。就是指针对flaot型的!是cos()的一个特例。建议使用cos()有多种重载形式,可保证无错!好运!

为什么汇编时序比C会精准

在单片机,ARM的裸机上,汇编真的比C精准。每条汇编指令用几个机器周期都是确定的,你用汇编写个排序算法用多少毫秒都是可以算出来的。

但是一旦上了操作系统,特别是分时的Windows,即使是汇编程序,也会变得“不精准”。

说C语言“不精准”,主要是编译器怎么生产汇编指令对你是透明的。你不知道你的C代码会编译成怎样的汇编代码。

以上是有关运行时间的问题。再看浮点计算的精度。

这个两者是完全一致的:加入你用汇编求sinx,cosx的值,你会使用fsin fcos这些指令。如果你用C语言,Math.h中的sinf cosf函数最终都是通过相同的汇编指令完成的。所以二者计算机过完全一致。你还能通过编译器选项,使调用过程内联不转跳,于是在效率上和汇编就一样了。

但是汇编在特别极端的情况下的却能优化计算速度,还是以求三角函数为例,在很多场合都需要同时求出正弦与余弦,Math.h中的函数必须两次调用,但却有指令fsincos能同时算出二者,且速度与单独计算fsin或者fcos是一样的。

总之,只要你的不是特别底层,特别最求速度的事情,汇编的精确性很难体现出来。

C语言程序设计

/*1)*/#include stdio.h

#include math.h

#include conio.h

main()

{

float x,y;

printf("X=");

scanf("%f",x);

if(x=0)

y=sinf(x)+cosf(x)/2;

else

y=sinf(x)-cosf(x)/2;

printf("Y=%f",y);

getch();

}/*---------------------*//*2)*/#include stdio.h

#include math.h

#include conio.h

main()

{

int i,j,res;

for(i=1;i=9;i++)

{

for(j=1;j=i;j++)

{

res=i*j;

printf("%d*%d=%d ",i,j,res);

}

printf("\n");

}

getch();

}/*------------------------------------*//*3*/#include stdio.h

#include conio.h

main()

{

int i,j,tmp,n,num[11];

printf("Input 10 integer:");

for(i=0;i10;i++)

scanf("%d",num[i]);

num[10]=9999; /*临时赋予第10个元素一个大值*/

for(j=9;j0;j--) /*冒泡法从小到大排序*/

{

for(i=0;i10;i++)

{

n=0;

if(num[i]num[i+1])

{

tmp=num[i+1];

num[i+1]=num[i];

num[i]=tmp;

n++;

}

}

}

for(i=0;i10;i++) /*显示排序后的数组前10项*/

printf("%d ",num[i]);

printf("\nInput an integer:");

scanf("%d",n);

for(i=0;i10;i++)

{

if(nnum[i])

break;

}

for(j=10;ji;j--)

{

num[j]=num[j-1];

}

num[i]=n;

for(i=0;i11;i++)

{

printf("%d,",num[i]);

}

getch();

}

c++中使用exp (就是e的多少次方)需要什么头文件

#includecmath这个库包含exp(x)函数,可以解决此问题。

1.打开vc++6.0编译器,如图所示选择新函数。

2.在新函数中选择文件,然后选择c/c++头文件,然后在正确的文件名中输入要使用的头文件名**。

3.在新的头文件中输入你的头代码(如图所示是我刚写的一个调用函数),键入代码后,点击左上角保存。

4.找到新的头文件,复制或移动到VC98\Include目录下的vc++6.0安装目录。

5.再次打开vc++创建一个新的C语言文件,如下图所示,选择该文件,选择C/c++源文件,输入文件名**。C(记得带文件扩展名。C),确认。

6.在新的c文件中输入代码,并声明您在预处理命令中编写的用于调用头库的头文件的名称。


文章名称:c语言cosf函数 C语言cos
文章路径:http://cdkjz.cn/article/hhiepp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220