课程设计模板Word文件下载.docx

上传人:b****3 文档编号:7970693 上传时间:2023-05-09 格式:DOCX 页数:19 大小:301.68KB
下载 相关 举报
课程设计模板Word文件下载.docx_第1页
第1页 / 共19页
课程设计模板Word文件下载.docx_第2页
第2页 / 共19页
课程设计模板Word文件下载.docx_第3页
第3页 / 共19页
课程设计模板Word文件下载.docx_第4页
第4页 / 共19页
课程设计模板Word文件下载.docx_第5页
第5页 / 共19页
课程设计模板Word文件下载.docx_第6页
第6页 / 共19页
课程设计模板Word文件下载.docx_第7页
第7页 / 共19页
课程设计模板Word文件下载.docx_第8页
第8页 / 共19页
课程设计模板Word文件下载.docx_第9页
第9页 / 共19页
课程设计模板Word文件下载.docx_第10页
第10页 / 共19页
课程设计模板Word文件下载.docx_第11页
第11页 / 共19页
课程设计模板Word文件下载.docx_第12页
第12页 / 共19页
课程设计模板Word文件下载.docx_第13页
第13页 / 共19页
课程设计模板Word文件下载.docx_第14页
第14页 / 共19页
课程设计模板Word文件下载.docx_第15页
第15页 / 共19页
课程设计模板Word文件下载.docx_第16页
第16页 / 共19页
课程设计模板Word文件下载.docx_第17页
第17页 / 共19页
课程设计模板Word文件下载.docx_第18页
第18页 / 共19页
课程设计模板Word文件下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

课程设计模板Word文件下载.docx

《课程设计模板Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计模板Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。

课程设计模板Word文件下载.docx

包括主要功能模块的算法设计思路以及对应的工作流程图

4)调试分析过程描述:

包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图)

5)总结:

课程设计完成了哪些主要功能,是否有扩展功能?

还有哪些地方需要改进?

课程设计的学习与体会?

有哪些合理化建议?

6)附录:

主要原程序代码含必要的注释

3、答辩:

在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。

四、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

下达任务书,说明设计要求,收集资料

实验3#517

9.15

总体方案设计、详细设计

10.2

编写程序调试分析

11.3

撰写报告并上交,答辩

12.25

五、应收集的资料及其主要参考文献

[1]谭浩强.C程序设计(第三版)[M]北京:

清华大学出版社,2005年9月

[2]谭浩强.C程序设计题解与上机指导(第三版)[M]北京:

清华大学出版社,2005年7月

发出任务日期:

2013年9月1日        指导教师签名:

计划完成日期:

2013年12月25日     基层教学单位责任人签名:

主管院长签章

目   录

1.设计目的与要求…………………………………………………页码

2.总体设计…………………………………………………………页码

3.详细设计…………………………………………………………页码

3.1功能模块设计………………………………………………页码

3.2数据结构设计………………………………………………页码

4.调试分析…………………………………………………………页码

5.附录………………………………………………………………页码

6.答辩记录(正文处留出适当空白)…………………………页码

1.目的与要求

目的:

设计一个简单计算器

1.能够实现实数的加减乘除,乘方运算

熟练运用循环、选择结构的能力

功能需求:

能够重复实现实数的加减乘除,乘方运算

2.总体设计

为实现实数的加减乘除乘方运算,先要对所要进行的运算符号进行选择,此时用switch语句来对输入的不同的运算符号进行选择,并且,在乘方运算中需要调用一个pow函数进行运算。

要让输入的值保留两位小数,需使输出的值的类型为%.2f。

为使程序能够实现重复运算,可以使用while语句,要使得输入0运算上0时结束程序,while语句的判断条件则为(a!

=0)。

3.详细设计

主函数:

voidmain()

{

charsrc[MAX_SIZE];

doubled;

OPERATEpostsrc[MAX_SIZE];

memset(src,0,MAX_SIZE);

printf("

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"

);

■■\n"

■★☆简单计算器程序☆★设计团队:

****周颢、曹宣勇、庞轩****■\n"

■程序说明:

■\n"

■1.程序支持加减乘除四则运算、指数、对数、以及sin、cos、tan运算。

■2.计算结果精确到小数点后八位。

■3.定义常量pi=3.141592。

  ■\n"

■4.Sin、Cos、Tan运算结果以弧度制显示。

■5.支持混合运算,支持带括号的表达式。

■6.输入quit结束程序。

■\n"

请输入需要计算的表达式:

\n"

scanf("

%s"

src);

while(strcmp(src,"

quit"

))

{

_Proc(src);

SrcFunProc(src);

PostSrc(src,postsrc);

d=Calculate(postsrc,3.1415926);

printf("

计算结果是:

%f\n\n输入表达式进行下一次计算...\n"

d);

memset(src,0,MAX_SIZE);

}

}

函数功能简介:

作为整个计算器程序的操作接口,定义charsrc[MAX_SIZE]字符数组存储将要计算的数据并且判断计算需要完成的对应功能并传递给子函数。

子函数1:

voidSrcFunProc(char*src)

charBuffer[MAX_SIZE];

char*p=src,*q=Buffer;

while(*p!

='

\0'

switch(*p)

case'

e'

:

//Cforexp

*q++='

C'

;

p+=3;

break;

default:

*q++=*p++;

*q='

strcpy(src,Buffer);

定义各种运算的切换条件。

子函数2:

doubleCalculate(LPOPERATElpOperator,doublex)

doublestack[MAX_SIZE],y1,y2;

inttop=-1;

LPOPERATElpOptr=lpOperator;

stack[++top]=0;

while(lpOptr->

Operator!

#'

if(!

lpOptr->

Operator)

stack[++top]=(lpOptr++)->

Operand;

else

if('

x'

==lpOptr->

stack[++top]=x;

lpOptr++;

else

switch((lpOptr++)->

+'

y1=stack[top--];

y2=stack[top--];

stack[++top]=y1+y2;

-'

stack[++top]=y2-y1;

*'

stack[++top]=y1*y2;

/'

stack[++top]=y2/y1;

^'

stack[++top]=pow(y2,y1);

A'

stack[++top]=sin(y1);

B'

stack[++top]=cos(y1);

stack[++top]=exp(y1);

D'

stack[++top]=log(y1);

E'

stack[++top]=log10(y1);

F'

stack[++top]=tan(y1);

returnstack[top];

定义各种计算的操作数的个数以及计算方式,对得到的相应的操作数进行判断并计算。

4.调试分析

问题一:

1.主要问题:

乘方运算中只能进行指数为自然数的运算,而不是实数。

2.出错原因:

仅仅考虑指数为自然数的情况,没有考虑到指数为实数的算

3.解决方法及其效果:

调用“pow”函数,实现实数之间的乘方运算。

调用函数还使得运算简便,减少代码。

问题二:

编程过程中忽视了除法运算中分母不能为零的情况。

解决方法:

使用“if”语句进行判断,判断条件为输入的c是否为0。

问题三:

使用switch语句时输出了不同的运算值

原因及其解决方法:

使用break语句跳出switch。

5.附录

#include<

stdio.h>

stdlib.h>

math.h>

string.h>

#defineMAX_SIZE256

enumBOOL{FALSE,TRUE};

typedefstructtagOPERATE{

doubleOperand;

charOperator;

}OPERATE,*LPOPERATE;

voidPostSrc(char*src,LPOPERATElpOperator);

intIsDigit(char);

intisp(charch);

inticp(charch);

intLocate(charch);

intgetOperand(char*s,int*len,double*oprd);

doubleCalculate(LPOPERATElpOperator,doublex);

voidSrcFunProc(char*src);

void_Proc(char*src);

staticcharOperator[]="

#(+-*/^"

staticintInPriority[]={0,1,3,3,5,5,7};

staticintOutPriority[]={0,10,2,2,4,4,6};

吴佳顺、吴佩颖、吴星宇、肖瑞群■\n"

■1.程序支持加减乘除四则运算、乘方■\n"

■2.计算结果精确到小数点后两位。

■3.支持混合运算,支持带括号的表达式。

■4.输入0结束程序。

\n"

123+-\n"

456*/\n"

789=^\n"

0.End\n"

0"

%.2f\n"

scanf("

intLocate(charch)

inti=0;

for(i=0;

Operator[i]!

i++)

if(Operator[i]==ch)

returni;

return-1;

intisp(charch)

<

=ch&

&

'

Z'

>

=ch)

return9;

returnInPriority[Locate(ch)];

inticp(charch)

return8;

returnOutPriority[Locate(ch)];

void_Proc(char*src)

while('

!

=*p)

==*p&

('

==*(p-1))

0'

p++;

voidPostSrc(char*src,LPOPERATElpOperator)

char*p=src,y;

charstack[MAX_SIZE];

intoffset=0;

stack[++top]='

if(IsDigit(*p))

getOperand(p,&

offset,&

Operand);

p+=offset;

lpOptr->

Operand=Operand;

Operator=0;

==*p)

(lpOptr++)->

Operator='

p'

Operand=3.14159266;

p+=2;

)'

for(y=stack[top--];

y!

y=stack[top--])

Operator=y;

isp(y)>

icp(*p);

stack[++top]=y;

stack[++top]=*p++;

while(top!

=-1)

Operator=stack[top--];

intIsDigit(charch)

if(('

9'

=ch)||'

.'

==ch)

returnTRUE;

returnFALSE;

intgetOperand(char*s,int*len,double*oprd){

char*p=s,ch=*s++;

doublez=0,x=0;

intbits=0;

intpoint=FALSE;

while(IsDigit(ch)==TRUE){

if(ch=='

){

if(point==TRUE)

point=TRUE;

else{

if(point==TRUE){

x*=10;

x+=ch-'

bits++;

z*=10;

z+=ch-'

ch=*s++;

while(bits-->

0)x/=10;

z+=x;

*oprd=z;

*len=s-p-1;

6.答辩记录

问题

回答

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2