




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衣物捐赠及转让协议
- 纺织品的智能生产调度优化考核试卷
- 购房定金的法律咨询服务协议
- 电影叙事技巧与剧情发展考核试卷
- 中班礼仪:尊敬长辈
- 肿瘤内科常见急症及护理
- 石棉制品生产过程中的节能减排考核试卷
- 服装零售企业危机应对与舆情管理考核试卷
- 电视机制造业的数字化供应链管理考核试卷
- 畜牧业信息技术在养殖中的应用考核试卷
- 《大学生创新创业基础教程》第六章创业资源与融资
- 山水林田湖草生态环境调查技术规范DB41-T 1992-2020
- 大众旅游服务质量控制手册
- GB/T 44421-2024矫形器配置服务规范
- 大型活动策划与管理第八章 大型活动风险管理
- Q∕GDW 12165-2021 高海拔地区运维检修装备配置规范
- JGJ107-2016钢筋机械连接技术规程
- 妇科医生进修汇报课件
- 动态分析与设计实验报告总结
- 2024年江苏省泰州市海陵区中考一模数学试卷
- 从汽车检测看低空飞行器检测发展趋势
评论
0/150
提交评论