1、(3)初始化图形系统模块(4)计算器计算函数模块(5)窗口函数模块(6)设计鼠标图形函数模块(7)获取特殊键函数模块 六、软件环境:Visual c+6.0七、课程设计要求:在计算机上操作,通过Visual c+6.0,设计出“计算器”程序。八、应提交的材料:实习报告一份,容包含“计算器”程序代码。设计报告:程序代码:#include math.hconio.hstdio.hstdlib.hstdarg.hgraphics.hstring.hctype.h#define UP 0x48 #define DOWN 0x50 #define LEFT 0x4b #define RIGHT 0x4d
2、 #define ENTER 0x0d void *rar;struct palettetype palette;int GraphDriver;int GraphMode;int ErrorCode; int MaxColors;int MaxX, MaxY;double AspectRatio;void drawboder(void);void initialize(void);void computer(void);void changetextstyle(int font, int direction, int charsize);void mwindow(char *header);
3、int specialkey(void) ;int arrow();int main() initialize(); computer(); closegraph(); return(0);void initialize(void) int xasp, yasp; GraphDriver = DETECT; initgraph( &GraphDriver, &GraphMode, );ErrorCode = graphresult(); if( ErrorCode != grOk ) printf(Graphics System Error: %sn, grapherrormsg( Error
4、Code ) ); exit( 1 ); getpalette( &palette ); MaxColors = getmaxcolor() + 1; MaxX = getmaxx(); MaxY = getmaxy(); getaspectratio( &xasp, &yasp ); AspectRatio = (double)xasp/(double)yasp;void computer(void) struct viewporttype vp; int color, height, width; int x, y,x0,y0, i, j,v,m,n,act,flag=1; float n
5、um1=0,num2=0,result; charum5,str220=,c,temp20=; char str1=1230.456+-789*/Qc=%; mwindow( Calculator color = 7; getviewsettings( &vp ); width=(vp.right+1)/10; height=(vp.bottom-10)/10 ; x = width /2; y = height/2; setfillstyle(SOLID_FILL, color+3); bar( x+width*2, y, x+7*width, y+height ); setcolor( c
6、olor+3 ); rectangle( x+width*2, y, x+7*width, y+height ); setcolor(RED); outtextxy(x+3*width,y+height/2,0.); x =2*width-width/2; y =2*height+height/2; for( j=0 ; j4 ; +j ) for( i=0 ; i=x0+6*width) x=x0; m=0; else x=x+width+width/2; m+; if(v=LEFT) if(x=x0) x=x0+6*width; m=4; x=x-width-width/2; m-; if
7、(v=UP) if(y=7*height) y=y0; y=y+height+height/2; n+; c=str1n*5+m; if(isdigit(c)|c=.) if(flag=-1) - flag=1; sprintf(temp,c); strcat(str2,temp); setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,str2); if(c=+) num1=atof(str2); act=1; outtex
8、txy(5*width,height,- if(strcmp(str2,)=0) flag=-1; act=2;* act=3;/ act=4; act=5;% act=6;= num2=atof(str2); switch(act) case 1:result=num1+num2;break; case 2:result=num1-num2; case 3:result=num1*num2; case 4:result=num1/num2; case 5:result=pow(num1,num2); case 6:result=fmod(num1,num2);%f,result); outt
9、extxy(5*width,height,temp);c num1=0; num2=0;Q)exit(0); return;void mwindow( char *header ) int height; cleardevice(); setcolor( MaxColors - 1 ); setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); height = textheight( H settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 ); settextjustify( CENTER_TEXT, TOP_TEXT ); outte
10、xtxy( MaxX/4, 2, header ); setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); drawboder();void drawboder(void) setlinestyle( SOLID_LINE, 0, NORM_WIDTH ); rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top );int arrow() int size; int raw=4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4; setfillstyle(SOLID_FI
11、LL,2); fillpoly(8,raw); size=imagesize(4,4,16,16); rar=malloc(size); getimage(4,4,16,16,rar); putimage(4,4,rar,XOR_PUT); return 0;/int specialkey(void) int key; while(bioskey(1)=0); key=bioskey(0); key=key&0xff? key&0xff:key8; return(key);总结:1)实际操作过程中遇到的问题及解决方法:1.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1
12、b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 z=x+y;t=z/100;printf(,t);对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。2.输入输出的数据的类型与所用格式说明符不一致int a=3;float b=4.5;printf(“%f%dn”,a,b);它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数
13、据按%d,作为整数输出)2)设计总结及心得体会。通过C语言编程的学习,培养了我独立思考和综合运用平时知识的能力,巩固了课程学习的容,掌握了工程软件设计的基本方法,强化了上机动手编程能力。更加了解了C语言的便利性和可用性。同时了解到了程序设计需要团队合作,通过这次实习活动增进了同学之间的默契,体会到了毕业后工作中团队合作的重要性和必要性。 当一个程序从自己的手中诞生的时候,心中充满了自豪感和成就感,让我对动手操作实践更有兴趣了。八、时间:实验心得 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。感高克宁老师的高标准、严要求,感实验课上小老师们的耐心指点,也感我在实验中经历过的点点滴滴伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言,我会更加努力一周 课时:12学时
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1