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的最大公約數