zoukankan      html  css  js  c++  java
  • 分数加减法

    描写叙述
    编写一个C程序,实现两个分数的加减法
    输入
    输入包括多行数据 
    每行数据是一个字符串,格式是"a/boc/d"。 
    当中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

    数据以EOF结束 
    输入数据保证合法
    输出
    对于输入数据的每一行输出两个分数的运算结果。 
    注意结果应符合书写习惯,没有多余的符号、分子、分母,而且化简至最简分数
    例子输入
    1/8+3/8
    1/4-1/2
    1/3-1/3
    例子输出
    1/2
    -1/4
    

    0

    题目的难度不大,依照分数加减法的运算规律计算,但细节方面要注意。如:分子为0。分子分母同样。分子是分母的倍数,各个细节注意到了。题目自然就解决啦,以下附上自己的代码:

    #include<stdio.h>
    //约分函数
    void fun(int *a,int *b)//通过指针改变主函数中的分子和分母
    {
    	int k = *a;//取得
    	if(k<0)
    		k = -k;//假设k的值为负,转换为正
    	for(int i = 2; i <= k; i ++)//寻找从2到k的每个能够整除a,b的i
    	{
    		while(*a % i == 0 && *b % i == 0)//假设i能够连续整除a,b就继续约分
    			*a /= i,*b /= i;
    	}
    }
    void fifm(int *a,int *b,char *opt,int *c,int *d,int *fz,int *fm)
    {//求得分子和分母
    	switch(*opt)
    		{
    		case '+':
    			if(*b != *d){//假设两个分数的分母
    				*fz = *a * *d + *b * *c;
    				*fm = *b * *d;
    			}
    			else{//两个分数的分母同样
    				*fz = *a + *c;
    				*fm = *b;
    			}
    			break;
    		case '-':
    			if(*b != *d){
    				*fz = *a * *d - *b * *c;
    				*fm = *b * *d;
    			}
    			else{
    				*fz = *a - *c;
    				*fm = *b;
    			}
    			break;
    		}
    }
    int main()
    {
    	char opt,t;
    	int a,b,c,d;
    	int fz,fm;
    	while(scanf("%d%c%d%c%d%c%d",&a,&t,&b,&opt,&c,&t,&d)!=EOF){//用t变量存储没用的/
    		fifm(&a,&b,&opt,&c,&d,&fz,&fm);
    		if(fz == 0)//求得分子分母之后,若分子等于0,直接输出0
    			printf("0
    ");
    		else{
    			fun(&fz,&fm);//若分子不为0,进行约分
    			if(fz == fm)//若分子分母相等,则输出1
    				printf("1
    ");
    			else if(fz % fm == 0)//若分子为分母的倍数,则输出该倍数
    				printf("%d
    ",fz/fm);
    			else
    				printf("%d/%d
    ",fz,fm);
    		}
    	}
    	return 0;
    }
    


  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6878709.html
Copyright © 2011-2022 走看看