当前位置:文档之家› C语言中的画图函数(终审稿)

C语言中的画图函数(终审稿)

C语言中的画图函数(终审稿)
C语言中的画图函数(终审稿)

C语言中的画图函数公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

C语言中的画图函数

基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。

1、画点

I. 画点函数 void far putpixel(int x, int y, int color);

该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。

在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。

关于点的另外一个函数是: int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。

II、有关坐标位置的函数?

int far getmaxx(void);返回x轴的最大值。

int far getmaxy(void); 返回y轴的最大值。

int far getx(void); 返回游标在x轴的位置。

void far gety(void); 返回游标有y轴的位置。

void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。

void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。

2、画线

I. 画线函数

TURBO C提供了一系列画线函数,下面分别叙述:

void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。

void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。

void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。

void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。

void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle 结束(用度表示)画一段圆弧线。

在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周,依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。

void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradius为x轴和y 轴半径,从角stangle 开始到endangle结束画一段椭圆线,当

stangle=0,endangle=360时,画出一个完整的椭圆。

void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。

void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints 整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints

的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。

下面举一个用drawpoly()函数画箭头的例子。

#include<>

#include<>

int main()

{

int gdriver, gmode, i;

int arw[16]={200,102,300,102,300,107,330,

100,300,93,300,98,200,98,200,102};

gdriver=DETECT;

initgraph(&gdriver, &gmode, "c:\\caic\\bgi");

setbkcolor(BLUE);

cleardevice();

setcolor(12); /*设置作图颜色*/

drawpoly(8, arw); /*画一箭头*/

getch();

closegraph();

return 0;

}

II、设定线型函数

在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。

线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。

下面介绍有关线型的设置函数。

void far setlinestyle(int linestyle,unsigned upattern,int thickness); 该函数用来设置线的有关信息,其中linestyle是线形状的规定,见下表。

有关线的形状(linestyle)

━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数数值含义

─────────────────────────

SOLID_LINE 0 实线

DOTTED_LINE 1 点线

CENTER_LINE 2 中心线

DASHED_LINE 3 点画线

USERBIT_LINE 4 用户定义线

━━━━━━━━━━━━━━━━━━━━━━━━━

thickness是线的宽度,见下表。

有关线宽(thickness)

━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数数值含义

─────────────────────────

NORM_WIDTH 1 一点宽

THIC_WIDTH 3 三点宽

━━━━━━━━━━━━━━━━━━━━━━━━━?

对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此时uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。

void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:

struct linesettingstype{

int linestyle;

unsigned upattern;

int thickness;

}

例如下面两句程序可以读出当前线的特性?

struct linesettingstype *info;

getlinesettings(info);

void far setwritemode(int mode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO C的默认方式)。如果mode=1,则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。

有关线型设定和画线函数的例子如下所示。

#include<>

#include<>

int main()

{

int gdriver, gmode, i;

gdriver=DETECT;

initgraph(&gdriver, &gmode, "c:\\caic\\bgi"); setbkcolor(BLUE);

cleardevice();

setcolor(GREEN);

circle(320, 240, 98);

setlinestyle(0, 0, 3); /*设置三点宽实线*/ setcolor(2);

rectangle(220, 140, 420, 340);

setcolor(WHITE);

setlinestyle(4, 0xaaaa, 1);

/*设置一点宽用户定义线*/

line(220, 240, 420, 240);

line(320, 140, 320, 340);

getch();

closegraph();

return 0;

}

initgraph

函数名: initgraph()

功能: 初始化图形系统

函数原型: void far initgraph(int far *graphdriver, int far *graphmode,

char far *pathtodriver);

头文件:

程序例:

#include ""

#include ""

int main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */

initgraph(&gdriver, &gmode, "");

/* read result of initialization */

errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */

{

printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1); /* return with error code */

}

/* draw a line */

line(0, 0, getmaxx(), getmaxy());

/* clean up */

getch();

closegraph();

return 0;

}

绘图程序例

下面的程序可以绘出如下三个图形:

源程序如下:

#include<>

#include<>

#include<>

#define P1 180

int graphdriver,graphmode;

float rr,rs,n;

void main()

{

void snail();

void roundshell();

void ammonite();

clrscr();

gotoxy(1,6);

printf("Plot your article graph. \n");

printf("======================================================= \n");

gotoxy(1,9);

printf("Enter roundshell radius:");

// 输入贝壳图半径

sanf("%f",&rr);

printf("Enter snail radius:");

// 输入蜗牛图半径

scanf("%f",&rs);

printf("Enter ammonite radius even:(2----6)\n");

// 输入菊石图半径

scanf("%f",&n);

roundshell(); // 调用函数绘出贝売图

snail();// 调用函数绘出蜗牛图

ammonite(); // 调用函数绘出菊石图

getch(); // 使图形停留在屏幕上

closegraph(); // 切换回到文本模式

}

void roundshell()

// 画贝壳图

{

int i,wx1,wx2,wy1,wy2,sx,sy;

struct arccoordstype ArcInfo;

float x1,x2,y1,y2,x,y,k1,k2,the,theta,r, minx,maxx,miny,maxy,sx0,sy0,sxr,syr;

the=2*Pi/60; // 角度增量

maxx=rr*cos(the*;

// 赋初值

maxy=rr*sin(the*;

// 赋初值

minx=rr*cos(the*;

// 赋初值

miny=rr*sin(the*;

// 赋初值

for(i=0;i<=59;++i)

{

the=2*Pi*i/60;

x=rr*cos(the*;

y=rr*sin(the*;

if(x

if(x>maxx)maxx=x; // 求出最大x值

if(y

if(y>maxy)maxy=y; // 求出最大y值

}

x1=minx; // 窗口的左边界

x2=maxx; // 窗口的右边界

y1=miny; // 窗口的下边界

y2=maxy; // 窗口的上边界

wx1=56; // 视口的左边界

wx2=146; // 视口的右边界

wy1=56; // 视口的下边界

wy2=146;// 视口的上边界

k1=(wx2-wx1)/(x2-x1); // 窗口到视口变换x方向的比例系数

k2=(wy2-wy1)/(y2-y1); // 窗口到视口变换y方向的比例系数

x=rr*cos(the*;

y=rr*sin(the*;

sxr=wx1+(x-x1)*k1;

syr=wy1+(y-y1)*k2;

sx0=wx1+(0-x1)*k1;

sy0=wy1+(0-y1)*k2;

r=sqrt((sxr-sx0)*(sxr-sx0)+(syr-sy0)*(syr-sy0)) // 求画圆弧的半径

graphdriver=DETECT;

initgraph(&graphdriver,&graphmode,"\\bc\\bgi");

setcolor(WHITE);

rectangle(1,1,240,200);

for(i=0;i<=59;++i)

{

theta=2*Pi*i/60;

x=rr*cos((2*Pi-theta)*;

// 用户坐标下,贝壳上一系列半圆圆心x坐标

y=rr*sin((2*Pi-theta)*;

// 用户坐标下,贝壳上一系列半圆圆心y坐标

sx=wx1+(x-x1)*k1; // 转换成屏幕上相应的半圆圆心x坐标 sy=wy1+(y-y1)*k2; // 转换成屏幕上相应的半圆圆心y坐标 setcolor(WHITE);

arc(sx,sy,theta,theta+Pi,r); // 画出半圆

getarccoords(&ArcInfo); // 获取所画半圆端点的信息

line(sx,sy,,;

// 由半圆圆心到半圆弧起点画一线段

line(sx,sy,,;

// 由半圆圆心到半圆弧终点画一线段

}

}

void snail()

// 画蜗牛图

{

int i,wx1,wx2,wy1,wy2,theta,sx,sy;

struct arccoordstype ArcInfo;

float x1,x2,y1,y2,x,y,k1,k2,sxr,syr,

minx,maxx,miny,maxy,sx0,sy0,r;

theta=2*Pi/60;

maxx=rs*cos((theta+Pi)*;

// 赋初值

maxy=rs*sin((theta+Pi)*;

// 赋初值

minx=rs*cos((theta+Pi)*;

// 赋初值

miny=rs*sin((theta+Pi)*;

// 赋初值

for(i=0;i<=49;++i)

{

theta=2*Pi*i/60;

x=rs*cos((theta+Pi)*;

y=rs*sin((theta+Pi)*;

rs=rs*;

if(x>maxx) maxx=x; // 求窗口x方向最大值

if(y>maxy) maxy=y; // 求窗口y方向最大值 if(x

x1=minx; // 窗口左边界赋值

x2=maxx; // 窗口右边界赋值

y1=miny; // 窗口下边界赋值

y2=maxy; // 窗口上边界赋值

wx1=280; // 取定视口左边界

wx2=330; // 取定视口右边界

wy1=195; // 取定视口下边界

wy2=245; // 取定视口上边界

k1=(wx2-wx1)/(x2-x1);

// 窗口到视口变换x方向的比例系数

k2=(wy2-wy1)/(y2-y1);

// 窗口到视口变换y的比例系数

sx0=wx1+(0-x1)*k1;

sy0=wy1+(0-y1)*k2;

setcolor(WHITE);

setfillstyle(0,0);

bar3d(200,100,455,300,0,0);

// 下面语句的注释见画贝壳函数roundshell()中相应的说明 {

theta=2*Pi*i/60;

x=rs*cos((Pi-theta)*;

y=rs*sin((Pi-theta)*;

sxr=wx1+(x-x1)*k1;

syr=wy1+(y-u1)*k2;

sx=wx1+(x-x1)*k1;

sy=wy1+(y-y1)*k2;

setcolor(WHITE);

r=sqrt((sxr-sx0)*(sxr-sx0)+(syr-sy0)*(syr-sy0));

arc(sx,sy,theta,theta+Pi,r);

getarccoords(&ArcInfo);

line(sx,sy,,;

line,,;

rs=rs*;

// 这里使半圆半径不断增大

}

}

void ammonite()

// 画菊石图

{

int xasp,yasp;

int i,wx1,wx2,wy1,wy2,theta,sx,sy;

struct arccoordstype ArxInfo;

// 这个结构类型在头文件中可以查到

float

x1,x2,y1,y2,x,y,minx,maxx,sry,l,r,miny,maxy,k1,k2,aspr,sx0,sy0, sxr;

getaspectratio(&xasp,&yasp);

l=exp*50);

minx=l*cos*50);

// 赋初值

miny=l*sin*50);

// 赋初值

maxx=l*cos*50);

// 赋初值

maxy=l*sin*50);

// 赋初值

for(i=50;i<=254;++i)

{

l=exp*i)

x=l*cos*i);

y=l*sin*i);

if(xmaxx) maxx=x;// 求窗口x方向最大值 if(ymaxy) maxy=y;// 求窗口y方向最大值 }

x1=minx; // 窗口左边界赋值

x2=maxx; // 窗口右边界赋值

y1=miny; // 窗口下边界赋值

y2=maxy; //窗口上边界赋值

wx1=460; // 取定视口左边界

wx2=590; // 取定视口右边界

wy1=260; // 取定视口下边界

wy2=390; // 取定视口上边界

k1=(wx2-wx1)/(x2-x1);// 变换比例

k2=(wy2-wy1)/(y2-y1);// 变换比例

sx0=wx1+(0-x1)*k1;

sy0=wy1+(0-y1)*k2;

setcolor(WHITE);

setfillstyle(0,0);

bar3d(415,200,636,460,0,0);

for(i=50;i<=254;++i)

{

l=exp*i);

x=l*cos // 用户坐标下圆心x坐标

y=l*sin // 用户坐标下圆心y坐标

sxr=wx1+(x-x1)*k1;

syr=wy1+(y-y1)*k2;

sx=wx1+(x-x1)*k1; // 屏幕坐标下圆心x坐标

sy=wy1+(y-y1)*k2; // 屏幕坐标下圆心y坐标

r=sqrt((sxr-sx0)*(sxr-sx0)+(syr-sy0)*(syr-sy0)); r=r/n; // 画圆的半径

setcolor(WHITE);

setfillstyle(0,0); // 设置填充图样

fillellipse(sx,sy,r,r*aspr); // 画填充圆

}

}

C语言常用函数

C语言的常用库函数 函数1。absread()读磁盘绝对扇区函数 原形:int absread(int drive,int num,int sectnum,void *buf) 功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num 个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。 参数:drive=0对应A盘,drive=1对应B盘。 返回值:0:成功;-1:失败。 头文件:dos.h 函数2。abswrite()写磁盘绝对扇区函数 原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、 nsects=要写的扇区数(最多64K个); lsect=起始逻辑扇区号; buffer=要写入数据的内存起始地址。 功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。 返回值:0:成功;-1:失败。 头文件:dos.h 函数3。atof()将字符串转换成浮点数的函数 原形:double atof(const char *s) 功能:把s所指向的字符串转换成double类型。 s格式为:符号数字.数字E符号数字 返回值:字符串的转换值。 头文件:math.h、stdlib.h 函数4。atoi()将字符串转换成整型数的函数 原形:int atoi(const char *s) 功能:把s所指向的字符串转换成int类型。 s格式为:符号数字 返回值:字符串的转换值。若出错则返回0。 头文件:stdlib.h 函数5。atol()将字符串转换成长整型数的函数 原形:long atol(const char *s)

c语言画图.

VC绘图/游戏简易教程--1:创建新项目 [本期目标] 学会在VC 里面创建项目,并写简单的程序。 VC 写程序要有项目的概念,一个项目可以有多个 .cpp 文件,多个项目构成一个工作区。先记住这两个英文单词吧: ?Workspace: 工作区 ?Project: 项目 现在开始创建一个新项目。 ?VC6 创建新项目请参考这个视频:https://www.doczj.com/doc/c91662369.html,/news/View.aspx?id=65 ?VC2008 创建新项目请参考:https://www.doczj.com/doc/c91662369.html,/news/View.aspx?id=85 ?VC2010 与VC2008 相似。 看明白后,自己动手建立项目试试,并输入以下代码: #include void main() { printf("Hello World!"); } 尤其是之前用tc 的同学,请务必创建新项目试一试。成功执行后,会看到屏幕上有“Hello World!”几个字符。然后,再重新输入以下代码试试(无需理解代码含义): #include #include void main() { initgraph(640, 480); line(200, 240, 440, 240); line(320, 120, 320, 360); getch(); closegraph(); } 执行后应该可以看到屏幕正中央有一个十字。 看到该十字后,本节课结束。

VC绘图/游戏简易教程--2:简单绘图,学习单步执行 [本期目标] 学会简单绘图,并学会简单调试。 先看看上一课的代码,我加上了注释 #include // 绘图库头文件,绘图语句需要 #include // 控制台输入输出头文件,getch()语句需要 void main() { initgraph(640, 480); // 初始化640x480的绘图屏幕 line(200, 240, 440, 240); // 画线(200,240) - (440,240) line(320, 120, 320, 360); // 画线(320,120) - (320,360) getch(); // 按任意键 closegraph(); // 关闭绘图屏幕 } 解释一下: 1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。注意:左上角是原点(0,0),也就是说,y轴和数学的y轴是相反的。 2. getch实现按任意键功能,按任意键后,程序继续执行。否则,程序会立刻执行closegraph以至于看不到绘制的内容。 [作业] 用线条画出更多的图形,要求不少于10条直线。 [学习单步执行] 完成作业后(务必完成),开始试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了): 1. 将VC取消最大化,并缩小窗口,能看到代码就行。 2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。 3. 当箭头指向initgraph语句时,按F10,能看到窗口发生了变化。 4. 将新的绘图窗口和VC并排放,相互不要有覆盖。这步很重要,否则绘图内容将会被VC窗口覆盖。

C语言中常见的功能函数

C语言中常见的功能函数(应掌握的编程) 1、两个变量值的交换 void exchang(float *x,float *y) /*形参为两个变量的地铁(指针)*/ {float z; z=*x; *x=*y; *y=z; } void main() {float a,b; scanf(“%f%f”,&a,&b); exchang(&a,&b); /*因为形参是指针,所以实参必须给变量的地址,不能给变量名*/ printf(“a=%f,b=%f”,a,b); } 2、判断一个整数的奇偶 int jou(int n) /*如果是奇数返回1,否则返回0*/ { if(n%2==0) return 0; return 1; } 3、小写字符转换成大写字符 根据实参传给形参的字母,判断是否是小写字母,如果是小写字母,则转换成大写字母,否则不进行转换,函数返回转换后或原来的字符。 本函数仿照toupper()库函数的功能编写(toupper(c) 是将变量c字母转换成大写字母,如果不是小写字母不转换)。 char toupper1(char ch) {if(ch>=?a?&&ch<=?z?) ch-=32; /*小写字母比对应的大写字母ASCII码值大32*/ return ch; } 4、判断一个字符是否是字母(或数字) 根据实参传给形参的字符,判断是否是字母(或数字),如果是字母(或数字)返回1,否则返回0。此函数是根据库函数isalpha()(或isdigit())来编写的。 int isalpha1(char ch) /*判断是否是字母*/ {if(ch>=?A?&&ch<=?Z?||ch>=?a?&&ch<=?z?) return 1; else return 0; } int isdigit1(char ch) /*判断是否是数字字符*/ {if(ch>=?0?&&ch<=?9?) return 1; else return 0; } 5、根据学生成绩,返回其等级 char fun(float cj) {char c; switch((int)cj/10) {case 10:

利用C语言图形函数绘图

计算机图形学课程实 验 报 告 实验题目 班 级 姓 名 学 号 指导教师 日 期 西安理工大学理学院应用数学系 二零一二年春季学期 信息与计算科学专业基础课 Computer Graphics Report Of course experiment

实验说明 试验目的: 掌握TurboC 语言图形函数的使用和学会绘制一般图形。 试验地点: 教九楼401 数学系机房 实验要求(Direction ):1. 每个学生单独完成;2.开发语言为TurboC 或C++,也可使用其它 语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5. 自己保留一份可执行程序,考试前统一检查和上交。 实验内容 实验题一 1.1实验题目 用如下图1所示,图中最大正n 边形的外接圆半径为R ,旋转该正n 边形,每次旋转θ角度,旋转后的的n 边形顶点落在前一个正六边形的边上,共旋转N 次,请上机编程绘制N+1个外接圆半径逐渐缩小且旋转的正n 边形。要求:(1) n 、R 、N 、θ要求可以人为自由控制输入;(2)N+1个正六边形的中心(即外接圆的圆心)在显示屏幕中心。 利用C 语言图形函数绘图 实验 1

1.2实验目的和意义 1. 了解如何利用C语言和图形函数进行绘图; 2. 熟悉并掌握C语言的图形模式控制函数,图形屏幕操作函数,以及基本图形函数; 3. 通过对Turbo C进行图形程序设计的基本方法的学习,能绘制出简单的图形; 4. 通过绘制N+1个正n边形,了解图形系统初始化、图形系统关闭和图形模式的控制,并熟练运用图形坐标的设置,包括定点、读取光标、读取x和y轴的最大值以及图形颜色的设置。 1.3程序制作步骤(包括算法思想、算法流程图等) 算法思想: 1.自动搜索显示器类型和显示模式,初始化图形系统,通过printf、scanf语句控制半径r、边数n、多边形的个数k、边的每次旋转角度d,的自由输入; 2.给定一内接圆半径r,由圆内接多边形的算法公式: x[i]=r*cos((i+1) *2.0*pi/n)+320.0 y[i]=240.0-r*sin(2.0*pi/n *(i+1)) 确定出多边形N的各个顶点坐标,然后利用划线函数line(),连接相邻两点,即形成一个正多边形。 3.根据边与角的关系,以及线段定比分点公式,可知旋转后的多边形的各个顶点的坐标。公式如下: x[i]=(x[i]+x[i+1]/(k+1)) y [i]=(y[i]+y[i+1]/(k+1)) k=360/(n*d) (n为多边形的边数,d为多边形旋转的度数) 然后与第二步相同,利用划线函数line(),连接形成又一个旋转过的正多边形,这样就形成了所要绘制的图形; 4.关闭图形系统。 1.4主程序 程序代码: /*----- 多边形的逐次旋转------*/ #include "stdio.h" #include "conio.h" #include "math.h"

C语言常用IO函数

一些比较常用的io函数,总结了一下,一块贴出来了 stdin标准输入流 stdout标准输出流 stderr标准错误流 字符IO函数 1.int getchar() 说明:从stdin读取1个字符 返回值:成功,返回该字符;出错,返回EOF; 2.int fgetc(FILE fp) 说明:功能同getchar,默认从文件fp读取; 返回值:成功,返回该字符;出错,返回EOF; 可以重定向 3.int getc(FILE fp) 说明:功能与fgetc相同,但getc既可以被用作 函数实现,也可以被用作宏实现,并且它的编码效率 可能会更高. 可以重定向 4.int putchar(int ch) 说明:向stdout输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 5.int fputc(int c,FILE fp) 说明:功能同putchar,默认向fp输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 6.int putc(int c,FILE fp) 说明:功能与fputc相同,但putc与getc一样既可能被用作 函数实现,也可能被用作宏实现,并且它的编码效率可能会更高;可以重定向 字符串IO函数 1.char gets(char str) 说明:从stdin读取字符串(不包括'n')写入到字符串str中; 返回值:成功,返回str首地址;错误,返回NULL; 2.char fgets(char str,int N,FILE fp) 说明:默认从文件fp中读取N个字符(包括'n')写入到字符串str中,

如果实际输入字符串小于N,fgets自动添加'n', 返回值:成功,返回字符串首地址;错误或遇到EOF,返回NULL;可以重定向 3.int puts(const char str) 说明:向stdout输出字符串str,然受输出一个'n', 返回值:成功,返回非负值;错误,EOF; 4.int fputs(const char str,FILE fp) 说明:功能同puts,默认向文件fp写入字符串str; 返回值:成功,返回非负值;错误,EOF; 可以重定向 格式化IO函数 1.int scanf(const char format,...) 说明:根据format从stdin格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 2.int fscanf(FILE fp,const char format,...) 说明:功能同scanf,默认从文件fp读取, 返回值:成功,返回读取的项数;出错或遇到文件尾,返回EOF 可以重定向 3.int sscanf(const char buf,const char format,...) 说明:根据format从buf格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 4.int printf(const char format,...) 说明:根据format格式化数据,并输出到stdout 返回值成功,返回输出字符数;错误,返回负数; 5.int fprintf(FILE fp,const char format,...) 说明:功能同printf,默认向文件fp写入; 可以重定向 6.int sprintf(char buf,const char format,...) 说明:根据format格式化数据,并输出到buf, 返回值:成功,返回输出字符数;错误,返回负数

C语言图形开发库函数graphics

函数名: fillellipse 功能: 画出并填充一椭圆 用法: void far fillellipse(int x, int y, int xradius, int yradius); 程序例: #include #include int main(void) { int gdriver = DETECT, gmode; int xcenter, ycenter, i; initgraph(&gdriver,&gmode,""); xcenter = getmaxx() / 2; ycenter = getmaxy() / 2; for (i=0; i<13; i++) { setfillstyle(i,WHITE); fillellipse(xcenter,ycenter,100,50); getch(); } closegraph(); return 0; } Graphics 类 .NET Framework 类库 Graphics 类 封装一个GDI+ 绘图图面。无法继承此类。 命名空间:System.Drawing 程序集:System.Drawing(在system.drawing.dll 中) 语法 Visual Basic(声明)

Public NotInheritable Class Graphics Inherits MarshalByRefObject Implements IDeviceContext, IDisposable Visual Basic(用法) Dim instance As Graphics C# public sealed class Graphics : MarshalByRefObject, IDeviceContext, IDisposable C++ public ref class Graphics sealed : public MarshalByRefObject, IDeviceContext, IDisposable J# public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable JScript public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable 备注 Graphics类提供将对象绘制到显示设备的方法。Graphics与特定的设备上下文关联。 通过调用从System.Windows.Forms.Control继承的对象的Control.CreateGraphics方法,或通过处理控件的Control.Paint事件并访问System.Windows.Forms.PaintEventArgs类的Graphics属性,可以获取Graphics。 继承层次结构 System.Object System.MarshalByRefObject System.Drawing.Graphics 线程安全 此类型的任何公共静态(Visual Basic 中的Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。 平台 Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

C语言常用函数手册

1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

利用C语言画图例子

利用C语言画图例子 1) /*#include // 就是需要引用这个图形库 #include void main() #include #include void main() { initgraph(640, 480); // 这里和 TC 略有区别 circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100 getch(); // 按任意键继续 closegraph(); // 关闭图形界面 printf("***\n"); } */ 2) /* #include #include #include void main() { // 设置随机函数种子 srand((unsigned) time(NULL)); // 初始化图形模式 initgraph(640, 480); int x, y; char c; setfont(16, 8, "Courier"); // 设置字体

while(!kbhit()) { for (int i=0; i<479; i++) { setcolor(GREEN); for (int j=0; j<3; j++) { x = (rand() % 80) * 8; y = (rand() % 20) * 24; c = (rand() % 26) + 65; outtextxy(x, y, c); } setcolor(0); line(0,i,639,i); Sleep(10); if (kbhit()) break; } } // 关闭图形模式 closegraph(); } */ 3) /* #include #include #include

C语言中绘图的函数库全解

C语言中绘图的函数库 图形和图像函数包含在graphics.h里面 (一) 像素函数 56. putpiel() 画像素点函数 57. getpixel()返回像素色函数 (二) 直线和线型函数 58. line() 画线函数 59. lineto() 画线函数 60. linerel() 相对画线函数 61. setlinestyle() 设置线型函数 62. getlinesettings() 获取线型设置函数 63. setwritemode() 设置画线模式函数 (三)、多边形函数 64. rectangle() 画矩形函数 65. bar() 画条函数 66. bar3d() 画条块函数 67. drawpoly() 画多边形函数 (四)、圆、弧和曲线函数 68. getaspectratio()获取纵横比函数 69. circle()画圆函数 70. arc() 画圆弧函数 71. ellipse()画椭圆弧函数 72. fillellipse() 画椭圆区函数 73. pieslice() 画扇区函数 74. sector() 画椭圆扇区函数 75. getarccoords()获取圆弧坐标函数 (一) 像素函数 56. putpixel() 画像素点函数 功能:函数putpixel() 在图形模式下屏幕上画一个像素点。 用法:函数调用方式为void putpixel(int x,int y,int color); 说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。 此函数相应的头文件是graphics.h 返回值:无 例:在屏幕上(6,8)处画一个红色像素点: putpixel(6,8,RED); (二) 直线和线型函数

C语言中常用的库函数

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin

反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。

c语言基本画图函数

c语言基本画图函数 基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。1、画点 I画点函数void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。 在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。 关于点的另外一个函数是:int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数. int far getmaxx(void);返回x轴的最大值。 int far getmaxy(void); 返回y轴的最大值。 int far getx(void); 返回游标在x轴的位置。 void far gety(void); 返回游标有y轴的位置。 void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。 void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。 2、画线 I. 画线函数 TURBO C提供了一系列画线函数,下面分别叙述: void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。 void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。 void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。 void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。 void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。 在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周,依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。 void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。下面举一个用drawpoly()函数画箭头的例子。 #include #include int main() {

C语言常见基本词汇及词汇解释

C语言常用基本词汇及其他提示语运算符与表达式: 1.constant 常量 2. variable 变量 3. identify 标识符 4. keywords 关键字 5. sign 符号 6. operator 运算符 7. statement语句 8. syntax 语法 9. expression 表达式 10. initialition初始化 11. number format 数据格式 12 declaration 说明 13. type conversion 类型转换 14.define 、definition 定义 条件语句: 1.select 选择 2. expression 表达式 3. logical expression 逻辑表达式 4. Relational expression 关系表达式 5.priority优先

6. operation运算 7.structure 结构 循环语句: 1.circle 循环 2. condition 条件 3. variant 变量 4. process过程 5.priority优先 6. operation运算 数组: 1. array 数组 2. reference 引用 3. element 元素 4. address 地址 5. sort 排序 6. character 字符 7. string 字符串 8. application 应用函数: 1.call 调用 2.return value 返回值 3.function 函数

4. declare 声明 5. `parameter 参数 6.static 静态的 7.extern 外部的 指针: 1. pointer 指针 2. argument 参数 3. array 数组 4. declaration 声明 5. represent 表示 6. manipulate 处理 结构体、共用体、链表: 1 structure 结构 2 member成员 3 tag 标记 4 function 函数 5 enumerate 枚举 6 union 联合(共用体) 7 create 创建 8 insert 插入 9 delete 删除 10 modify 修改

C语言画图

#include #include #include #include main() { int graphdrv=VGA; int graphmode=VGAHI; float p,v,m,t,t1,a,y1,y2,f,y3,r,g=10,v0,pi=3.14; printf("Please input the number:"); printf("\n"); scanf("p=%f,r=%f",&p,&r); initgraph (&graphdrv,&graphmode,"\\TC\\bgi"); line(100,250,100,450); line(500,250,500,450); line(100,450,500,450); line(100,300,500,300); for(t1=0;t1<=500;t1=t1+0.002) { cleardevice(); line(100,250,100,450); line(500,250,500,450); line(100,450,500,450); line(100,300,500,300); y1=20+g*t1*t1/2; circle(300,y1,r); t1=t1; if(y1>=300) break; } v0=g*t1; if(p>1) { v=4*pi*r*r*r/3; f=1*g*v; m=v*p; a=(m*g-f)/m; for(t=0;t<=500;t=t+0.002) { cleardevice(); line(100,250,100,450); line(500,250,500,450);

C语言常用函数名及用法

字符函数和字符串函数 头文件:字符串函数头文件:#include 字符函数头文件:#include putchar:输出一个 putchar(a):输出字符变量a的值,(其中a可为字符变量,整形变量,字符常量,整形常量) getchar:输入一个字符 a=getchar(); putchar(a);结果为b printf(格式控制符,输出列表); scanf(格式控制符,地址列表); 输入形式与格式控制部分对应 1.当为两个连续输入时:scanf(“%d%d”,&a,&b); 输入量数据之间可为:一个或多个空格,也可以用enter,tab无逗号时输入时不能用逗号作分隔。 2.格式控制中两%d有两个空格,输入时两数据间应有两个空格或两个以上。 3.当为“:”时输入时应对应一样,当为:scanf(“a=%d,b=%d”,&a,&b);输入a=12,b=22。 4.当格式控制符为%c时,输入时空格与转义字符都作为有效字符记录在里面:scanf(“%c%c%c”,&a,&b,&c); 输入时:ab c↙空间不能插空格或其他符

5. Scanf(“%d%c%f”,&a,&b,&c); 输入时1234a123h26↙在输入遇到时空格回车 tab或其他非法输入就会认定输入完毕 Gets (字符数组):读入字符串函数 Gets(str)从键盘键入a b↙括号里为字符数组str的起始地址,Puts(字符数组):输出字符串函数 Strcat(字符数组1,字符数组2):字符串连接函数(2连接在1后面) Strcpy和strncpy:字符串复制函数 Strcpy(字符数组1,字符数组2):将2复制到1 数组1 要为数组名,字符串2可以为数组名或者字符串 Strncpy(str1,str2,2):将str2的前两个字符复制到str1,取代str1的前两个字符 Strcmp:字符串比较函数 Strcmp(str1,str2):相等则为0(对字符串自左向右逐个字母进行比较) Strlen(字符数组):测字符串的实际长度 Strlwr(字符串)将字符串转换为大写 Strupr(字符串)将字符串转换为小写

C语言图形编程函数大全

C语言图形编程 一、字符屏幕 一、屏幕操作函数 1. clrscr()清除字符窗口函数 2. window()字符窗口函数 3. gotoxy()光标定位函数 4. clreol() 清除光标行尾字符函数 5. insline() 插入空行函数 6. delline() 删除一行函数 7. gettext() 拷进文字函数 8. puttext() 拷出文字函数 9. movetext() 移动文字函数 二、字符属性函数 10. textmode() 文本模式函数 11. highvideo()高亮度函数 12. lowvideo() 低亮度函数 13. normvideo(void); 14. textcolor() 文本颜色函数 15. textattr() 文本属性函数 16.textbackground() 文本背景函数 三、屏显状态函数 17. wherex() 光标处x坐标函数 18. wherey() 光标处y坐标函数 19. gettextinfo() 获取文本窗口信息函数 在Borland C++里面提供了字符屏幕和图形函数。字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。同样,对图形函数的操作,也提供了(Viewport)。也就是说图形函数的操作都是在视口上进行。图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。 窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符。视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。 字符和图形状态下,屏幕上的位置都是由它们的行与列所决定的。有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。 了解字符屏幕和图形函数与窗口和视口的关系是很重要的。例如,字符屏幕光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。

C语言常用的库函数

库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并 提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的 编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供 的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录 列出ANSI C建议的常用库函数。 由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、 与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不 能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据 需要,查阅有关系统的函数使用手册。 1.数学函数 使用数学函数时,应该在源文件中使用预编译命令: #include或#include "math.h" 函数名函数原型功能返回值 acos double acos(double x);计算arccos x的值,其中-1<=x<=1计算结果 asin double asin(double x);计算arcsin x的值,其中-1<=x<=1计算结果 atan double atan(double x);计算arctan x的值计算结果 atan2double atan2(double x, double y);计算arctan x/y的值计算结果 cos double cos(double x);计算cos x的值,其中x的单位为弧度计算结果 cosh double cosh(double x);计算x的双曲余弦cosh x的值计算结果 exp double exp(double x);求e x的值计算结果

相关主题
文本预览
相关文档 最新文档