我们的整数,对于计算机存储都是有位数限制的,那么,我们如何对c好长的zhen整数进行运算呢?
这里,我们使用一位数组,来进行存储zh整数,那么四则运算,就需要我们进行ding定义:
定义如下:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
using namespace std;
//一位数组长度;
#define N 5
//一个位置,存放的长度
#define M 4
//加法;从右到左,记得进位
void add(int *a, int *b, int *c) {
int i, carry = 0;
for (i = N - 1; i >= 0; i--) {
c[i] = a[i] + b[i] + carry;
if (c[i] < 10000)
carry = 0;
else {
c[i] = c[i] - 10000;
carry = 1;
}
}
}
//减法;从右到左,记得进位
void sub(int *a, int *b, int *c) {
int i, borrow = 0;
for (i = N - 1; i >= 0; i--) {
c[i] = a[i] - b[i] - borrow;
if (c[i] >= 0) {
borrow = 0;
}
else {
c[i] += 10000;
borrow = 1;
}
}
}
//乘法;从右到左,记得进位,但是呢,这里是一个数组长数,乘以一个整形数;
void mul(int *a, int b, int *c) {
int i, tem, carry = 0;
for (i = N - 1; i >= 0; i--) {
tem = a[i] * b + carry;
c[i] = tem % 10000;
carry = tem / 10000;
}
}
//除法,由左到右,进位,这也是一个数组长数,除以一个整形数;
void div(int *a, int b, int *c) {
int i, tem, remain = 0;
for (i = 0; i < N; i++) {
tem = a[i] + remain;
c[i] = tem / b;
remain = (tem%b) * 10000;
}
}
int main() {
int a[N] = { 1000,1000,1000,0000,0000 };
int b[N] = { 1000,1000,1000,0000,0000 };
int c[N] = { 0};
mul(a, 3, c);
int q;
for (int i = 0; i < N; i++) {
q = M-1;
while (q >0) {
if (c[i] / (pow(10,q)) == 0)
cout << 0;
q--;
}
cout << c[i] ;
}
cout << endl;
div(a, 10, c);
for (int i = 0; i < N; i++) {
q = M - 1;
while (q >=0) {
if (c[i] / (pow(10, q)) == 0)
cout << 0;
q--;
}
cout << c[i];
}
system("pause");
return 0;
}
-----成为顶级云计算架构师的人