admin 管理员组

文章数量: 1087139


2024年3月21日发(作者:gamma函数考研考吗)

C语言序设计论文程

精品资料

C语言程序设计论文

学校:天津电子信息职业技术学院

系别:电子技术系

专业:通信技术

班级:通信S13-26

学号:89757

姓名:王磊

C语言课程设计报告

仅供学习与交流,如有侵权请联系网站删除 谢谢

2

精品资料

一、 设计题目:计算器

二、 设计目标:进一步加深、巩固学生所学专业课程(《C语言》)的基本

理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能

力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的

技能,充分发挥广大同学的潜力,使他们通过本次课程设计而得到全面的

锻炼。

三、 设计内容:

1.设计系统的功能框图、流程图;2.编写计算器的源程序代码;3.上机调

试;4.答辩;

5.书写实习报告。

四、 课程设计所用设备:每人一台计算机。

五、 课程设计系统组成及模块功能:

(1) 主函数模块

(2) 设置系统进入图形模块

(3) 初始化图形系统模块

(4) 计算器计算函数模块

(5) 窗口函数模块

(6) 设计鼠标图形函数模块

(7) 获取特殊键函数模块

六、软件环境:Visual c++6.0

七、 课程设计要求:在计算机上操作,通过Visual c++6.0,设计出“计算器”

程序。

仅供学习与交流,如有侵权请联系网站删除 谢谢

3

精品资料

八、 应提交的材料:实习报告一份,内容包含“计算器”程序代码。

设计报告:

程序代码:#include

#include

#include

#include

#include

#include

#include

#include

#include

#define UP 0x48

#define DOWN 0x50

#define LEFT 0x4b

#define RIGHT 0x4d

#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);

仅供学习与交流,如有侵权请联系网站删除 谢谢

4

精品资料

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( ErrorCode ) );

exit( 1 );

}

getpalette( &palette );

MaxColors = getmaxcolor() + 1;

MaxX = getmaxx();

MaxY = getmaxy();

getaspectratio( &xasp, &yasp );

AspectRatio = (double)xasp/(double)yasp;

}

void computer(void)

仅供学习与交流,如有侵权请联系网站删除 谢谢

5

精品资料

{

struct viewporttype vp;

int color, height, width;

int x, y,x0,y0, i, j,v,m,n,act,flag=1;

float num1=0,num2=0,result;

char cnum[5],str2[20]={""},c,temp[20]={""};

char str1[]="1230.456+-789*/Qc=^%";

mwindow( "Calculator" );

color = 7;

getviewsettings( &vp );

width=(+1)/10;

height=(-10)/10 ;

x = width /2;

y = height/2;

setfillstyle(SOLID_FILL, color+3);

bar( x+width*2, y, x+7*width, y+height );

setcolor( color+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 ; j<4 ; ++j )

{

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

{

setfillstyle(SOLID_FILL, color);

setcolor(RED);

仅供学习与交流,如有侵权请联系网站删除 谢谢

6

精品资料

bar( x, y, x+width, y+height );

rectangle( x, y, x+width, y+height );

sprintf(str2,"%c",str1[j*5+i]);

outtextxy( x+(width/2), y+height/2, str2);

x =x+width+ (width / 2) ;

}

y +=(height/2)*3;

x =2*width-width/2;

}

x0=2*width;

y0=3*height;

x=x0;

y=y0;

gotoxy(x,y);

arrow();

putimage(x,y,rar,XOR_PUT);

m=0;

n=0;

strcpy(str2,"");

while((v=specialkey())!=45)

{

while((v=specialkey())!=ENTER)

{

putimage(x,y,rar,XOR_PUT);

if(v==RIGHT)

if(x>=x0+6*width)

{

x=x0;

仅供学习与交流,如有侵权请联系网站删除 谢谢

7

精品资料

}

m=0;

else

{

}

if(v==LEFT)

if(x<=x0)

{

}

else

{

}

x=x-width-width/2;

m--;

x=x0+6*width;

m=4;

x=x+width+width/2;

m++;

if(v==UP)

if(y<=y0)

{

}

else

{

y=y0+4*height+height/2;

n=3;

y=y-height-height/2;

n--;

}

if(v==DOWN)

仅供学习与交流,如有侵权请联系网站删除 谢谢

8

精品资料

if(y>=7*height)

{

y=y0;

n=0;

}

else

{

}

y=y+height+height/2;

n++;

putimage(x,y,rar,XOR_PUT);

}

c=str1[n*5+m];

if(isdigit(c)||c=='.')

{

if(flag==-1)

{

strcpy(str2,"-");

flag=1;

}

sprintf(temp,"%c",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);

strcpy(str2,"");

仅供学习与交流,如有侵权请联系网站删除 谢谢

9

精品资料

act=1;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

{

if(c=='-')

{

if(strcmp(str2,"")==0)

flag=-1;

else

{

}

}

if(c=='*')

{

num1=atof(str2);

strcpy(str2,"");

act=3;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

}

if(c=='/')

{

仅供学习与交流,如有侵权请联系网站删除 谢谢

10

num1=atof(str2);

strcpy(str2,"");

act=2;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

精品资料

num1=atof(str2);

strcpy(str2,"");

act=4;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

}

if(c=='^')

{

num1=atof(str2);

strcpy(str2,"");

act=5;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

}

if(c=='%')

{

num1=atof(str2);

strcpy(str2,"");

act=6;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

}

if(c=='=')

{

num2=atof(str2);

switch(act)

{

仅供学习与交流,如有侵权请联系网站删除 谢谢

11

精品资料

}

case 1:result=num1+num2;break;

case 2:result=num1-num2;break;

case 3:result=num1*num2;break;

case 4:result=num1/num2;break;

case 5:result=pow(num1,num2);break;

case 6:result=fmod(num1,num2);break;

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

sprintf(temp,"%f",result);

outtextxy(5*width,height,temp);

}

if(c=='c')

{

num1=0;

num2=0;

flag=1;

strcpy(str2,"");

setfillstyle(SOLID_FILL,color+3);

bar(2*width+width/2,height/2,15*width/2,3*height/2);

outtextxy(5*width,height,"0.");

}

if(c=='Q')exit(0);

}

putimage(x,y,rar,XOR_PUT);

return;

}

void mwindow( char *header )

{

int height;

仅供学习与交流,如有侵权请联系网站删除 谢谢

12

精品资料

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 );

outtextxy( MaxX/4, 2, header );

setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 );

drawboder();

}

void drawboder(void)

{

struct viewporttype vp;

setcolor( MaxColors - 1 );

setlinestyle( SOLID_LINE, 0, NORM_WIDTH );

getviewsettings( &vp );

rectangle( 0, 0, , );

}

int arrow()

{

int size;

int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4};

setfillstyle(SOLID_FILL,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;

}

仅供学习与交流,如有侵权请联系网站删除 谢谢

13

精品资料

/

int specialkey(void)

{

int key;

while(bioskey(1)==0);

key=bioskey(0);

key=key&0xff? key&0xff:key>>8;

return(key);

}

总结:

1)实际操作过程中遇到的问题及解决方法:

1.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1

b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行

语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未

发现错误,就需要看一下上一行是否漏掉了分号。{ z=x+y;t=z/100;printf("%f",t);}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL

不同的)。

2.输入输出的数据的类型与所用格式说明符不一致int a=3;float

b=4.5;printf(“%f%dn”,a,b);它们并不是按照赋值的规则进行转换(如把4.5转换为

4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只

把最后两个字节的数据按%d,作为整数输出)

2)设计总结及心得体会。

仅供学习与交流,如有侵权请联系网站删除 谢谢

14

精品资料

通过C语言编程的学习,培养了我独立思考和综合运用平时知识的能力,巩

固了课程学习的内容,掌握了工程软件设计的基本方法,强化了上机动手编程

能力。更加了解了C语言的便利性和可用性。同时了解到了程序设计需要团队

合作,通过这次实习活动增进了同学之间的默契,体会到了毕业后工作中团队

合作的重要性和必要性。

当一个程序从自己的手中诞生的时候,心中充满了自豪感和成就感,让我对动

手操作实践更有兴趣了。

八、时间:

实验心得

通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。

其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微

的自豪感使人难忘。感谢高克宁老师的高标准、严要求,感谢实验课上小老师们的耐心指点,也感

谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着

我自己去挖掘。对C语言,我会更加努力

一周 课时:12学时

仅供学习与交流,如有侵权请联系网站删除 谢谢

15


本文标签: C语言 设计 模块 分号 学习