C语言图形编程

C语言图形编程
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位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。

一、屏幕操作函数

编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。对这些操作,Borland C++提供了一系列字符屏幕操作函数来实现。

1. clrscr()清除字符窗口函数

功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。

用法:此函数调用方式为 void clrscr(void);

说明:括号中void 表示无参数。

该函数相应的头文件为conio.h

返回值:无

例:使用这个函数的例子见4.clreol()函数的实例中。

2. window()字符窗口函数

功能:函数window()用于在指定位置建立一个字符窗口。

用法:此函数调用方式为 void window(int left,int top,int right,int bottom);

说明:函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。

若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。

此函数的头文件为conio.h。

返回值:无

例:调用这个函数的实现例见3.gotoxy()函数的例子中。

3. gotoxy()光标定位函数

功能:函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。

用法:这个函数调用方式为void gotoxy(int x,int y);

说明:括号里x,y是,光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标不会移动。

此函数在字符状态(有时称为文本状态)下经常用到,其相应的头文件为conio.h

返回值:无

例:下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。

#i nclude"conio.h>

void border(int startx,int starty,int endx,int endy)

{

register int i;

gotoxy(1,1);

for(i=0;i<=endx-startx;i++)

putch('-');

gotoxy(1,endy-starty);

for(i=0;i<=endx-startx;i++)

putch('-');

for(i=2;i<=endy-starty;i++){

gotoxy(1,i);

putch('1');

gotoxy(endx-startx+1,i);

putch('1');

}

}

main()

{

void border(int,int,int,int);

clrscr();

window(6,8,38,12);

border(6,8,38,12);

gotoxy(2,2);

printf("window 1");

window(8,16,40,24);

border(8,16,40,24);

gotoxy(3,2);

printf("window 2");

getch();

}

4. clreol() 清除光标行尾字符函数

功能:函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。用法:它的调用方式为void clreol(void);

说明:此函数的相应头文件为 conio.h

返回值:无

例:程序中使用了函数clreol()和clrscr()

#i nclude "conio.h>

void main()

{

register int i;

gotoxy(6,8);

printf("This is a test of the clreol() function.");

getch();

gotoxy(6,8);

clreol();

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

printf("Hello\n");

getch();

clrscr();

}

5. insline() 插入空行函数

功能:函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。用法:此函数的调用方式为void insline(void);

说明:该函数只用于文本方式,并且在当了符窗口才有效。

这个函数的对应头文件是 conio.h

返回值:无

例:程序给出了insline()函数的用法。

#i nclude "conio.h"

void main()

{

registser int i;

clrscr();

for(i=1;i<24;i++)

{

gotoxy(1,i);

printf("This is line %d\n",i);

}

getch();

gotoxy(1,10);

insline();

getch();

}

6. delline() 删除一行函数

功能:函数delline()删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。

用法:此函数调用方式为 void delline(void);

说明:注意,如果当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。

这个函数相应的头部文件是conio.h

返回值:无

例:先在屏幕上显示16行文字,然后删除第4行

#i nclude "conio.h"

void main()

{

register int i;

clrscr();

for(i=0;i<16;i++) printf("line %d\n",i);

getch();

gotoxy(1,4);

delline();

getch();

}

7.gettext() 拷进文字函数

功能:函数gettext()用于文本状态下将屏幕上矩形域内的文字拷进内存。

用法:该函数调用方式为 int gettext(int left,int top,int right,int bottom,void *buffer);

说明:函数中参数left,top为矩形区域的左上角坐标,right,bottom为其右下角坐标,这些坐标是屏幕的绝对坐标,不是窗口的相对坐标。buffer指针必须指向一个足够保存该矩形域内文字的内存。所用内存大小按下式计

算:

点头用字节数=矩形哉内的行数×矩形域的列数×2

这里将行数乘以列数再乘以2的原因是保存屏幕上每个字符要用两个字节存储单元,一个字节存储单元存放字符本身,而另一个存放其属性。

此函数相应的头文件是 conio.h

返回值:若函数调用成功则返回1,否则返顺0。

例:把屏幕左上角点(1,1)和右下角点(10,10)的区域拷贝到buf指向的内存中去。

buf=(char *)malloc(10*10*2);

if(!buf)gettext(1,1,10,10,buf);

8. puttext() 拷出文字函数

功能:函数puttext()把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个矩形区域中。用法:此函数调用方式为 int puttext(int left,int top,int right,int bottom,void *buffer);

说明:函数里left,top为给出的屏幕上矩形区域的左上角点,right,bottom为其右下角点,其坐标是用屏幕的绝对坐标,而不是用窗口的相对坐标。

该函数相应的头文件为conio.h

返回值:函数调用成功返回值为1,否则返回0。

例:屏幕上某个区域内容拷进buf指向的内存中,然后又将这些文字拷出到屏幕上新位置。

buf=(char *)malloc(10*10*2);

gettext(1,1,10,10,buf);

puttext(16,16,30,30,buf);

9. movetext() 移动文字函数

功能:函数movetext()将屏幕上一个矩形区域的文字移到另一个区域上。

用法:该函数调用方式为 int movetext(int left,int top,int right,int bottom,int newleft,int newtop); 说明:上面left,top为矩形区域上角坐标,right,bottom为其右下角坐标,newleft,newright为移动到区域左上角坐标。这些坐标是屏幕的绝对坐标,不是窗口的相对坐标。

若要把屏幕上一段文字移到屏幕的另一位置,那么使用movetext()函数比用gettext()然后再用puttext()效率更高。

此函数相应的头文件是conio.h

返回值:如果有一个以上坐标无效,那么函数返回值为0,否则返回1。

列:把屏幕左上角点(8,8),右下角点(20,20)的矩形区域文字移动到左上角点(10,10)的位置上:

movetext(8,8,20,20,10,10);

10. textmode() 文本模式函数

功能:函数textmode()针屏幕设置为文本模式(或者说字符状态)。

用法:函数调用方式为 void textmode(int mode);

说明:参数mode必须为表1-2中所示的模式之一⑴以用模式名(符号值),也可以用其等价的整数值。

表1-2 文本模式

----------------------------------------------------------------

模式名(符号值) 等价整数值说明

BW40 0 40列黑白

C 40 1 40列彩色

BW80 2 80列黑白

C 80 3 80列彩色

MONO 7 80列单色

LASTMODE -1 上次模式

----------------------------------------------------------------

调用该函数后,屏幕复位,并且所有字符的属性恢复其缺省值。

此函数对应的头文件是conio.h

返回值:无

例:把屏幕设置为80列彩色模式

textmode(C80);

二、字符属性函数

用户可以设置字符显示的高亮度或低亮度的写的符闪烁及其背景颜色等。具有这些操作的函数称为字符属性函数。除了仅支持单模式和单色的显示卡外,字符属性函数适用于其余所有的显示卡。

11. highvideo()高亮度函数

功能:函数highvideo()设置屏幕为高亮度显示。

用法:此函数调用方式为void highvideo(void);

说明:调用该函数后,写到屏幕上的字符是高亮度的。此函数只适用于文本模式状态(或说字符屏幕状态)。

这个函数对应的头文件为 conio.h

返回值:无

例:设置屏幕显示为高亮度的。

highvideo();

12. lowvideo() 低亮度函数

功能:函数lowvideo()设置屏幕为低亮度显示。

用法:该函数调用方式为void lowvideo(void);

说明:调用该函数后,此时写到屏幕上的字符是低亮度的。这个函数只适用于文本模式状态(或说字符屏幕状态)。

此函数相应的头文件是 conio.h

返回值:无

例:设置屏幕显示为低亮度的

lowvideo();

13. normvideo(void);

功能:函数normvideo()设置屏幕为正常亮度显示。

用法:这个函数调用方式为void normvideo(void);

说明:调用该函数后,此时写到屏幕上的字符是正常亮度的,该函数只适用于文本模式状态(或说字符状屏幕状态)。

此函数相应的头文件为conio.h

返回值:无

例:设置屏幕显示为正常亮度。

normvideo();

14. textcolor() 文本颜色函数

功能:函数textcolor()设置字符屏幕下文本颜色(或字符颜色),它也可以用于使字符闪烁。

用法:这个函数调用方式为void textcolor(int color);

说明:函数中参数color的有效值可取表1-3中的颜色名(即宏名)或等价值。

表1-3 颜色名与等价值

---------------------------------------------------

名等价值含义

BLACK 0 黑

BLUE 1 蓝

GREEN 2 绿

CYAN 3 青

RED 4 红

MAGENTA 5 洋红

BROWN 6 棕

LIGHTGRAY 7 淡灰

DRAKGRAY 8 深灰

LIGHTBLUE 9 淡蓝

LIGHTGREEN 10 淡绿

LIGHTCYAN 11 淡青

LIGHTRED 12 淡红

LIGHTMAGENTA 13 淡洋红

YELLOW 14 黄

WHITE 15 白

BLINK 128 闪烁

------------------------------------------------------------

textcolor()函数执行后,只影响其后输出探险符颜色,而不改变已经在当前屏幕上的其它字符颜色。显然,如果需要输出的字符闪烁,只要将函数中参数color取为BLINK即可,如果要使字符带颜色闪烁,就必须将所选的颜色值与128作“或”运算。

此函数相应的头文件是 conio.h

返回值:无

例:下面程序段中第一条语句使输出的字符闪烁,第三条语句使字符输出为经色同时闪烁:

textcolor(BLINK);

printf("hello");

textcolor(RED|BLINK);

15. textattr() 文本属性函数

功能:函数textattr()用于设置文本属性,即字符背景颜色、字符本身颜色和字符闪烁与否。

用法:函数调用方式为void textattr(int attribute);

说明:设置字符背景颜色属性字节的最简单方法是,用所选的背景颜色值乘以16再与字符颜色值作按位或(OR)运算。例如需要红色背景、绿色字符,就设置成RED*16|GREEN,若还要字符闪烁,就把背景颜色值、字符颜色值

与闪烁值一起

按位作或运算。如蓝背景、黄字符且闪烁,就设置成为:

YELLO|128|BLUE*16

第0位用于设置字符颜色。

此函数相应的头文件为conio.h

返回值:无

例:设置背景为蓝色、字符为红色并且字符闪烁:

textattr(RED|128|BLUE*16);

16.textbackground() 文本背景函数

功能:函数textbackground()设置字符屏幕下文本背景颜色(或字符背景颜色)。

用法:此函数调用方式为void textbackground(int bcolor);

说明:参数bcolor 的有效值取表1-4背景颜色(即宏名)或等价值。

表1-4 背景颜色与等价值

-------------------------------------------------

背景颜色等价值含义

-------------------------------------------------

BLACK 0 黑

BLUE 1 蓝

GREEN 2 绿

CYAN 3 青

RED 4 红

MAGENTA 5 洋红

BROWN 6 棕

-------------------------------------------------

调用该函数只影响后续写的字符背景颜色,而不改变当前显示在屏幕上的字符背景颜色。

这个函数对应的头文件是conio.h

返回值:无

例:设置文本背景颜色为蓝色:

textbackground(BLUE));

三、屏显状态函数

这里提供三个在文本模式下屏幕显示状态的函数

17. wherex() 光标处x坐标函数

功能:函数wherex()返回当前窗口中光标处横向坐标。

用法:此函数调用方式为int wherex(void);

说明:这个函数调用无参数,其对应的头文件是conio.h

返回值:函数调用成功,返回光标处x坐标值。

例:调用这个函数的实例见18.wherey()函数的例中。

18. wherey() 光标处y坐标函数

功能:函数wherey()返回当前窗口中光标处纵向坐标。

用法:该函数调用方式为int wherey(void);

说明:此函数调用无参数,其相应的头文件是conio.h

返回值:函数调用成功,返回光标处y坐标值。

例:调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos ,ypos。

int xpos,ypos;

xpos=wherex();

ypos=wherey();

19. gettextinfo() 获取文本窗口信息函数

功能:函数gettextinfo()获取当前文本窗口信息,并存放在实参结构中。

用法:函数调用方式为void gettextinfo(struct text-info *info);

说明:函数中参数info 为struct text-info结构型指针,struct text-info结构在此函数相应的头文件中定义为:

struct text-info{

unsigned char winleft; // 窗口左上角x坐标

unsigned char wintop; // 窗口左上角y坐标

unsigned char winright; // 窗口右下角x坐标

unsigned char winbottom; // 窗口右下角y坐标

unsigned char attribute; // 文本属性

unsigned char normattr; // 正常属性

unsigned char currmode; // 当前屏显模式

unsigned char screenhight // 文本窗口高度(以行数计)

unsigned char screenwidth; // 文本窗口宽度(以字符个数计)

unsigned char curx; // 光标处x坐标

unsigned char cury; // 光标处y坐标

};

记住,调用函数gettextinfo()时,要传递struct text-info结构型指针或该结构的首地址,不要传递结构变量本身。

这个函数对应的头文件是conio.h

返回值:返回文本窗口角点坐标、高宽度、文本属性等值,并存放在info所指向的结构变量中。

例:程序语句说明如何正确调用gettextinfo()函数:

struct text-info win-status;

gettextinfo(&win-status);

二、图形显示

一、确定显示卡

二、选择显示模式

三、图形显示

20. detectgraph() 显示卡检测函数

21. initgraph() 图形初始化函数

22. getdrivername() 获取图形驱动程序名的指针

23. getgraphmode() 获取图形模式函数

24. getmoderange()获取模式值范围函数

25. getmaxmode()获取最大显示模式函数

26. getmodename()获取显示模式名函数

27. graphdefaults()图形设置复位缺省值函数

28. setgraphmode() 设置图形模式函数

29. restorecrtmode() 恢复文本显示模式函数

30. graphresult() 图形操作结果函数

31. grpaherrormsg() 图形错误信息函数

32. setgraphbufsize()设置图形缓冲区大小函数

33. setactivepage() 设置可输出显示页函数

34. setvisualpage() 设置可见显示页数

35. closegraph()关闭图形模式函数

一、确定显示卡

微机系统显示部分由显示器(monitor)和显示卡(adapter)两部分组成。显示器是独立于主机的一种外部设备,显示卡或称显示适配卡,也有的称图形卡,是插在主机上的一块电路板。但也有的显示卡与主机板设计在一起。显示卡包括寄存器组、存储器和控制电路三大部分。其中存储器又包括显示RAM和ROM BIOS两部分,微机对显示屏幕的所有操作都是通过显示卡来实现的。因此要进行图形显示,首先要确定计算机上安装的是何种显示卡。一种方法是询问计算机或终端使用者,确定将要使用的显示卡类型。这种方法很难,因为甚至专业程序员也不总是能确定他正在使用什么样的硬件。另一种方法是用软件查询硬件以识别当前的配置。如果有一些识别硬件的标准,这就很简单了。在Borland C中对现在所使用的各种显示卡提供了支持,这只要调用detectgraph()函数就可以了,该函数为程序员确定计算机上使用的显示卡类型。

二、选择显示模式

显示模式是指显示卡支持的分辨率与相应的颜色配置。每台计算机都配置了某种类型显示卡,可以为该显示卡指定显示模式。

三、图形显示

进行图形显示首先要确定显示卡,然后选择其显示模式。这些工作都可以调用图形功能函数来完成,其实就是把适合于显示卡的图形驱动程序装入内存。如果图形驱动程序未装入内存,那么图形函数就不能操作。

20. detectgraph() 显示卡检测函数

功能:函数detectgraph()在计算机上安装有显示卡的情况下,测定其显示卡的类型。

用法:此函数调用方式为void detectgraph(int *driver,int *mode);

说明:函数把driver所指向的整型变量设置为图形驱动程序的代码,把mode所指向的整型变量设置为显示卡

支持的最高有效模式(即该显示卡能支持的最高分辨率)。

该函数相应的头文件为graphics.h

返回值:返回适合于该显示卡的图形驱动程序的代码(也称等价值),并存放在driver指向的变量中。若计算机系统中无图形硬件,则由driver指向的变量设置为-2。

例:检测计算机是否装有显示卡:

int driver,mode;

detectgraph(&driver,&mode);

if(driver==-2)

{

printf("no graphics adapter in the computer");

exit(1);

}

21. initgraph() 图形初始化函数

功能:函数initgraph()用于初始化图形系统,把适合的图形驱动程序装入内存,设置图形函数所用的显示模式。用法:该函数调用方式为void initgraph(int *driver,int *mode,char *path);

说明: 1) 函数中参数driver指向图形驱动程序(或者等价值)。

在头部文件graphics.h中定义了图形驱动程序的宏名与其等价,如下:

宏名等价值

------------------------------

DETECT 0

CGA 1

MCGA 2

EGA 3

EGA64 4

EGAMONO 5

IBM8514 6

HERCMONO 7

ATT400 8

VGA 9

PC3270 10

--------------------------------

注:在现在的计算机中,上表中的许多显示卡已经过时,不再使用。

这样就不必担心图形驱动程序的准确名字,而只要用其等价值即可,若使用detect(即等价值0)时,initgraph()函数自动检测当前计算机中装有的显示卡类型,并且选用最大分辨率的显示模式。

2)参数mode指向显示模式或用等价值(风表1-5),mode所指的值必须是有效模式之一。

3)参数path指向图形驱动程序所在的路径,例如path="C:\TC\BG1".若没有指定路径,就在当前目录下寻找。

一般图形驱动程序包含在.BGI文件中,这些文件是系统可以得到的。这个函数对应的头文件是graphics.h。返回值:无

例:调用initgraph()自动检测硬件图形系统,并选用最大分辨率显示模式。

init drver,mode;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,"");

22. getdrivername() 获取图形驱动程序名的指针

功能:函数getdrivername()返回指向当前图形驱动程序名的指针。

用法:此函数调用方式为char *getdrivername(void);

说明:本函数可以用来检测显示卡,但只能在initgraph()设置图形驱动程序和显示模式之后调用。

该函数相应的头文件为graphics.h

返回值:返回一指针,指向含有当前图形驱动程序名的字符串。

例:显示当前图形驱动程序名:

#i nclude

#i nclude

void main()

{

int graphdriver=DETECT,graphmode;

char *s;

initgraph(&graphdriver,&graphmode,"");

s=getdrivername();

outtext("Using driver:");

outtext(s);

getch();

closegraph();

}

23. getgraphmode() 获取图形模式函数

功能:函数getgrapgmode()返回当前图形模式。

用法:该函数调用方式为int getgraphmode(void);

说明: getgraphmode()函数无参数调用。

这个函数对应的头文件是graphics.h

返回值:返回initgraph()或setgraphmode()所设置的当前图形模式值。

例:显示当前图形模式的代码:

printf("graphics mode is %d",getgraphmode());

24. getmoderange()获取模式值范围函数

功能:函数getmoderange()返回指定的图形驱动程序能够支持的最低和最高模式值。

用法:函数调用方式为 void getmoderange(int driver,int *lowmode,int himode);

说明:参数driver是用来调用此函数时,指定图形驱动程序等价值或宏名。

其有效值如下:

-------------------------------------

宏名等价值

-------------------------------------

DETECT 0

CGA 1

MCGA 2

EGA 3

EGA64 4

EGAMONO 5

IBM8514 6

HERCMONO 7

ATT400 8

VGA 9

PC3270 10

-------------------------------------

注:上表中的许多显示卡在现在的计算机上已经过时,仅作参考。

该函数想应的头文件为graphics.h

返回值:返回的最小和最大有效值存放在参数指针lowmode和himode分别指向的整型变量中。

例:显示当前图形硬件的显示模式的范围值:

#i nclude"graphics.h"

void main()

{

int driver,mode;

int low,high;

mode=0;

initgraph(&driver,&mode,"");

getmoderange(driver,&low,&high);

printf("mode range:%d--%d,low,high);

getch();

rstorecrtmode();

}

25. getmaxmode()获取最大显示模式函数

功能:函数getmaxmode()返回当前加载的图形驱动程序所支持的最大有效显示模式。

用法:函数调用方式为int getmaxmode(void);

说明:本函数无参数调用,返回图形驱动程序所支持的最大显示模式,所有图形驱动程序支持从0到getmaxmode()函数返回值中的任一整数值(对应的显示模式)。

这个函数对应的头文件是graphics.h

返回值:返回图形驱动程序所支持的显示模式最大值。

例:显示当前最大显示模式:

printf("The maxmode of this driver is %d\n",getmaxmode());

26. getmodename()获取显示模式名函数

功能:函数getmodename()可获取当前图形驱动程序支持的指定显示模式的名字。

用法:此函数调用方式为char *getmodename(int modecode);

说明:参数modecode为整型值。用以指定一显示模式值调用该函数。

这个函数对应的头文件graphics.h

返回值:返回指定模式值的显示模式名。

例:显示当前最大显示模式名:

#i nclude

#i nclude

void main()

{

int graphdriver=DETECT,graphmode;

int modecode;

char *s;

initgraph(&graphdriver,&graphmode,"");

modecode=getmaxmode();

s=getmodename(modecode);

outtext("The maxmode name is:");

outtext(s);

getch();

closegraph();

}

27. graphdefaults()图形设置复位缺省值函数

功能:函数grpahdefaults()把所有图形设置复位为它们的缺省值,这包括把图形视口复位为全屏幕;当前位置定位在0,0;调色板、背景色和绘图色都被复位;填充颜色、填充图样、文本文字和排齐方式都返回到它位的缺省值。

用法:此函数调用方式为void graphdefaults(void);

说明:该函数无参数调用。

这个函数相应的头文件为graphics.h

返回值:无

例:将图形系统恢复为其缺省值:

graphdefaults();

28. setgraphmode() 设置图形模式函数

功能:函数setgraphmode()用当前图形驱动程序有效的图形模式调用,一旦被调用,setgraphmode()选择一个新的图形模式。注意,图形显示模式必须事先由initgraph()初始化。

用法:该函数调用方式为void setgraphmode(int mode);

说明:参数mode调用时为指定的模式值。

此函数相应的头部文件是graphics.h

返回值:无

例:把VGA图形卡设置为VGAMED模式:

setgraphmode(VGAMED); // 图形系统已经初始化

29. restorecrtmode() 恢复文本显示模式函数

功能:函数restrecrtmode()将显示模式恢复到调用initgraph()时检测出的初始文本模式。

用法:这个函数调用方式为void restorecrtmode(void);

说明:函数restorecrtmode()和setgraphmode()函数一起使用,可以实现文本与图形显示之间的切换。

此函数对应的头文件为graphics.h

返回值:无

例:恢复显示模式为初始文本模式:

restorecrtmode();

30. graphresult() 图形操作结果函数

功能:函数graphresult()函数返回最后一次图形操作的代码。

用法:此函数调用方式为int graphresult(void);

说明: C为图形设置了代码,它们是从-15到0的整数值。其含义见表1-6。

调用该函数时,出错状态被复位为0,所以返回值(代码)最好存于变量中,以供需要时检测,

进行下一步图形操作。

这个函数对应的头部文件是graphics.h

返回值:返回最后一次图形操作结果相应的代码。

例:调用graphresult()函数的实例见下面grapherrormsg()函数的例子。

31. grpaherrormsg() 图形错误信息函数

功能:函数grapherrormsg()返回指向出错代码相应的错误信息字符串的指针。

用法:此函数调用方式为char *grapherrormsg(int errcode);

说明:参数errcode值,即出错代码由调用函数graphresult()获得。这里所有出错代码及相应的错误信息如表1-6中所述。

该函数相应的头文件是grpahics.h

返回值:返回一个指向该出错代码相应的错误信息字符串的指针。

例:用文字形式显示有关出错代码相应的错误信息:

int errorcode;

errorcode=graphresult();

printf(%s",grapherrormsg(errcode));

32. setgraphbufsize()设置图形缓冲区大小函数

功能:函数setgraphbufsize()用来设置有的图形函数(如floodfill等)所要用到的内存缓冲区大小。

用法:函数调用方式为unsigned setgraphbufsize(unsigned bufsize);

说明:这里无符号参数bufsize为所设置的缓冲区大小。

一般不需要用到该函数,仅使用由initgraph()函数产生的内存缓冲区就够了,缓冲区大小缺省时为4KB(即4096个字节),足以用来填充一个大约有650个顶点的多边形,但是为了节省内存,用户可以减少缓冲区的大小,或者由于需要更多的缓冲区内存,这时可用函数setgraphbufsize()来增加缓冲区大小。注意,使用setgraphbufsize()函数必须在调用initgraph()之前。

返回值:返回先前定义的图形缓冲区字节数。

例:调用此函数设置图形缓冲区为8KB字节:

setgraphbufsize(0x2000);

33. setactivepage() 设置可输出显示页函数

功能:函数setactiveage()设置用作图形输出的显示页。

用法:这个函数调用方式为void setactivepage(int pagenum);

说明:参数pagenum为选择的显示页号,如果调用成功,那么后续图形输出就写到选定的输出页上。缺省时是以0页作为当前输出页。该函数只在图形驱动程序及其显示模式支持多个显示页时才起作用。

此函数相应的头文件为graphics.h

返回值:无

例:设置1页为输出显示页:

setactivepage(1);

34. setvisualpage() 设置可见显示页数

功能:函数setvisualpage()设置屏幕上可见的显示页。

用法:函数调用方式为void setvisualpage(int pagenum);

说明:参数pagenum为设置的显示页号。缺省时是以0页作为当前可见页。调用这个函数和调用setactivepage()一样,仅在图形驱动程序及其显示模式支持多个显示页时才有效。用户可以用系统所支持的任何显示页,在它们之间切换,当然一次只能有一个显示页在屏幕上可见,有时需要在一页上建立后备图形葨图像,它在当时不显示,一旦需要时,可以马上切换到该页,如要实现动画效果,只需切换显示页号即可。用setvisualpage()函数选定实际显示在屏幕上的可见页,用setactivepage()函数选择当前图形输出页,从而实现图形页之间的显示切换,通常这两个函数都是缺省的,这时输出页就是可见页。若不绘制动画就不需要用到这两个函数。

这两个函数对应的头文件是graphics.h

返回值:无

例:设置可见页为第1页:

setvisualpage(1);

35. closegraph()关闭图形模式函数

功能:函数closegraph()将系统图形模式关闭,,复位到initgraph()初始文本模式,并且释放图形驱动程序、字体和内部缓冲区所占用的系统内存。

用法:这个函数调用方式为void closegraph(void);

说明:当用户的程序既用到图形输出又用到非图形输出时,应该调用此函数。特别是程序多次调用initgraph()函数的情况,要相应地调用closegraph函数,释放调用initgraph()所占用的内存,否则内存很快就满了,程序无法运行,如果程序结束,也可以用restorecrtmode()函数代替该函数,这样任何分配的内存都将释放。

此函数对应的头文件是graphics.h

返回值:无

例:关闭图形系统:

closegraph();

三、绘图函数-01

一、屏幕和视口设置与清除函数

36. setviewport() 设置图形视口函数

37. clearviewport()清除图形视口函数

38. cleardevice() 清除屏幕函数

39. getviewsettings() 获取图形视口设置函数

二、调色板和颜色函数

40. setpalette()设置调色板函数

41. setallpalette()设置整个调色板函

42. setbackcolor() 设置背景颜色函数

43. setcolor() 设置颜色函数

44. getbkcolor() 返回背景色函数

45. getcolor() 返回当前绘图颜色

46. getmaxcolor()返回最大颜色值函数

47. getpalette() 获取调色板函数

48. getpalettesize() 返回调色板大小函数

49. getdefaultpalette() 获取缺省调色板函数

三、屏幕位置函数

50. getmaxx()返回最大x坐标函数

51. getmaxy() 返回最大y坐标函数

52. getx() 返回x坐标函数

53. gety() 返回y坐标函数

54. moveto()函数

55. moverel() 相对移动函数

Borland C++提供了一整套综合性的图形函数,上节介绍了其中有关图形显示的函数,本节介绍其中的绘图函数,下节将介绍它的图形文本函数。

一般绘图时,首先要清除屏幕,设置图形视口,设置绘图颜色,然后在屏幕上某个位置画点或直线或曲线等。下面给出具有这些功能的函数。

一、屏幕和视口设置与清除函数

36. setviewport() 设置图形视口函数

功能:函数setviewport() 设置当前图形视口。

用法:函数调用方式为void setviewport(int left,int top,int right,int bottom,int clip);

说明:参数left,top是左上角坐标,right,bottom是右下角坐标,它们都是绝对屏幕坐标。

传给setviewport()的第五个参数是clip,如果clip为1,则超出视口的输出图形自动被裁剪掉,即所有作图限制于当前图形视口之内,如果clip为0,则不做裁剪,即作图将无限制地扩展于视口周界之外,直到屏幕边界。若无效参数传入setviewport(),则graphresult()函数返回值-11,先前视口设置仍有效。

setviewport()函数的对应头文件为 graphics.h

返回值:无

例:建立对角为(6,6)和(88,88)的视口,并带有裁剪功能:

setviewport(6,6,88,88,1);

37. clearviewport()清除图形视口函数

功能:函数clearviewport()清除当前图形视口,并把光标从当前位置移到原点(0,0)。

用法:该函数调用方式为void clearviewport(void);

说明:此函数调用执行后,当前图形视口将不复存在。

这个函数对应的头文件是graphics.h

返回值:无

例:清除当前图形视口,但并非整个屏幕:

clearviewport();

38. cleardevice() 清除屏幕函数

功能:函数cleardevice() 清除整个屏幕,并且将当前位置移到屏幕原点。

用法:此函数调用方式为void cleardevice(void);

说明:该函数类似于文本模式下的函数clrscr(),但clrscr()函数不能在图形方式下工作;同样cleardevice()函数不能在文本模式下工作。

这个函数相应的头文件为graphics.h

返回值:无

例:清除当前整个屏幕:

cleardevice();

39. getviewsettings() 获取图形视口设置函数

功能:函数getviewsettings()返回当前图形视口坐标和裁剪标志,坐标是绝对屏幕坐标,裁剪标志 1或 0。用法:此函数调用方式为void getviewsettings(struct viewporttype *info);

说明:该函数执行后,把有关当前视口的信息装入info指向的viewporttype型结构中。

viewporttype结构定义如下:

struct viewporttype {

int left,top,right,bottom;

int clipflag;

}

这里left,top中存放视口左上角坐标,right,bottom中存放视口右下角坐标,clipflag中存放裁剪标志,若clipflag为1 ,执行裁剪以防止超出视口边界,如果clipflag为0,则不对超出边界输出作裁剪。

getviewsettings()函数对应的头文件是graphics.h

返回值:无

例:显示当前视口角点坐标:

struct viewporttype info;

getviewsettings(&info);

printf("left:%d top:%d\n",info.left,info.top);

printf("right:%d bottom:%d\n",info.right,info.bottom);

二、调色板和颜色函数

进行图形显示或绘图,除了要知道用什么显示卡以及相应的图形驱动程序外,还必须了解它们支持什么样的调色板颜色。

40. setpalette()设置调色板函数

功能:函数setpalette()可对调色板上的颜色的色彩值重新设定。

用法: setpalette()函数调用方式为void setpalette(int value,int color);

说明:参数value为色彩值,color为色彩值相应的颜色名。当需要将一颜色指定为一色彩值地,即可调用此函数来设置。

表1-7 预先定义的调色板与色彩

-----------------------------------------------------------------

调色板色彩0 色彩1 色彩2 色彩3

-----------------------------------------------------------------

C0 黑色淡绿红浅黄色

C1 黑色淡青粉红白色

C2 黑色绿色红色棕色

C3 黑色青色品粉红淡灰色

-----------------------------------------------------------------

这个函数相对应的头文件为graphics.h

返回值:无

41. setallpalette()设置整个调色板函数

功能:函数setallpalette()对某个调色板上的所有颜色重新设定彩色值。

用法:函数调用方式为void setallpalette(struct palettetype *p);

说明:在低分辨率图形显示模式下,该函数无效。若函数调用成功,则把p指向的palettetype结构中的色彩值设置为当前调色板所有颜色的新色彩值。

palettetype结构定义如下:

struct palettetype {

unsigned char size;

signed char color[16];

};

这里必须把size设置为调色板颜色的数目,并把每个色彩值都装入color数组相应元素中,然后才可用于调用函数。

此函数对应的头文件是graphics.h

返回值:无

例:把16色的EGA/VGA显示卡调色板改为其前16种颜色:

struct palettetype;

int i;

for(i=0;i<16;i++) p.color[i]=i;

p.size=16;

setallpalette(&p);

42. setbackcolor() 设置背景颜色函数

功能:函数setbackcolor()把当前调色板颜色的第一个值改成指定的颜色值,以设置背景颜色。

用法:此函数调用方式为void setbackcolor(int color);

说明:参数color为指定的背景色,其有效值可以是颜色符号名,也可以是色彩值。表1-8列出了背景颜色供

c语言程序设计课程计算器设计报告

课程设计说明书 题目计算器程序设计 起讫日期2006 年7月3日至2006 年8月6日 所在院系软件学院 专业机械+软件班级04-2 学生姓名偶偶哦学号 指导教师 2006年8 月日

摘要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。 关键词:C语言T ubro c 2.0汉化版计算器时钟

目录 第一章综述 (1) 1.1 课题的现实意义 (1) 1.2 软件环境 (1) 1.3 硬件环境 (1) 第二章系统设计流程图 (2) 2.1 系统流程图 (2) 2.2 主要功能表 (2) 第三章系统分析和设计 (3) 3.1 图形的绘制和输出 (3) 3.2 文本的输出显示 (3) 3.3 计算函数的调用 (4) 3.4 程序的运行和退出 (5) 第四章系统测试 (6) 4.1 系统测试 (6) 4.2 调试 (6) 4.3 错误原因分析一 (6) 4.4 错误原因分析二 (6) 第五章用户使用说明书 (8) 5.1 运行Turbo C程序进入计算器界面 (8) 5.2 计算器的使用 (9) 5.3 退出程序 (9) 第六章工作总结 (10) 参考文献 (11) 附录: 源代码

C语言图形化编程基础入门

二、C 的图形模式编程 2.1图形编程基础 VC+EasyX 库里提供了图形函数就可以在VC 环境下进行图形编程。对图形函数的操作都是在视口(Viewport )上进行。用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。 视口是在图形屏幕状态下的概念,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。文本与图形都可以在视口上显示。 图形视口的左上角坐标为(0,0)。 例如:分辨率为640*480的视口像素点的定位 显示器在图形模式下工作时,显示的单位是像素点,通过控制各像素点的颜色和灰度等级来形成图形。因此绘图的第一步是进行图形模式的初始化,系统进入绘图模式。 (1) initgraph() 图形初始化函数 用法: HWND initgraph( int width, int height, int flag = NULL ); 示例:以下局部代码创建一个尺寸为 640x480 的绘图环境: initgraph(640, 480); 例2-1:调用initgraph()设置640*480的图形模式,在屏幕中央显示如下的图形。 参考代码: #include #include int main(){ initgraph(640, 480); line(200, 240, 440, 240); line(320, 120, 320, 360); getch(); (

closegraph(); return 0; } [学习单步执行] 试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了): 1. 将VC取消最大化,并缩小窗口,能看到代码就行。 2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。 3. 当箭头指向initgraph()语句时,按F10,能看到窗口发生了变化。 4. 将新的绘图窗口和VC并排放,相互不要有覆盖。这步很重要,否则绘图内容将会被VC窗口覆盖。 5. F10执行getch后,记得激活绘图窗口,并按任意键,否则程序不会继续执行。 6. closegraph后,直接按F5执行全部剩余程序,结束。 单步执行很重要,可以让你知道程序执行到哪里是什么效果,哪条语句执行出了问题等等。 例2-2:更进一步,打印出分辨率,并在屏幕中央显示如下的图形 参考代码 #include #include #include #define WIDTH 150 /*矩形的宽度*/ #define HEIGHT 100 /*矩形的高度*/ int startX,startY; /*矩形的左上角坐标*/ int maxX; int maxY; void init(); /*图形模式的初始化*/ void showText(); /*显示文本*/ void drawK(); /*画图形*/ int main(){ init(); showText(); drawK(); closegraph(); return 0; } void init(){

C语言课程设计计算器图形界面

C语言课程设计计算器图形界面

扬州大学 C语言课程设计报告 题目一个简易计算器的设计与实现 班级 学号 姓名 指导教师 成绩 老师评语: 扬州大学信息工程学院 年 6 月 25 目录

一、程序设计目的: (1) 二、程序设计内容: (1) 三、课程设计所补充的内容:补充的函数或算法…………3,4 四、系统总体设计 (4) 五、系统详细设计………………………………………5,6,7,8 六、运行结果………………………………………………8,9,10 七、系统调试…………………………………………8,9,10,11 八、课程设计体会总结………………………………8,9,10,11 1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。

经过课程设计能够达到综合设计C语言程序的目的。 (2)经过本课程设计,能够培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)经过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。(3)指数对数运算:如log (x),lnx,e的x次方等。(4)其它运算:如X!,x的累加等。(4)不允许调用库函数,使用自行开发的程序实现常见函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操

c语言编程打印基本图形

#include main() { int i,j,k,a=1; for(i=1;i<=6;i++) { for(j=1;j<=10;j++) { printf("%c",'A'); } printf("\n"); } printf("\n"); for(i=1;i<=6;i++) { for(k=1;k1;k--) printf(" "); for(j=1;j<=10;j++) { printf("%c",'A'); } printf("\n"); } printf("\n"); for(i=1;i<=6;i++) { for(j=1;j<=2*i-1;j++) { printf("%c",'A'); } printf("\n"); } printf("\n");

for(i=6;i>=1;i--) { for(j=1;j<=2*i-1;j++) { printf("%c",'A'); } printf("\n"); } printf("\n"); for(i=1;i<=6;i++) { for(k=10-i;k>1;k--) printf(" "); for(j=1;j<=2*i-1;j++) { printf("%c",'A'); } printf("\n"); } printf("\n"); for(i=6;i>=1;i--) { for(k=10-i;k>1;k--) printf(" "); for(j=1;j<=2*i-1;j++) { printf("%c",'A'); } printf("\n"); } printf("\n"); for(i=1;i<=6;i++) { for(k=1;k<10-i;k++) printf(" "); for(j=1;j<=2*i-1;j++) { printf("%d",a); } a++; printf("\n"); } printf("\n"); for(i=6;i>=1;i--)

C语言图形编程

C的图形编程 一、屏幕显示模式 1、文本模式 在文本模式又称字符模式。在此模式下整个屏幕被划分成(25行,80列),共25*80个文本单元,每个单元包括一个字符和一个属性, 字符即ASCII 码字符, 属性规定该字符的颜色和强度。 坐标原点在屏幕的左上角。如下图所示: 在头文件中定义了文本模式下一些函数常用的有; (1)定义一个文本窗口 void window(int left, int top, int right, int bottom); 如要定义一个窗口左上角在屏幕(20, 5)处, 大小为30列15行的窗口可写成: window(20, 5, 50, 25); (2)文本窗口颜色的设置 void textbackground(int color); //设置背景颜色: void textcolor(int color); //设置字符颜色: 有关颜色的定义见表1。 (3)光标定位 void gotoxy(int x, int y); (4)清屏 void clrscr(void); (5)其它函数 一、窗口内文本的输出函数

int cprintf("<格式化字符串>", <变量表>); int cputs(char *string);

int putch(int ch); cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf() 函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制, 而printf() 函数的输出为整个屏幕。 cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样, 只是受窗口大小的限制。 putch()函数输出一个字符到窗口内。 二、窗口内文本的输入函数 int getche(void); getche()函数从键盘上获得一个字符, 在屏幕上显示的时候, 如果字符超过了窗口右边界, 则会被自动转移到下一行的开始位置。 例1:下面这个程序使用了关于窗口大小的定义、颜色的设置等函数, 在一个屏幕上不同位置定义了7个窗口, 其背景色分别使用了7种不同的颜色。 #include #include //文本模式下的函数 void main(void) { int i; char *c[]={"BLACK", "BLUE", "GREEN", "CYAN", "RED", "MAGENTA", "BROWN", "LIGHTGRAY"}; textbackground(0); /* 设置屏幕背景色 */ clrscr(); /* 清除文本屏幕 */ cputs(c[0]); for(i=1; i<8; i++) { window(10+i*5, 5+i, 30+i*5, 15+i); /* 定义文本窗口 */ textbackground(i); /* 定义窗口背景色 */ clrscr(); cputs(c[i]); /* 清除窗口 */ } getch(); } 表1. 有关颜色的定义 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数数值含义字符或背景 ─────────────────────────── BLACK 0 黑 两者均可 BLUE 1 兰 两者均可 GREEN 2 绿 两者均可 CYAN 3 青 两者均可

c语言程序设计 《图形动画,一起去看流星雨》

/* Note:Y our choice is C IDE */ #include "stdio.h" #include"graphics.h" main() { int size,size2,i,size3,size4; void *buffer,*buffer2,*buffer3,*buffer4; int driver=DETECT,mode; initgraph(&driver,&mode,""); setcolor(15); rectangle(0,280,639,479); setfillstyle(0,1); floodfill(1,290,15); setcolor(15); arc(10,0,270,360,10); arc(30,0,180,270,10); arc(10,20,0,90,10); arc(30,20,90,180,10); setfillstyle(1,14); floodfill(20,10,15);/*xingxing*/ setcolor(12); circle(30,400,15); line(30,415,10,435); line(30,415,50,435); line(20,425,20,460); line(40,425,40,465);/*ren*/ circle(70,400,15); line(70,415,50,435); line(70,415,100,435); line(60,425,60,460); line(80,425,80,465); setcolor(15); arc(10,70,270,360,10); arc(30,70,180,270,10); arc(10,90,0,90,10); arc(30,90,90,180,10); setfillstyle(1,14); floodfill(20,80,15); setcolor(15);

C语言课程设计--计算器(图形界面)

扬州大 学 题目一个简易计算器的设计与实现 班级 学号 姓名 指导教师 成绩 老师评语: 扬州大学信息工程学院 2010 年6 月25

目录 一、程序设计目的: (1) 二、程序设计内容: (1) 三、课程设计所补充的内容:补充的函数或算法…………3,4 四、系统总体设计 (4) 五、系统详细设计………………………………………5,6,7,8 六、运行结果………………………………………………8,9,10 七、系统调试…………………………………………8,9,10,11 八、课程设计体会总结………………………………8,9,10,11

1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。通过课程设计可以达到综合设计C语言程序的目的。 (2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。(3)指数对数运算:如log(x),lnx,e的x次方等。(4)其他运算:如X!,x 的累加等。(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。 3 课题设计的补充知识 本程序通过int specialkey(void)和#include来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void)和#include来实现对光标的操作。计算机图形采用Turbo C 2.0绘图程序制作。因此涉及C的图形程序设计知识。此外,由于不允许调用库函数,则要自行开发程序实现sinx,cosx,e的x次方函数运算,则可以根据幂级数的展开式来设计实现其运算的算法,而x的阶乘和x的累加则可用for语句来实现。 最后,不得不说说四则运算的算法,有两种方法可以实现:(1)利用堆栈实现四则运算(2)还可以用递归整数的四则运算。 sinx函数 #include

C语言程序设计(郑莉)课后习题答案

C语言程序设计(郑莉)课后习题答案

C++语言程序设计(清华大学郑莉)课后习题答案 第一章概述 1-1 简述计算机程序设计语言的发展历程。 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。 1-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言。 1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点? 解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。 1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点? 解: 从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。 面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体--对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。 面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。 1-5 什么叫做封装? 解: 封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。 1-6 面向对象的软件工程包括哪些主要内容?

C语言程序设计试题集及其答案

第一章基础知识 一.填空 1. 每个C 程序都必须有且仅有一个__________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、___________ 、链接、加载 和执行。 3. 软件是程序,以及________ 、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________ ”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和_________ 两大类 。 6. C 语言是由_______ 组成的。 7. C 语言的函数可分为主函数main 、标准库函数和____________ 。 8. 一个函数是由两部分组成的,即:___________ 和函数体。 9. 编译是将C语言所编写的源程序___________ 成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为。 11. 机器语言是以___________ 形式表示的机器基本指令的集合,是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用____________ 来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以_____ 开头的代码行都先由预处理程序预处理。 13. C 程序的执行均是由执行_________ 开始。 15. 函数体即为包含在{2内的部分。它分为 __________ 和为完成功能任务由若干个C语句组成的执行部分。 16. C 语言程序中一条简单语句是以___________ 字符作为结束符的。 17. C 语言是结构化、 ________ 的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______ 程序” ,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______ 没有低级语言高。 20. 第一个系统体现结构化程序设计思想的教学工具语言是 _______ 语言。 解答: 1. main()

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语言图形函数编程模板的详解.doc

Turbo C提供了非常丰富的图形函数,所有图形函数的原型均在graphics, h中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,使用图形函数时要确保有显示器图形驱动程序*BGI,同时将集成开发坏境Options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。 1.图形模式的初始化 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化惭数: void far initgraph(int far *gdriver, int far *gmode, char *path); 其屮gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。 图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器就调用驱动程序EGAVGA.BGL 表2.图形驱动器、模式的符号常数及数值 图形驱动器(gdriver) 图形模式(gmode) ?色调分辨率符号常数数值符号常数数值 VGA 9 VGALO 0 16色640*200 VGAMED 1 16 色640*350 VGAHI 2 16 色640*480 PC3270 10 PC3270HI 0 2色720*350 DETECT 0用于硬件测试 例4.使用图形初始化函数设置VGA高分辨率图形模式 #include int main() int gdriver, gmode; gdriver=VGA; gmode=VGAHI; initgraph(&gdriver, &gmode, "c:\\tc"); bar3d(100, 100, 300, 250, 50, 1); /*画一长方体勺 getch(); closegraph(); return 0;

C语言图形编程

作者:未知来源:未知加入时间:2004-7-20 天新软件园 一、屏幕操作函数 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语言编程图形

1、设计题目:编写一个用*、|、+等符号组成的图案等式。 2、功能概述:通过趣味的等式激发想象力。 3、详细的流程图: 4、测试数据和程序运行结果:

5、完整的源程序代码: #include #include #include int cha(); \\*函数声明 int lingxing (); int jia(); int deng(); int wen(); main(){ \\*主函数 int a; printf("你将要看到一个很神奇的图案,随便按一个数字后按回车继续\n"); scanf("%d",&a); cha(); \\*引用函数 jia(); lingxing (); deng(); wen(); printf(“你看懂了这个图案了吗?矩形和菱形一起能组成什么图案呢?“); } int cha() 打印一个方型 { int i,j; for(i=1;i<=5;i++) { if(i==1) printf("*****\n"); else if(i==5) printf("*****\n"); else { for(j=1;j<=5;j++){ if(j==1) printf("*"); else if(j==5) printf("*\n"); else printf(" ");} } } } int lingxing(){ \\*打印一个菱形 int j,i; for(j=0;j<3;j++)

{ for(i=j;i<2;i++) printf(" "); for(i=0;i<1+2*j;i++) printf("*"); printf("\n"); } for(j=0;j<2;j++) { for(i=0;i<=j;i++) printf(" "); for(i=0;i<3-2*j;i++) printf("*"); printf("\n"); } } int jia(){ \\*打印加号int i; printf("\n"); for(i=0;i<4;i++){ if(i==2) printf("+ +++ +\n"); printf(" +\n"); } printf("\n"); } int deng(){ \\*打印等号int i; printf("\n"); for(i=0;i<3;i++) printf(" | |\n"); printf("\n"); } int wen(){ \\*打印一个问号printf(" **\n"); printf(" * *\n"); printf(" * *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf("\n");

图形变换C语言课程设计材料

2016-2017学年第二学期《C语言程序设计》 课程设计报告 题目:图形变换 专业:网络工程 班级:16(3) 姓名:代应豪 指导教师:代美丽 成绩: 计算机学院 2017 年 5月 10日

目录 ............... 错误!未定义书签。 1 设计要求 (3) 2 程序功能 (3) 3 核心算法 (3) 4 程序代码 (3) 5 运行结果 (16) 6 程序创新说明 (20) 参考文献 (20)

C语言图形程序设计主要内容包括图形模式的初始化、基本图形功能、图形窗口以及图形模式下的文本输出等图形函数的使用,以及按键处理和声音等。学生根据C语言图形程序设计指导书,通过编辑、编译、调试、运行示例代码,逐步掌握C语言图形应用程序中常用函数的作用与使用方法,并综合运用《C语言程序设计》课程所学知识,设计、实现具有创新功能的程序。成果物是一个综合性较好的图形应用程序和项目报告。 1 设计要求 设计并实现一个独特的图形应用程序。要求程序功能完整;包含屏幕颜色设置、图形绘制与填充、图形窗口设置、图形模式下文本输出、按键操作等;用户界面友好;代码量500行以上。 2 程序功能 使用if,for,switch,circle,line,arc及另外一些图形化编程函数实现一些画面效果(形状颜色变化,字体颜色大小设置等),最后使用line画线的方法画出中文“再见“二字。 3 核心算法 大量使用for循环,switch、if判断来实现一些画面的变化;大量使用函数调用的方式来保持代码的整洁;使用delay()函数来延迟两幅画面切换的时间;大量使用图形化编程的函数和方法来实现画面效果。 注:流程图无能为力了,不会画。 4 程序代码 #include #include #include #include /*模块化编程*/ /*函数调用*/ void start(); void tuoyuan(); void guochang();

C语言项目实践报告(图形程序设计)

大连东软信息学院 C语言项目实践报告 (图形程序设计) 系所: 专业: 学生姓名: 学生学号: 完成日期:2015 年8 月 大连东软信息学院 Dalian NeusoftUniversity of Information

目录 0 C语言图形程序开发环境(4学时)......................................................................................- 2 - 1 图形模式的初始化...................................................................................................................- 2 - 2 独立图形运行程序的建立.......................................................................................................- 2 - 3 屏幕颜色的设置和清屏函数(4学时)................................................................................- 3 - 4 基本图形函数(4学时)........................................................................................................- 3 - 5 封闭图形的填充(4学时)....................................................................................................- 4 - 6 有关图形窗口和图形屏幕操作函数(4学时)....................................................................- 5 - 7 图形模式下的文本输出(4学时)........................................................................................- 5 - 8 使用gotoxy & window函数(2学时) .................................................................................- 6 - 9 按键(4学时)........................................................................................................................- 6 - 10 TC向VC控制台程序移植(2学时) ...................................................................................- 7 - 11 菜单制作(6学时)..............................................................................................................- 7 - 12 综合程序设计(12学时)....................................................................................................- 8 - 参考文献.......................................................................................................................................- 9 -

c语言图形编程函数大全

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位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。 1 一、屏幕操作函数 编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。对这些操作,Borland C++提供了一系列字符屏幕操作函数来实现。

相关文档
最新文档