




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
序号:数据结构设计性实验 题 目 _第2题 有理数四则运算_学 院 计算机学院 专 业 年级班别 学 号 学生姓名 指导教师 思 路 理 论设 计难 度 系 数代 码总 成 绩2013 年 6 月 29 日一、设计任务要求问题描述:设计一个可进行有理数运算的演示程序。基本要求:实现两个有理数相加、相减、相乘、相除以及求分子或分母的运算。测试数据:有读者指定。选作内容:事项两个有理数相除的运算。二、主要算法流程图主程序加法减法乘法除法小数、整数加法分数加法求分子分母小数整数减法分数减法小数整数乘法分数乘法小数整数除法分数除法三、主要代码int MaxCommonisor(int m,int n)/*求最大公约数*/ int x,y,z; if(mn) 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_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); 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(非法输入,请重新输入!); switch(x) case 1: printf(请输入第一个数据:); scanf(%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,&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); 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=%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); 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(%f,&a); printf(请输入第二个数据:); scanf(%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(%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 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*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,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(%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(); getchar(); break; case 2: printf(输入第一个数的分子: ); scanf(%d,&numerator_1); printf(输入第一个数的分母: ); scanf(%d,&denominator_1); printf(输入第二个数的分子: ); scanf(%d,&numerator_2); printf(输入第二个数的分母: ); scanf(%d,&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; 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,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(%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(a/b=%f,result); getchar(); getchar(); break; case 2: printf(输入第一个数的分子: ); scanf(%d,&numerator_1); 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; case 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(*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); printf( 3、乘法运算 4、除法运算 n); printf( 5、求分子分母运算 6、退出 n); printf(n); printf(*n); loop3:printf(请选择运算类型:); scanf(%d,&x); printf(n); switch(x) case 1: Add(a,b); break; case 2: Sub(a,b); break; case 3: Mul(a,b); break; case 4: Div(a,b); break; case 5: feng(z); break; case 6: Exit(); break; default : printf(输入有误!请重新选择:n);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论