版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、序号:数据结构设计性实验 题 目 _第2题 有理数四则运算_学 院 计算机学院 专 业 年级班别 学 号 学生姓名 指导教师 思 路 理 论设 计难 度 系 数代 码总 成 绩2013 年 6 月 29 日一、设计任务要求问题描述:设计一个可进行有理数运算的演示程序。基本要求:实现两个有理数相加、相减、相乘、相除以及求分子或分母的运算。测试数据:有读者指定。选作内容:事项两个有理数相除的运算。二、主要算法流程图主程序加法减法乘法除法小数、整数加法分数加法求分子分母小数整数减法分数减法小数整数乘法分数乘法小数整数除法分数除法三、主要代码int maxcommonisor(int m,int n)
2、/*求最大公约数*/ int x,y,z; if(m<n) z=m;m=n;n=z; x=m;y=n; while(y!=0) z=x%y; x=y; y=z; return(x); exit()/*退出*/ int fraction_add(int numerator_1,int denominator_1,int numerator_2,int denominator_2)/*分数加法*/ int o,i,l,k,j; o=denominator_1*denominator_2; i=numerator_1*denominator_2+denominator_1*numerator_
3、2; l=maxcommonisor(o,i); k=o/l; j=i/l; printf("运算结果为%d/%d+%d/%d=%d/%dn",numerator_1,denominator_1,numerator_2,denominator_2,j,k);float add(float a,float b)/*有理数加法*/ float sum; int numerator_1,denominator_1,numerator_2,denominator_2,j,x; char m; loop1:printf("* 加 法 运 算 *n"); print
4、f("n"); printf(" 1、整数、小数加法 2、分数加法 3、退出 n"); printf("n"); printf("*n"); printf("请选择1、2或3:"); scanf("%d",&x); if(x!=1&&x!=2&&x!=3) printf("非法输入,请重新输入!"); switch(x) case 1: printf("请输入第一个数据:"); scanf(&qu
5、ot;%f",&a); printf("请输入第二个数据:"); scanf("%f",&b); sum=a+b; printf("运算结果为%f+%f=%f",a,b,sum); getchar(); getchar(); break; case 2: printf("输入第一个数的分子: "); scanf("%d",&numerator_1); printf("输入第一个数的分母: "); scanf("%d",&a
6、mp;denominator_1); printf("输入第二个数的分子: "); scanf("%d",&numerator_2); printf("输入第二个数的分母: "); scanf("%d",&denominator_2); fraction_add(numerator_1,denominator_1,numerator_2,denominator_2); break; case 3: exit(); break; default : printf("输入有误!n")
7、; goto loop1; break; if(x!=3)goto loop1;int fraction_sub(int numerator_1,int denominator_1,int numerator_2,int denominator_2)/*分数减法*/ int o,i,l,k,j; o=denominator_1*denominator_2; i=numerator_1*denominator_2-denominator_1*numerator_2; l=maxcommonisor(o,i); k=o/l; j=i/l;printf("运算结果为%d/%d-%d/%d=
8、%d/%dn",numerator_1,denominator_1,numerator_2,denominator_2,j,k); float sub(float a,float b)/*有理数减法*/ float result; int numerator_1,denominator_1,numerator_2,denominator_2,j,x; char m; loop1:printf("* 减 法 运 算 *n"); printf("n"); printf(" 1、整数、小数减法 2、分数减法 3、退出 n"); p
9、rintf("n"); printf("*n"); printf("请选择1、2或3:"); scanf("%d",&x); if(x!=1&&x!=2&&x!=3) printf("非法输入,请重新输入!"); switch(x) case 1: printf("请输入第一个数据:"); scanf("%f",&a); printf("请输入第二个数据:"); scanf("%
10、f",&b); result=a-b; printf("%f-%f=%f",a,b,result); getchar(); getchar(); break; case 2: printf("输入第一个数的分子: "); scanf("%d",&numerator_1); printf("输入第一个数的分母: "); scanf("%d",&denominator_1); printf("输入第二个数的分子: "); scanf("
11、%d",&numerator_2); printf("输入第二个数的分母: "); scanf("%d",&denominator_2); fraction_sub(numerator_1,denominator_1,numerator_2,denominator_2); break; case 3: exit(); break; default : printf("输入有误!n"); goto loop1; break; if(x!=3)goto loop1;int fraction_mul(int num
12、erator_1,int denominator_1,int numerator_2,int denominator_2)/*分数乘法*/ int o,i,l,k,j; o=denominator_1*denominator_2; i=numerator_1*numerator_2; l=maxcommonisor(o,i); k=o/l; j=i/l; printf("运算结果为%d/%d * %d/%d = %d/%dn",numerator_1,denominator_1,numerator_2,denominator_2,j,k);float mul(float a
13、,float b)/*有理数乘法*/ float result; int numerator_1,denominator_1,numerator_2,denominator_2,j,x; char m; loop1:printf("* 乘 法 运 算 *n"); printf("n"); printf(" 1、整数/小数乘法 2、分数乘法 3、退出 n"); printf("n"); printf("*n"); printf("请选择1、2或3:"); scanf("
14、;%d",&x); if(x!=1&&x!=2&&x!=3)printf("非法输入,请重新输入!"); switch(x) case 1: printf("请输入第一个数据:"); scanf("%f",&a); printf("请输入第二个数据:"); scanf("%f",&b); result=a*b; printf("%f * %f = %f",a,b,result); getchar(); getc
15、har(); break; case 2: printf("输入第一个数的分子: "); scanf("%d",&numerator_1); printf("输入第一个数的分母: "); scanf("%d",&denominator_1); printf("输入第二个数的分子: "); scanf("%d",&numerator_2); printf("输入第二个数的分母: "); scanf("%d",&am
16、p;denominator_2); fraction_mul(numerator_1,denominator_1,numerator_2,denominator_2); break; case 3: exit(); break; default : printf("输入有误!n"); goto loop1; break; if(x!=3)goto loop1;int fraction_div(int numerator_1,int denominator_1,int numerator_2,int denominator_2)/*分数除法*/ int o,i,l,k,j;
17、o=denominator_1*numerator_2; i=numerator_1*denominator_2; l=maxcommonisor(o,i); k=o/l; j=i/l; printf("运算结果为%d/%d / %d/%d = %d/%dn",numerator_1,denominator_1,numerator_2,denominator_2,j,k);float div(float a,float b)/*有理数除法*/ float result; int numerator_1,denominator_1,numerator_2,denominato
18、r_2,j,x; char m; loop1:printf("* 除 法 运 算 *n"); printf("n"); printf(" 1、整数/小数除法 2、分数除法 3、退出 n"); printf("n"); printf("*n"); printf("请选择1、2或3:"); scanf("%d",&x); if(x!=1&&x!=2&&x!=3)printf("非法输入,请重新输入!"
19、); switch(x) case 1: printf("请输入第一个数据:"); scanf("%f",&a); printf("请输入第二个数据:"); scanf("%f",&b); result=a/b; printf("a/b=%f",result); getchar(); getchar(); break; case 2: printf("输入第一个数的分子: "); scanf("%d",&numerator_1);
20、printf("输入第一个数的分母: "); scanf("%d",&denominator_1); printf("输入第二个数的分子: "); scanf("%d",&numerator_2); printf("输入第二个数的分母: "); scanf("%d",&denominator_2); fraction_div(numerator_1,denominator_1,numerator_2,denominator_2); break; cas
21、e 3: exit(); break; default : printf("输入有误!n"); goto loop1; break; if(x!=3)goto loop1;float feng(float z)/*求分子分母运算*/ int f,k,j,x; float elem=1000000; loop1:printf("* 求 分 子 分 母 运 算 *n"); printf("n"); printf(" 1、输入数据 2、退出 n"); printf("n"); printf("
22、;*n"); printf("请选择1或2:"); scanf("%d",&x); if(x!=1&&x!=2)printf("非法输入,请重新输入!"); if(x=1) printf("请输入一个有理数:"); scanf("%f",&z); z=z*elem; f=maxcommonisor(z,elem); j=elem/f; k=(int)z/f; printf("分子是%d,分母是%dn",k,j); goto loop1; if(x=2)exit(); main()/*主程序*/ int x; float a,b,z; printf("n* 有 理 数 四 则 运 算 *n"); printf("n"); printf(" 1、加法运算 2、减法运算 n&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课件背景设计
- 护理实践中的科研与循证
- 2026年6月广东省深圳市福田外国语学校(集团)中考考前素养练习英语试卷
- 抗肿瘤药物护理与护理技能
- 护理伦理与医疗伦理研究
- 白条猪肉销售合同
- 进口冻肉销售合同
- 急诊科护理工作创新思维
- 2026年工程评估产品设计合同
- 护理病例教学资料
- 2026年湖南省政工专业职称考试(中国近现代史)练习试题及答案
- 2026年天津市公安医院医护人员招聘笔试备考试题及答案解析
- GB/T 47442.1-2026油气区二氧化碳地质利用与封存潜力评价方法第1部分:地质利用
- 2026年青海省西宁市社区工作者考试试题解析及答案
- 2026年中国兵器审计中心(西安中心)招聘(5人)笔试备考题库及答案解析
- 2026年中国物流集团招聘考试专业题库
- 2026年高校教师资格证题库综合试卷及参考答案详解【新】
- 反恐怖联防联动联治工作制度
- 2026年中考云南试卷及答案物理
- 2026年香港房屋租赁合同(1篇)
- 2026脑机接口技术突破课件
评论
0/150
提交评论