五进制整数的加减运算c++编程

五进制整数的加减运算c++编程,第1张

看下这个程序可以不,上面的要求有满足,不过不是按你说的方法做的

#include "stdafx.h"

#include <iostream>

#include <cmath>

using namespace std

int Change(char s[100]) //把五进制的数转为十进制

{

char s1[100]

long ten=0

int i=0

while(s[i]!='\0')

{

s1[i]=s[i]-'0'

if(s1[i]<0 || s1[i]>4) //判断是否是合法的五进制

{

cout<<逗烂好"非法的五进制数"

break

}

i++

}

for(int j=0j<ij++)

{

ten += s1[j] * pow(5,i-j-1)

}

return ten

}

int Exchange(int ten) //把十进制转换成五进制

{

int s = 0

int count = 0

while(ten != 0)

{

int tmp = ten % 5

s += tmp * pow(10, count++)

ten = ten / 5

}

return s

}

int Add(int a,int b) //求加

{

return a+b

}

int Del(int a,int b) //求差

{

return a-b

}

int main(int argc, char* argv[])

{

char m[100],n[100]

int x,y

int sum,fuck

cout<<"请输入正确的五进制数"<<endl

cin>山铅>m>>n

x=Change(m)

y=Change(n)

sum=Add(x,y)

fuck=Del(x,y)

cout<<"和为:"<<Exchange(sum)<<" "<<"差为历山:"<<Exchange(fuck)<<endl

return 0

}

#include<stdio.h>并中

#include<string.h>

static char *QUINARY = "01234"

static char *OCTONARY = "绝清山01234567"

static char *FIFTNARY = "0123456789ABCDE"

static char buff[10]

char *toQuinary(int num)

char *toOctonary(int num)

char *toFifnary(int num)

char *reverse(char *str)

int main(void)

{

int flag = 1

int num = 0

int choice = 0

while(flag)

{

printf("请输入一个三位数:")

scanf("%d",&num)

printf("转换为几进制? 1--五进制 2--八进制 3--十五进制 0--退正雹出\t")

scanf("%d",&choice)

char *result = ""

switch(choice)

{

case 1:

result = toQuinary(num)

printf("%s\n",result)

break

case 2:

result = toOctonary(num)

printf("%s\n",result)

break

case 3:

result = toFifnary(num)

printf("%s\n",result)

break

default:

flag = 0

break

}

}

return 0

}

char *toQuinary(int num)

{

if(num <= 0) return "0"

int i = 0

while(num >0)

{

int ret = num % 5

buff[i] = QUINARY[ret]

num /= 5

i++

}

buff[i]='\0'

return reverse(buff)

}

char *toOctonary(int num)

{

if(num <= 0) return "0"

int i = 0

while(num >0)

{

int ret = num % 8

buff[i] = OCTONARY[ret]

num /= 8

i++

}

buff[i]='\0'

return reverse(buff)

}

char *toFifnary(int num)

{

if(num <= 0) return "0"

int i = 0

while(num >0)

{

int ret = num % 15

buff[i] = FIFTNARY[ret]

num /= 15

i++

}

buff[i]='\0'

return reverse(buff)

}

char *reverse(char *str)

{

int length = strlen(str)

char copy[length+1]

int i = 0

for(i=0i<lengthi++)

{

copy[i] = str[length-i-1]

}

copy[i] = '\0'

strcpy(str,copy)

return str

}

加法”是少数几项我们从学校中学会的很有实践运用意义的技能。所幸,学习加法一点也不难。并且,针对数字的不同,可以采取不同的技巧。因此,详细的方法如下:

方法1

小数字相加运算

首先熟悉加法的概念。拿出一把小黄豆(或其它小物体)。将一些黄豆放在一边形成一堆,然后从1开始数这一堆黄豆有多少个(从1、2、3数到最后一个黄豆)。数到最后一个黄豆的数字就是这一堆黄豆的总数。在纸上记录黄豆总数的数字。然后再数另一堆有多少个黄豆。

学习“数对”。由于大多数人都习惯以10为单位计数,所以熟记和为10的一对数可以让加法更简单。伏做掌握那些两数和为10的数对。

尽可能地将数字配对组成“数对”。尽可能地将数字和数字配对,使之和为十的倍数。

将额外部分数字相加。凑完整十数之后,再加上余下的数字,用笔算或心算将其相加即可。

仔细检查你的运算结果。只要有时间,你最好每次都用其它方法来复检你的运算结果以保证运算正确。

方法2

大数目相加运算

学习数位的概念。当你书写数字时,每个数字的位置都有其特定的名字或类型。掌握数位的概念可以帮助你正确地排列数字及运算

排列数字。在计算加法运算时,先将数字按位数从多到少来从上向下地排列数字。排列数字是为了让数字的每个相同的数位进行对齐。如果一个数字没有高位数,那么就在其左侧空出一个数位。

将第一列数字相加。从右边开始,将最右侧的一列数字相加。将相加得到的结果写在这一列的下方位置。按照该法将其它列数字相加并写下结果。

向前一个数位进位。如果个位数数字相加得到的结果在十位数上有数字,那么在左侧一栏的顶部写下十位上的数字。

计算下一栏。计算完个位数一栏,我们需要计算做谈左侧十位上数字之和,这也包括进位的数字。然后将计算结果写在中间栏的下方。

方法3

小数的加法运算

将小数进行排列。当一个数字带有小数点时,那么你在计算小数相加时要格外仔细才行。主要的窍门就是根据小数点的位置排列所有数字。数字的小数点对齐,自成一列。

方法4

分数的加法运算

将各个分数的分母化为相同的分母。分母是分数式横线下方的数字。在计算分数相加时,你需要将分母化成相同的数字,然后将分子相加。你可以将分子分母同时乘以(或除以)一个相同的数字来

化简分数。你也许希望简化分数来方便阅读。你可以用分子和分母同时除以其相同的因数来化简分数。在本例中,我们不需要化简。因为它已经是最简形式了。但是如果你得到的是一个像3/6这样的结果,那么你需要将其进行化简。

当我们发现分子分母纯厅碰可以同时除以一个小数字时,我们就可以将分数化简。在本例中,我们用两者都除以3来化简,得到结果1/2。

方法5

加法技巧

凑数计算。如果你只计算几个数字的和,并且这些数字中没有恰巧可以凑成整10数的,那么你可以通过加上或者减去一个数来简化计算。

利用数字的形状。如果你想快速心算,那么分组的方法可能并不适合你。你可以利用数字的形状计算加法,而不是靠数手指。这个方法最适合用于几个数字求和的情况。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8199615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存