c语言分数的四则运算
A. c语言 分数的四则运算
scanf("%d/%d %c %d/%d",&a,&b,&c,&d,&e);你在% %之间加/干吗啊,要去掉
另外,你说的自动结束程序应该是编程的系统问题,在输出函数之后加上system("pause");试试。
顺便说一下,你的排序太乱了
B. c语言分数四则运算并要求化简 能帮我看看哪里有问题吗
你没有化简,我给你看一下有化简的:
#include <stdio.h>
//求两个数的最大公约数
int calc(int a,int b){
if(a%b==0) {
return b;
}else {
return calc(b,a%b);
}
}
void main(){
int a[4],i;
char op;
for(i=0;i<4;i++){
printf("请输入第%d个数:",(i+1));
scanf("%d",&a[i]);
}
printf("请输入运算符:");
scanf("%s",&op);
if(a[0]==0||a[2]==0){
printf("非法数据!\n");
}else if(a[0]==a[2]){
if(op=='+'){
printf("%d/%d+%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],((a[1]*a[0]*a[2]/calc(a[0],a[2]))/a[0])/((a[3]*a[0]*a[2]/calc(a[0],a[2]))/a[2])/
calc(((a[1]*a[0]*a[2]/calc(a[0],a[2]))/a[0])/((a[3]*a[0]*a[2]/calc(a[0],a[2]))/a[2]),a[0]*a[2]/calc(a[0],a[2])),a[0]*a[2]/calc(a[0],a[2])/calc(((a[1]*a[0]*a[2]/calc(a[0],a[2]))/a[0])/((a[3]*a[0]*a[2]/calc(a[0],a[2]))/a[2]),
a[0]*a[2]/calc(a[0],a[2])) );
printf("%d/%d-%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]-a[3])/calc(a[0],a[1]+a[3]),a[0]/calc(a[0],a[1]-a[3]));
}else if(op=='*'){
printf("%d/%d*%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[3])/calc(a[0]*a[2],a[1]+a[3]),(a[0]*a[2])/calc(a[0]*a[2],a[1]*a[3]));
}else if(op=='/'){
if(a[3]==0){
printf("非法数据!\n");
}else{
printf("(%d/%d)/%(d/%d)=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[2])/calc(a[1]*a[2],a[0]+a[3]),(a[0]*a[3])/calc(a[1]*a[2],a[0]*a[3]));
}
}else{
printf("非法运算符!\n");
}
}else{
if(op=='+'){
if(calc(a[0],a[2])==1){
printf("%d/%d+%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[2]+a[0]*a[3])/calc(a[1]*a[2]+a[0]*a[3],a[0]*a[2]),a[0]*a[2]/calc(a[1]*a[2]+a[0]*a[3],a[0]*a[2]));
}else{
printf("%d/%d+%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],a[1]*calc(a[0],a[2])/a[0]+a[3]*calc(a[0],a[2])/a[2]/calc(a[1]*calc(a[0],a[2])/a[0]+a[3]*calc(a[0],a[2])/a[2],calc(a[0],a[2])));
}
}else if(op=='-'){
if(calc(a[0],a[2])==1){
printf("%d/%d+%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[2]-a[0]*a[3])/calc(a[1]*a[2]-a[0]*a[3],a[0]*a[2]),a[0]*a[2]/calc(a[1]*a[2]-a[0]*a[3],a[0]*a[2]));
}else{
printf("%d/%d+%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],a[1]*calc(a[0],a[2])/a[0]-a[3]*calc(a[0],a[2])/a[2]/calc(a[1]*calc(a[0],a[2])/a[0]-a[3]*calc(a[0],a[2])/a[2],calc(a[0],a[2])));
}
}else if(op=='*'){
printf("%d/%d*%d/%d=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[3])/calc(a[0]*a[2],a[1]+a[3]),(a[0]*a[2])/calc(a[0]*a[2],a[1]*a[3]));
}else if(op=='/'){
if(a[3]==0){
printf("非法数据!\n");
}else{
printf("(%d/%d)/%(d/%d)=%d/%d\n",a[1],a[0],a[3],a[2],(a[1]*a[2])/calc(a[1]*a[2],a[0]+a[3]),(a[0]*a[3])/calc(a[1]*a[2],a[0]*a[3]));
}
}else{
printf("非法运算符!\n");
}
}
}
C. 关于C语言分数的四则运算问题
#include<stdio.h>
int gcd(int a,int b) //最大公约数
{
int s;
if(b>a)
{
a=a+b;
b=a-b;
a=a-b;
}//使a中放大的数
s=a%b;
while(s!=0)
{
a=b;
b=s;
s=a%b;
}
return b;
}
void jia(int a,int b,int c,int d)
{
int fenmu,fenzi,gongyueshu;
fenmu=b*d;fenzi=a*d+b*c;
gongyueshu=gcd(fenmu,fenzi);
fenmu=fenmu/gongyueshu;
fenzi=fenzi/gongyueshu;
printf("%d/%d\n",fenzi,fenmu);
}
void cheng(int a,int b,int c,int d)
{
int fenmu,fenzi,gongyueshu;
fenmu=b*d;fenzi=a*c;
gongyueshu=gcd(fenmu,fenzi);
fenmu=fenmu/gongyueshu;
fenzi=fenzi/gongyueshu;
printf("%d/%d\n",fenzi,fenmu);
}
void main()
{
int a,b,c,d;
char e;
printf("计算a/b与c/d的四则运算(+ - * /)\n");
do{
printf("请输入a b c d(如:12 43 24 12 a,b,c,d!=0)\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
getchar();
}while(!(a*b*c*d));//如果abcd中有0重新输入
printf("输入运算符:");
scanf("%c",&e);
printf("结果:");
switch(e)
{
case '+':jia(a,b,c,d);break;
case '-':jia(a,-1*b,c,d);break;//减是加的逆运算
case '*':cheng(a,b,c,d);break;
case '/':cheng(a,b,d,c);break;//除是乘的逆运算
default :printf("error\n");
}
printf("\n\nEND\npress Enter key\n");getchar();
}
D. C语言编程题(分数的四则运算)
//呵呵!写的有些麻烦,但输入的格式你要求的是那样,
//只好这样了,应该还符合你的要求!你可以测试一下,
//但输入时不必输入括号。如果有兴趣的话,
//可以加我qq,大家共同交流!qq:237263394
#include<string.h>
main()
{char mo1,op,mo2;
int a,b,c,d,e,f;
scanf("%d%c%d%c%d%c%d",&a,&mo1,&b,&op,&c,&mo2,&d);
if(b==0||d==0)
{printf("分母不能为零!\n");
exit(0);
}
switch(op)
{
case'+':
{
f=b*d;
e=(a*d+c*b);
break;
}
case'-':
{
f=b*d;
e=(a*d-c*b);
break;
}
case'*':
{
e=a*c;
f=b*d;
break;
}
case'/':
{
e=a*d;
f=b*c;
break;
}
}
while(e%2==0&&f%2==0)
{
e=e/2;
f=f/2;
}
while(e%3==0&&f%3==0)
{
e=e/3;
f=f/3;
}
if(e==f||e==0)
printf("%d%c%d%c%d%c%d=%d\n",a,mo1,b,op,c,mo2,d,e);
else printf("%d%c%d%c%d%c%d=%d/%d\n",a,mo1,b,op,c,mo2,d,e,f);
}
E. c语言带分数四则运算问题!!!要求被调函数,化简.
#include <stdio.h>
long int a,b,c,d,x,y,z;
char op;
int f1();
int f2();
main()
{printf("shu ru di yi ge shu de fen zi:");
scanf("%ld",&a);
printf("shu ru di yi ge shu de fen mu:");
scanf("%ld",&b);
if(!b) {printf("error");exit(0);}
printf("shu ru di er ge shu de fen zi:");
scanf("%ld",&c);
printf("shu ru di er ge shu de fen mu:");
scanf("%ld",&d);
if(!d) {printf("error");exit(0);}
getchar();
printf("shu ru yun suan fu:");
scanf("%c",&op);
f1();
f2();
printf("jie guo shi %ld/%ld\n",y,x);
getch();
}
int f1()
{switch(op)
{case '+':x=b*d;y=a*d+b*c;break;
case '-':x=b*d;y=a*d-b*c;break;
case '*':x=b*d;y=a*c;break;
case '/':x=b*c;y=a*d;break;
default:printf("op illegal\n");exit(0);
}
return 1;
}
int f2()
{int i,j,t;
i=x>y?x:y;
j=x+y-i;
t=i%j;
while(t)
{i=j;
j=t;
t=i%j;
}
x=x/j;
y=y/j;
}
F. C语言中的分数四则运算
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b,c,d,i,x,y;
char op;
scanf("%d/%d%c%d/%d",&b,&a,&op,&d,&c);
if(a==0||c==0) exit(0);
if(op=='+'){y=b*c+d*a;x=a*c;}
if(op=='-'){y=b*c-d*a,x=a*c;}
if(op=='*'){y=b*d;x=a*c;}
if(op=='/'){y=b*c;x=a*d;}
if(y==0&&x!=0) { printf("%d/%d%c%d/%d=0\n",b,a,op,d,c); }
else if(x==0) exit(0);
//你的这里怎么可以再用一个ELSE呢,条件已经变化了。后面跟前面没有联系啊
if(x>y) i=y;
while(i>1)
{
if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;}
i--;
}
if(x/i==1) printf("%d/%d%c%d/%d=%d\n",b,a,op,d,c,y);
else printf("%d/%d%c%d/%d=%d/%d.\n",b,a,op,d,c,y,x);
//不明白你后面这里为什么会多出两个花括号。
//由于网络上不能空行,我也不猜测错误原因。你自己理解下。
}
//程序运行无误
G. C语言分数的四则运算
你好!程序的错误改了,你看看功能吧
#include<stdio.h>
intmain(void)
{charc;//定义变量c
inta1,a2,b1,b2,q,w;
scanf("%d%d%c%d%d",&a1,&a2,&c,&b1,&b2);//删除格式内的非法字符
if((c!='+')&&(c!='-')&&(c!='*')&&(c!='/'))
return0;//c不是运算符,退出
switch(c)
{
case'+':q=a1*b2+a2*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'-':q=a1*b2-a2*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'*':q=a1*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'/':q=a1*b2;//符号硬单引号框住,单引号后面的分号
w=b1*a2;
printf("%d/%d",q,w);
break;
}
return0;
}
H. c语言分数的四则运算,大家帮我看看,谢谢!
你因该注意注意c=0的情况。
I. c语言编程分数的四则运算如何约分化简
#include <stdio.h> #include <time.h> void main() { int num,mark=0,i; int num1,num2,sum,n; scanf("%d",&num); srand((unsigned) time(NULL)); for(i=0;i<num;i++) { num1=rand()%100; num2=rand()%100; n=rand()%4; switch(n) { case 0 : { printf("%d+%d=\n",num1,num2); printf("输入答案\n"); scanf("%d",&sum); if(sum==num1+num2) { printf("right!\n"); mark++; } else printf("wrong!\n"); } break; case 1 : { printf("%d÷%d=\n",num1,num2); printf("输入答案\n"); scanf("%d",&sum); if(sum==num1/num2) { printf("right!\n"); mark++; } else printf("wrong!\n"); } break; case 2 : { printf("%d-%d=\n",num1,num2); printf("输入答案\n"); scanf("%d",&sum); if(sum==num1-num2) { printf("right!\n"); mark++; } else printf("wrong!\n"); } break; case 3 : { printf("%d*%d=\n",num1,num2); printf("输入答案\n"); scanf("%d",&sum); if(sum==num1*num2) { printf("right!\n"); mark++; } else printf("wrong!\n"); } break; } } printf("\n正确个数为%d\n",mark); }
J. 求一份C语言代码,分数的四则运算
分数实质就是小数,但是如果化成小数去结算可能会失去精度。
所以我们采用两个整数去表示分子和分母,假设分子用a表示,分母用b表示:
a1/b1 + a2/b2 的实现为:
(a1*b2+a2*b1)/(b1*b2)
然后去化简,化简就是分子分母同时除于他们的最大公约数。
求最大公约数方法为:假设 求 n和m的最大公
1、取绝对值n1=abs(n);m1=abs(m)
2、保证n的绝对值大于m的绝对值,如果n的绝对值小于m的绝对值,则n和m交换(交换代码省略)
3、int temp=0;
while(temp=(n1%m1))
{
n1=m1; m1=temp;
}
最后m1就是n和m的最大公约数