我们都知道int, long, long long 等数据类型,但是如果一个数字过长的话,这些数据所定义的变量就放不下了,这时就要用到大数,所谓大数,就是比较大的数,超出了我们平时long long所定义的范围,这时可以用数组将它存放起来,用模拟手算的方式来让计算机计算,下面试关于大数的加减乘及高精度幂的代码实现
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define NUM 10001//定义数组长度 5 void showmeau(); 6 void change(char *ch1, char *ch2); 7 void add(char *ch1, char *ch2); 8 void sub(char *ch1, char *ch2); 9 void Input(); 10 void add_big_number(); 11 void sub_big_number(); 12 void multi(char *ch1, char *ch2); 13 void multi_big_number(); 14 void exchange(char *ch, int *count); 15 void multi_power(char *ch, int n, int count); 16 void high_precision_power(); 17 18 char s1[NUM], s2[NUM]; int n, flag = 0; 19 int main() 20 { 21 showmeau(); 22 return 0; 23 } 24 void showmeau() 25 { 26 do{ 27 system("cls");//调用系统命令清屏 28 printf("1. big number add 2. big number sub 3.big number multi 4. High precision power 0. exit "); 29 scanf("%d", &n); 30 switch(n) 31 { 32 case 1: 33 add_big_number(); 34 break; 35 case 2: 36 sub_big_number(); 37 break; 38 case 3: 39 multi_big_number(); 40 break; 41 case 4: 42 high_precision_power(); 43 break; 44 case 0: 45 break; 46 default: 47 printf("your input error! "); 48 break; 49 } 50 system("pause"); 51 }while(n != 0); 52 53 } 54 55 void Input() 56 { 57 printf("Input the first big number: "); 58 scanf("%s", s1); 59 printf("Input the second big number: "); 60 scanf("%s", s2); 61 } 62 void change(char *ch1, char *ch2)//去掉负号函数 63 { 64 int len1 = strlen(ch1), len2 = strlen(ch2); 65 int i; 66 char str1[NUM], str2[NUM]; 67 switch(flag) 68 { 69 case 1: 70 for(i = 0; i < len1 - 1; i ++)//如果都是负数的时候执行到ch1[1]; 71 str1[i] = ch1[len1 - i - 1]; 72 str1[i] = '