UVA - 424 Integer Inquiry

来源:互联网 发布:数据透视表的应用 编辑:程序博客网 时间:2024/05/20 14:16

   题目大意:求给出的整数的和

解体思路:将数放在数组中,再进行运算

有个bug,第61行的count2<len1那,因为num1数位增加后,但len1仍没有变,所以造成的错误,输入数字99 和9999就会得到错误结果

#include<cstdio> #include<cstring>int main() {char end[200];char num1[200];char num2[150];int number1[200];int number2[100];int len1;int len2;memset(num1,'\0',sizeof(num1));gets(num1);len1 = strlen(num1); if(len1 == 1 && num1[0] == 0) return 0;for(int i = 0; i < len1 / 2 ; i++) {char temp;temp = num1[i];num1[i] = num1[len1 - i - 1];num1[len1 - i - 1] = temp;}//先倒置while(gets(num2)) {if(strlen(num2) == 1 && num2[0] == '0')break; //判断是否为零int num;len2 = strlen(num2);len1 = strlen(num1);int len3;int mark = 0 ;if(len1 < len2) {for(int i = 0; i <= len2 - len1 + 1; i++) num1[len1 + i ] = '0' ;} //  num1的数位总比num2大1    else if(len1 == len2) num1[len1] = '0';//    num1的位数总比num2大1for(int i = 0; i < len2 / 2 ; i++) {char temp;temp = num2[i];num2[i] = num2[len2 - i - 1];num2[len2 - i - 1] = temp;}// 将len2倒置int count;//记录取到第几个for(count = 0; count < len2; count++) {num =( num1[count] - '0') +( num2[count] - '0' ) + mark;if(num >= 10) { mark = 1;num = num - 10;}elsemark = 0;num1[count] = num + '0';num = 0;}int count2;if(mark == 1)for( count2 = count; count2 < len1; count2++) {num = num1[count2] - '0' + mark;if(num >= 10) num = num - 10;else{num1[count2] = num + '0';mark = 0;break;}num1[count2] = num + '0';}if(count2 == len1 && mark == 1) num1[len1] = '1';memset(num2,'\0',sizeof(num2));}len1 = strlen(num1);//len3取最小值的位数if(num1[len1 - 1] != '0')printf("%c",num1[len1 -1]);for(int i = len1 - 2; i >= 0; i--) {printf("%c",num1[i]);}printf("\n");return 0;}


0 0
原创粉丝点击