【DTOJ】2703:两个数的余数和商

DTOJ 2703:两个数的余数和商  解题报告

  • 2017.11.10 第一版 ——由翱翔的逗比w原创,引用《C++ Primer Plus(第6版)中文版》

题目信息:

题目描述

给你a和b,求他们的余数和非整数商。保留两位小数。

输出

余数和商

样例输入

5 3

样例输出

2 1.67

提示

1<=a,b<=10000

思路:

利用运算符计算出余数和商,取模运算在前一篇提到过不再多讲。

注意:

除法运算符(/)的行为取决于操作数的类型。如果两个操作数都是整数,则C++将执行整数除法。这意味着结果的小数部分将被丢弃,使得最后的结果是一个整数。如果其中有一个(或两个)操作数是浮点值,则小数部分将保留,结果为浮点数。

——以上摘自《C++ Primer Plus (第6版)中文版》

这便意味着为了执行小数除法,使用除法前需保证有一个操作数是浮点值。注意保留两位小数

我的代码(C++):

 1 //DTOJ 2703
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int a,b;
 8     cin>>a>>b;
 9     int c=a%b;
10     double d=double(a)/b;
11     printf("%d %.2f",c,d);
12     return 0;
13 }

分析:

第七行:int a,b;  由于此处要执行取模运算,所以必然是输入两个整数。所以定义两个整型int变量

第十行:double d=double(a)/b;  由于前面注意中提到,执行非整数的除法运算操作数中至少有一个是浮点值,所以在此使用double()将a强制转换类型为双精度浮点型double,这样便可得到非整数商

第十一行:printf("%d %.2f",c,d);  此处使用printf将c和d的值打印至屏幕(输出),由于需要保留两位小数,故在d的位置加上 .2f


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

  ——翱翔的逗比w

时间: 2024-10-22 01:54:50

【DTOJ】2703:两个数的余数和商的相关文章

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

求两个数的最大公约数和最小公倍数 C语言

C程序设计第八章的第一道题目,求两个数的最大公约数和最小公倍数.需要注意一下几点: 1.最大公约数和最小公倍数间的关系: 设两个数是a,b最大公约数是p,最小公倍数是q 那么有这样的关系:ab=pq 所以q=ab/p.2.任意整数和0的公约数是该整数的所有约数,所以它们的最大公约数为该整数本身.3.碾转相除法:被除数%除数=余数,如果余数不为0,就让原来的除数做为被除数,余数作为除数,再进行运算 被除数%除数=余数,直到得到的余数为0为止,此时的除数就是最大公约数. #include <stdi

【C语言】求两个数的最大公约数

思路: 辗转相除法:以小的数除大数,所得的是整数,那这个数就是最大公约数,不然就用余数来除刚才的除数,直到得到整数,这时作为除数的就是最大公约数. #include<stdio.h> int main() { int m,n,t,p; printf("请输入两个数:"); scanf("%d %d",&m,&n); if((m >= n) && (m % n==0)) { t=n; } if((p = m%n) &a

求两个数的最大公约数的方法

对于两个整数x,y,求其最大公约数(语言:C,C++) 原理:辗转除法求最大公约数:就是不断的用除数去除以余数,直到余数为0 ,最终得到的除数就是该两个数的最大公约数 1.递归法: int gcd(int x,int y) { int result; if(y==0) result=x; else result=gcd(y,x%y); return result; } 2.非递归法(辗转相除法) int gcd(int x,int y) {//辗转除法求最大公约数:就是不断的用除数去除以余数,直

用图形界面实现两个数的加减乘除

//输入两个数,实现加减乘除,并用消息框显示计算结果.//黄星,2015,9,29 import javax.swing.JOptionPane; //引入.JOptionPane public class Calculater { public static void main(String args[]) { //用户输入的两个数. String firstNumber,secondNumber; //两个加数,以及和.差.积.商. int number1,number2,add,sub,m

C语言求两个数中最大公约数

在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下: #include<stdio.h> int main() {      int num1,num2,temp,i;      scanf("%d%d",&num1,&num2);      if(num1>num2)      {            temp=num1

java课后作业 弹出窗口求两个数的加减乘除

//计算2个数的加减乘除 谷伟华 2015/10/6package jisuan; import javax.swing.JOptionPane; public class Jiasuan { public static void main(String[] args) { // TODO 自动生成的方法存根 String firstNumber; // 定义输入框的提示字 String secondNumber; // 定义输入框的提示字 double num1; // 定义输入的第一个数 d

LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)

题目链接: https://leetcode.com/problems/divide-two-integers/?tab=Description Problem :不使用乘法,除法,求模计算两个数的除法~ 除法运算:被除数中包含有多少个除数的计算 由于是int类型的除法,因此结果可能超过int的最大值,当超过int的最大值时输出int的最大值 另写除法函数,计算出除法的商. 首先判断出除法运算后的结果是正数还是负数. 之后需要将被除数和除数都变为正数,进行进一步计算 当被除数小于除数时,返回0

【C】辗转相除法求两个数的最大公约数,利用位运算交换两个数无须中间变量

辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法.它是已知最古老的算法, 其可追溯至3000年前.这种算法,在中国则可以追溯至东汉出现的<九章算术>.设两数为a.b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1).若r1=0,则(a,b)=b:若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除r2