有理数的四则运算(C语言) 急用!!!

[问题描述]
设计一个可进行有理数运算的演示程序。
[基本要求]
实现两个有理数相加、相减、相乘、相除的运算。

您真的急用哦。要不要我给你啊。我刚刚写完的啊。呵呵 还有抽象类型的题目呢
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int GONGYUESHU(int m,int n)//*求最大公约数*//
{
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()//*退出*//
{
getchar();
getchar();
}

int fen_Add(int q,int w,int v,int h)//*分数加法*//
{
int o,i,l,k,j;
o=w*h;
i=q*h+w*v;
l=GONGYUESHU(o,i);
k=o/l;
j=i/l;
printf("分数之和为%d/%d\n",j,k);
}

float Add(float a,float b)///*有理数加法*/
{
float sum;
int q,w,v,h,j,x;
char m;
loop1:printf("******************************* 加 法 运 算 ************************************\n");
printf(" 1、整数、小数加法 2、分数加法 3、退出 \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("a+b=%f",sum);
getchar();
getchar();
break;
}
case 2:
{
printf("输入第一个数的分子: ");
scanf("%d",&q);
printf("输入第一个数的分母: ");
scanf("%d",&w);
printf("输入第二个数的分子: ");
scanf("%d",&v);
printf("输入第二个数的分母: ");
scanf("%d",&h);
fen_Add(q,w,v,h);
break;
}
case 3:
{
Exit();
break;
}
default :
{
printf("输入有误!\n");
goto loop1;
break;
}
}
if(x!=3)goto loop1;
}

int fen_Sub(int q,int w,int v,int h)///*分数减法*/
{
int o,i,l,k,j;
o=w*h;
i=q*h-w*v;
l=GONGYUESHU(o,i);
k=o/l;
j=i/l;
printf("分数之差为%d/%d\n",j,k);
}

float Sub(float a,float b)//*有理数减法*//
{
float result;
int q,w,v,h,j,x;
char m;
loop1:printf("******************************* 减 法 运 算 ************************************\n");
printf(" 1、整数、小数减法 2、分数减法 3、退出 \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",&q);
printf("输入第一个数的分母: ");
scanf("%d",&w);
printf("输入第二个数的分子: ");
scanf("%d",&v);
printf("输入第二个数的分母: ");
scanf("%d",&h);
fen_Sub(q,w,v,h);
break;
}
case 3:
{
Exit();
break;
}
default :
{
printf("输入有误!\n");
goto loop1;
break;
}
}
if(x!=3)goto loop1;
}

int fen_Mul(int q,int w,int v,int h)//*分数乘法*//
{
int o,i,l,k,j;
o=w*h;
i=q*v;
l=GONGYUESHU(o,i);
k=o/l;
j=i/l;
printf("分数之积为%d/%d\n",j,k);
}

float Mul(float a,float b)//*有理数乘法*//
{
float result;
int q,w,v,h,j,x;
char m;
loop1:printf("******************************* 乘 法 运 算 ************************************\n");
printf(" 1、整数/小数乘法 2、分数乘法 3、退出 \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",&q);
printf("输入第一个数的分母: ");
scanf("%d",&w);
printf("输入第二个数的分子: ");
scanf("%d",&v);
printf("输入第二个数的分母: ");
scanf("%d",&h);
fen_Mul(q,w,v,h);
break;
}
case 3:
{
Exit();
break;
}
default :
{
printf("输入有误!\n");
goto loop1;
break;
}
}
if(x!=3)goto loop1;
}

int fen_Div(int q,int w,int v,int h)//*分数除法*//
{
int o,i,l,k,j;
o=w*v;
i=q*h;
l=GONGYUESHU(o,i);
k=o/l;
j=i/l;
printf("分数之积为%d/%d\n",j,k);
}

float Div(float a,float b)///*有理数除法*/
{
float result;
int q,w,v,h,j,x;
char m;
loop1:printf("******************************* 除 法 运 算 ************************************\n");
printf(" 1、整数/小数除法 2、分数除法 3、退出 \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",&q);
printf("输入第一个数的分母: ");
scanf("%d",&w);
printf("输入第二个数的分子: ");
scanf("%d",&v);
printf("输入第二个数的分母: ");
scanf("%d",&h);
fen_Div(q,w,v,h);
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(" 1、输入数据 2、退出 \n");
printf("请选择1或2:");
scanf("%d",&x);
if(x!=1&&x!=2)printf("非法输入,请重新输入!");
if(x==1)
{
printf("请输入一个有理数:");
scanf("%f",&z);
z=z*elem;
f=GONGYUESHU(z,elem);
j=elem/f;
k=(int)z/f;
printf("分子是%d,分母是%d\n",k,j);
goto loop1;
}
if(x==2)Exit();
}

main()//*主程序*//
{
int x;
float a,b,z;
printf("\n**************************** 有 理 数 四 则 运 算 ******************************\n");
printf(" 1、加法运算 2、减法运算 \n");
printf(" 3、乘法运算 4、除法运算 \n");
printf(" 5、求分子分母运算 6、退出 \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");
goto loop3;
break;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-26
/*
如输入: math f=x+(- * /) y

input a express(for example 5+(- * /)6):
6+9
结果
6.00 + 9.00 = 15.00

continue enter 1; break,enter 0

*/
#include <stdio.h>
#include <stdlib.h>
void main(){
double x,y,f=0;
char c;
int p=1;
while(p){
printf("\t\t\tmath f=x+(- * /) y\n");
printf("\n\t\tinput a express(for example 5+(- * /)6):\n\t\t");
scanf("%lf%c%lf",&x,&c,&y);
switch(c){
case '+':f=x+y;break;
case '-':f=x-y;break;
case '*':f=x*y;break;
case '/':f=x/y;break;
default:break;
}
printf("\n\t\t%4.2lf %c %4.2lf = %4.2lf\n",x,c,y,f);
printf("\n\t\tcontinue enter 1; break,enter 0\n\t\t");
scanf("%d",&p);
system("cls");
}
}本回答被提问者采纳

有理数的四则运算(C语言) 急用!!!
printf("\\n*** 有理数四则运算 ***\\n"); printf(" 1、加法运算 2、减法运算 \\n"); printf(" 3、乘法运算 4、除法运算 \\n"); printf(" 5、求分子分母运算 6、退出 \\n"); loop3:printf("请选择运算类型:"); scanf("%d",&x); printf("\\n"); switch(x) { case 1: { Add(a,b);...

有理数的四则运算(C语言)
void main(){ float a,b;char C;while(1){ scanf("%f%c%f",&a,&C,&b);if((C!='+')&&(C!='-')&&(C!='*')&&(C!='\/'))break;switch(C){ case '+': printf("%f+%f=%f",a,b,a+b);break;case '-': printf("%f-%f=%f",a,b,a-b);break;case '*': ...

有理数的四则运算
理数指的是有理数,它包括整数(正整数、负整数)和分数(有限小数、循环小数)。有理数的四则运算是指加法、减法、乘法和除法四种基本运算。1.加法:对于有理数a和b的加法运算,需要根据它们的符号及数值大小来进行相应的计算。如果a和b同为正数或同为负数,则它们的绝对值相加,并保持相同的符号。...

有理数的四则混合运算
3 望采纳

有理数的四则运算
-b)三、有理数的乘法运算1)乘法:同号得正;异号得负。四、有理数的除法运算。1)除法:除以一个数等于乘以它的倒数,转化成乘法运算。注意:0不能做除数。有理数四则运算有多重要①有理数运算技能是学习代数的基础(对整式、方程、分式的学习有很大影响)②影响初中数学的整体成绩 ...

有理数四则混合运算
18542+25623-12056= 521*12+6362= 120\/6*96+54= 451*41-52+65= 77*52-63= 521*9+69-586= (1201-253)*850 3253+362*854\/20= 1205+63*52= 1200000\/500*63+52= 稍微难一点,好好算!

有理数的四则运算
  到了初中,我们在数学上学习的数更加广泛,比如有理数。既然要研究有理数首先要学习它的四则运算。  如果想研究有理数的四则运算,首先我们要将有理数分一个类,也就是正有理数,负有理数,和0。正有理数又包括了正整数和正分数,而负有理数又有负整数和负分数。接下来我就...

有理数的四则混合运算法则
有理数的四则混合运算法则如下:先乘方,再乘除,最后加减;同级的运算,从左到右进行;如有括号,先算括号里边的,多重括号时,按先小括号、再中括号、最后大括号的顺序进行。一、有理数 有理数为整数(正整数0、负整数)和分数的统称。正整数和正分数合称为正有理数,负整数和负分数合称为负有...

教教一下有理数的四则运算的秘籍是什么
概念要记清楚,运算时注意符号 乘方公式要记住

有理数四则运算的定义急!!!~~~
同号相加减,数值相加减,符号不变 异号相加减,数值的绝对值相减,去绝对值大的符号

相似回答