五进制整数的加减运算

来源:百度知道 编辑:UC知道 时间:2024/09/19 15:37:10
三、设计方法和基本原理
1. 课题功能描述
本程序的功能:由用户输入两个五进制无符号整数,计算得到它们的和、差并输出。
程序运行时,提示用户输入两个五进制整数,如:
Please input number: 34210234
Please input number: 243102
程序计算后,输出运算结果:
34210234+243102=40003341
34210234-243102=33412132
2. 问题的解决方案
注意:问题的解决方案有很多,下面给出的一种仅供同学们参考。
根据问题的描述,使用字符数组来存放输入的两个五进制无符号整数和运算结果,并按字符串进行输入和输出。
为实现程序的功能,可按照下述过程完成程序(仅供参考,可自行设计实现过程及方法):
 输入两个数据到字符数组中
 因输入时数据的高位在下标为0的元素中,所以要对两个字符数组中的字符串求逆序
 调用相加函数求两个数的和,然后输出
 调用相减函数求两个数的差,然后输出
本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):
 输入函数:完成一个五进制无符号整数的输入。输入数据到字符数组中,然后检验用户输入的数据是否合法(例五进制数中只能出现0~4),合法则返回,否则继续输入。
 求字符数组中字符串的逆序:因输入时数据的高位在下标为0的元素中,为使运算时从0开始循环,所以要对两个字符数组中的字符串求逆序。
 求两个数据(字符数组中)的和
 求两个数据(字符数组中)的差
我们知道,用户输入的数字4在字符数组中存放的是字符4的ASCII码值51。在运算中要将字符转换成对应的数字,运算后还要将其转换为字符存入字符数组,为此编写两个函数将字符与数字之间的转换作为独立模块,供上面的运算模块调用。例如(仅供参考):
 字符转数字
 数字转字符
主函数中控制函数调

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int pan(char a[])//判断是否有大于4的数
{int i=strlen(a)-1;
while(i>=0)
if(a[i]>'4')
return 0;
else i--;
return 1;
}

void jia(char a[],char b[],char c[])//将a,b相加,结果存放于c
{int i=strlen(a)-1,j=strlen(b)-1,n=99,t,q;
for(t=i,q=n;t>=0;t--,q-- )
c[q]=a[t];

for(;j>=0;j--,n--)
{c[n]=c[n]+b[j]-'0';
if(c[n]>'4')
{c[n]=c[n]-5;c[n-1]++;}}

}

void jian(char a[],char b[],char c[])//将a,b相减,结果存放于c
{int i=strlen(a)-1,j=strlen(b)-1,n=99,t,q;
for(t=i,q=n;t>=0;t--,q-- )
c[q]=a[t];
for(;j>=0;j--,n--)
if(c[n]-b[j]<0)
{c[n-1]--;c[n]=c[n]+5-b[j]+'0';}
else c[n]=c[n]-b[j]+'0';
if(c[n]<'0')
c[n]='-';
}
int main()
{char a[100],b[100],c[100]