版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/1数据结构课程设计_实验报告(一)表达式求值(计算器)数据结构课程设计试验报告起止时间:2023.12.28-2023.12.31
1、输入:tan45
2、输出:1
3、执行结果:
:
设计过程中遇到的问题及解决方法:
问题:算数表达式以字符串输入,操作数和操作符的提取;
解决方法:两两操作符之间如有数字将中间的数字提取强制转换成double型;
附件:(程序源代码)
#include
#include
#include
#include
#defineN100
#definepai3.1415926
typedefstructyxj
{
charoperat;
intrank;
}yxj;
typedefstructstr
{
chardata[N];
}zs;
voidsjhs(void)
{
chars[10],a[10];
doubley,x;
printf("请输入(sincostan角度制)表达式:\n");
scanf("%s",s);
if(strstr(s,"sin")!=0)
{
inti=0,j=0;
while(s[i]!='\0')
{
if(s[i]>='0'
i++;
}
s[j]='\0';
x=atof(s);
y=sin(x*pai/180);
}
elseif(strstr(s,"cos")!=0)
{
inti=0,j=0;
while(s[i]!='\0')
{
if(s[i]>='0'
i++;
}
s[j]='\0';
x=atof(s);
y=cos(x*pai/180);
}
elseif(strstr(s,"tan")!=0)
{
inti=0,j=0;
while(s[i]!='\0')
{
if(s[i]>='0'
i++;
}
s[j]='\0';
x=atof(s);
y=tan(x*pai/180);
}
else
{
printf("格式错误\n");
return;
}
printf("%lf\n",y);
printf("*****1、连续*****\n");
printf("*****0、返回上一层*****\n");
scanf("%s",a);
if(strcmp(a,"0")==0)
return;
elseif(strcmp(a,"1")==0)
sjhs;
else
printf("没有该选项\n");
}
voidszys(yxjmark)
{
yxjos[N];
chara[10];
charch;
doublens[N];
zszhan[20];
intnumb[N];
intLen,p=0,q=1,i,o=1,n=0;
chardata[N];
os[0]=mark[0];
ns[0]=0;
printf("请输入算术(+-*/^)表达式(以=结束):\n");
scanf("%s",data);
if(strcmp(data,"+")==0||strcmp(data,"-")==0||strcmp(data,"*")==0||strcmp(data,"/")==0||strcmp(data,"^")==0||strcmp(data,"=")==0)
{
printf("格式错误\n");
return;
}
Len=strlen(data);
numb[0]=0;
for(i=0;i='0'
zhan[(p+k)/2].data[t]='\0';
if(zhan[(p+k)/2].data[0]!='\0')
ns[n++]=atof(zhan[(p+k)/2].data);
p++;
for(j=0;jos[o-1].rank
break;
}
else
{
doublenumb1,numb2,numb;
switch(ch=os[--o].operat)
{
case'+':
{
numb1=ns[--n];
numb2=ns[--n];
numb=numb1+numb2;
ns[n++]=numb;
break;
}
case'-':
{
numb1=ns[--n];
numb2=ns[--n];
numb=numb2-numb1;
ns[n++]=numb;
break;
}
case'*':
{
numb1=ns[--n];
numb2=ns[--n];
numb=numb2*numb1;
ns[n++]=numb;
break;
}
case'/':
{
numb1=ns[--n];
numb2=ns[--n];
if(numb1==0)
{
printf("无效操作\n");
return;
}
else
{
numb=numb2/numb1;
ns[n++]=numb;
}
break;
}
case'^':
{
numb1=ns[--n];
numb2=ns[--n];
numb=pow(numb2,numb1);
ns[n++]=numb;
break;
}
}
}
}
}
elseif(data[i]>='0'
elseif(data[i]=='.');
else
{
printf("格式错误,请重新输入:\n");
szys(mark);
break;
}
}
printf("%lf\n",ns[0]);
printf("*****1、连续*****\n");
printf("*****0、返回上一层*****\n");
scanf("%s",
if(strcmp(a,"0")==0)
return;
elseif(strcmp(a,"1")==0)
szys(mark);
else
printf("没有该选项\n");
}
intmain
{
yxjmark[9];
mark[0].operat='#';
mark[0].rank=-1;
mark[1].operat='+';
mark[1].rank=1;
mark[2].operat='-';
mark[2].rank=1;
mark[3].operat='*';
mark[3].rank=2;
mark[4].operat='/';
mark[4].rank=2;
mark[5].operat='(';
mark[5].rank=-1;
mark[6].operat=')';
mark[6].rank=-1;
mark[7].operat='=';
mark[7].rank=0;
mark[8].operat='^';
mark[8].rank=3;
while(1)
{
chari[10];
printf("*****1、四则运算计算器*****\n");
printf("*****2、三角函数计算器*****\n");
printf("*****0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车事故鉴定学 第3版 习题及解答全套 第1-8章 汽车事故鉴定基础 试题 (1) - -汽车火灾与水灾鉴定
- 2026igp面试题及答案
- 2026java架构师面试题及答案
- 2026loadrunner性能测试面试题及答案
- 小学五年级英语上册 Unit 6 In a Nature Park 描绘与创想自然景观(词汇课教案)
- 初中九年级化学跨学科项目式学习:金属的冶炼、性质与可持续利用
- 2026年区域经济发展与规划相关知识测试题及答案
- 小学六年级科学《探秘日食:成因、过程与科学观测》教学设计
- 初中七年级生物(冀少版)下册知识清单:呼吸作用的深度剖析与全过程解码
- 教育智能一体机(年)行业发展报告
- 多尺度求解器设计-洞察及研究
- 2025年学法减分考试试题(附答案)
- 半导体行业的人才培养与人力资源管理策略
- 大学生助农创业计划书
- 西宁军校面试题及答案
- 乡村振兴战略下的人才计划推进策略可行性研究报告
- 2025年公共法律知识题库及答案(可下载)
- 基于SEM潜变量交互效应的大学生心理危机精准预警机制研究
- 高可用架构设计规范
- 湖北省初中名校联盟2024-2025学年七年级下学期6月期末考试数学试卷(含解析)
- DB44∕T 2425-2023 燃气计量失准气量退补规范
评论
0/150
提交评论