一、观看PPT教程
【01】高精度运算(二)
二、练习题(不清楚回头查看有关PPT)
【01】下面是高精度数乘低精度数运算代码,有一行代码有误,请改正:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<string>using namespace std;int A[201],b,C[202];string s1;int lena, lenc;int init(int a[], string &s){ cin >> s; int len = s.length(); for(int i=0; i<len; i++) { a[i]=s[len-i-1] - '0'; } return len; }void mul(){ for(int i = 0; i < lena; i++) { C[i] = A[i] * b; C[i + 1] = C[i] / 10; C[i] %= 10; } lenc = lena; while(C[lenc] > 10) { C[lenc + 1] = C[lenc] / 10; C[lenc] %= 10; lenc++; }}int main(){ lena = init(A, s1); cin >> b; mul(); while(C[lenc] == 0 && lenc >0) lenc--; for(int i = lenc; i >= 0; i--) cout << C[i]; cout << endl; return 0;}
【02】下面是高精度数乘高精度数运算代码,请补全漏写的一行:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<string>using namespace std;int A[201],B[101],C[202];string s1, s2;int lenA, lenB, lenC;int init(int a[], string &s){ cin >> s; int len = s.length(); for(int i=0; i<len; i++) { a[i]=s[len-i-1] - '0'; } return len; }void mul(){ for(int i = 0; i < lenB; i++) { int m = 0; for(int j = 0; j < lenA; j++) { C[i+j] += A[j] * B[i] + m; m = C[i+j] / 10; C[i+j] %= 10; } }}int main(){ lenA = init(A, s1); lenB = init(B, s2); mul(); lenC = lenA + lenB; while(C[lenC] == 0 && lenC >0) lenC--; for(int i = lenC; i >= 0; i--) cout << C[i]; cout << endl; return 0;}
【03】下面是高精度数除以低精度数运算代码,有一行有误,请改正:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<string>using namespace std;int A[201],b,C[202];string s1;int lenA, lenC, x;int init(int a[], string &s){ cin >> s; int len = s.length(); for(int i=0; i<len; i++) { a[i]=s[i] - '0'; } return len; }void div(){ for(int i = 0; i < lenA; i++) { x += A[i]; C[i] = x / b; x %= b; }}int main(){ lenA = init(A, s1); cin >> b; div(); lenC = 0; while(C[lenC] == 0 && lenC < lenA -1) lenC++; for(int i = lenC; i < lenA; i++) cout << C[i]; cout << endl << x << endl; return 0;}
【04】编程题:乘阶之和