7-1 分数 (10 分)
任务描述
用分数形式表示2个正整数的相除结果。 例如:4/2 结果为2,4/3结果为1(1/3), 3/4结果为3/4,10/6结果为1(4/6),2/4结果为2/4。
输入
输入形如a/b,其中a,b为正整数,"/"表示除法。
输出
以约分形式输出a除以b的结果。
输入举例
5/3
输出举例
1(2/3)
#include<stdio.h>
int main()
{
int a,b,t;
scanf("%d/%d",&a,&b);
int m,n;
if(a>b){
if(a%b==0){
printf("%d",a/b);
}
else{
m=a/b;
n=a-m*b;
printf("%d(%d/%d)",m,n,b);
}
}
else {
printf("%d/%d",a,b);
}
return 0;
}
ps:书上的:
#include <stdio.h>
#include <stdlib.h>
int gcd(int a,int b);
int main()
{
int i,a,b,c,n,flag;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d/%d",&a,&b);
if(a==0)
{
printf("0\n");
continue;
}
}
flag=1;
if(a<0)
{
flag=-1;
a=-a;
}
if(b<0)
{
flag=-flag;
b=-b;
}
c=gcd(a,b);
if(flag==-1)printf("-");
if(b/c==1)
printf("%d\n",a/c);
else printf("%d/%d\n",a/c,b/c);
///根据分母b除公约数是否为1,如果是,则输出分子处公约数
///c即可。否则,分子a/c;分母b/c.
printf("Hello world!\n");
return 0;
}
///辗转相除法
int gcd(int a,int b)
{
int c;
do
{
c=a/b;
a=b;
b=c;
}
while(b);
return a;
}