#include<stdio.h>#include<string.h>int main(){ int i,j,str1,str2,k=0; //k用来表示bool值,0假1真 int a1[255],a2[255],a3[255]; char c1[255],c2[255]; //用字符方式存储两个大数的数值 for(i=0;i<255;i++) { a1[i]=0; //把int数组内所有数内置为0 a2[i]=0; } scanf("%s",c1); scanf("%s",c2); //用char类型c1,c2存储大数的值 str1=strlen(c1); //用str1表示读入第一个数的长度 str2=strlen(c2); //用str2表示读入第二个数的长度 j=0; for(i=str1-1;i>=0;i--) //用int类型的数组来来存放大数的位数 a1[j++]=c1[i]-'0'; j=0; for(i=str2-1;i>=0;i--) a2[j++]=c2[i]-'0'; for(i=0;i<255;i++) //大数位数相加如果大于10就向前一位数进1 { a1[i]+=a2[i]; if(a1[i]>=10) { a1[i]-=10; a1[i+1]++; } } //例如a1相加后的结果是1234 j=0; //a1表示就是1234000...000 for(i=254;i>=0;i--) //a3变化后为000...0001234 a3[j++]=a1[i]; //下边目的就是想办法把这些前置的0给消除 for(i=0;i<255;i++) { if(a3[i]!=0) k=1; //当从第一位数一直到非0的数我们都不需要打印 if(k==1) PRintf("%d",a3[i]);//当第一位非0的数出现时候我们把剩下的数打印出来 } if(k==0) printf("0"); //当输入两个0的时候出现的特殊情况 //不加这行程序不会帮你输出结果0 printf("/n"); return 0; }
新闻热点
疑难解答