您真的急用哦。要不要我给你啊。我刚刚写完的啊。呵呵 还有抽象类型的题目呢
#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;
}
}
}
温馨提示:内容为网友见解,仅供参考