题目大意:大数,20进制的加法计算。
解法:convert函数把字符串转换成数组,add函数把两个大数相加。
参考代码:
#include<stdio.h> #include<string.h> char* Digit="0123456789abcdefghij"; void convert(char*,int*); void add(int*,int*,int*); void print(int*); int main(){ char str1[101],str2[101]; while(scanf("%s",str1)!=EOF&&scanf("%s",str2)!=EOF){ int num1[101]={0},num2[101]={0},num3[102]={0}; convert(str1,num1); convert(str2,num2); add(num1,num2,num3); print(num3); } return 0; } void convert(char* str, int* num){ int j,k; k=0; for(j=strlen(str)-1;j>=0;j--){ if(str[j]<='9'&&str[j]>='0') num[k]=str[j]-'0'; if(str[j]<='j'&&str[j]>='a') num[k]=str[j]-'W'; k++; } } void add(int* num1, int* num2, int* num3){ int i,j=101,add=0,c=0; for(i=0;i<101;i++){ add=num1[i]+num2[i]+c; c=add/20; num3[j]=add%20; j--; } if(c==1) num3[j]=1; } void print(int* num){ int i,j=0; while(num[j]==0)j++; if(j>101){ printf("0 "); } else{ for(;j<102;j++){ printf("%c",Digit[num[j]]); } printf(" "); } }