fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAXDIGIT 10
  5.  
  6. int read_from_str(int len,int* big,char* str);
  7. //void print_num(int len,int *big);
  8. int count_carry(int* biga,int* bigb, int len);
  9.  
  10. int main (void) {
  11.  
  12. char str_a[MAXDIGIT+1] = {"\0"};
  13. char str_b[MAXDIGIT+1] = {"\0"};
  14. int endornot_a = 0;
  15. int endornot_b = 0;
  16. int a[MAXDIGIT];
  17. int b[MAXDIGIT];
  18. int reslen = 0;
  19. int c = 0;
  20.  
  21. while (scanf("%s %s",str_a,str_b)!=EOF) {
  22.  
  23. endornot_a = read_from_str(strlen(str_a),a,str_a);
  24. endornot_b = read_from_str(strlen(str_b),b,str_b);
  25.  
  26. if ((endornot_a==1)&&(endornot_b==1)){
  27. break;
  28. }
  29.  
  30. if (strlen(str_a) >= strlen(str_b)) {
  31. reslen = strlen(str_a);
  32. }else{
  33. reslen = strlen(str_b);
  34. }
  35.  
  36. /*
  37. printf("reslen:%d\n",reslen);
  38.  
  39. print_num(strlen(str_a),a);
  40. print_num(strlen(str_b),b);
  41. */
  42.  
  43. c = count_carry(a,b,reslen);
  44.  
  45. if (c == 0) {
  46. printf("No carry operation.\n");
  47. }else if (c == 1){
  48. printf("1 carry operation.\n");
  49. }else{
  50. printf("%d carry operations.\n",c);
  51. }
  52.  
  53. }
  54.  
  55. return 0;
  56. }
  57.  
  58. int read_from_str(int len,int* big,char* str){
  59. int i = 0;
  60.  
  61. memset(big,0,sizeof(int)*MAXDIGIT);
  62.  
  63. /*printf("%d\n",len);*/
  64. for (i = len-1; i >= 0 ; --i){
  65. big[len-1-i]=str[i]-48;
  66. /*
  67. printf("str[%d]:%c\n",i,str[i]);
  68. printf("big[%d]:%d\n",len-1-i,big[len-1-i]);
  69. */
  70. }
  71.  
  72. if ((len==1)&&(big[0]==0)){
  73. /*printf("num is 0\n");*/
  74. return 1;
  75. }
  76.  
  77. }
  78.  
  79. /*
  80. void print_num(int len,int *big){
  81. int i = 0;
  82.  
  83. for (i = len-1; i >= 0; --i) {
  84. printf("%d",big[i]);
  85. }
  86. printf("\n");
  87. }
  88. */
  89.  
  90. int count_carry(int* biga,int* bigb,int len){
  91. int i = 0;
  92. int carry = 0;
  93. int count = 0;
  94.  
  95. /*printf("%d\n",len);*/
  96. for (i = 0; i < len; i++) {
  97. /*
  98. printf("biga[%d]:%d\n",i,biga[i]);
  99. printf("bigb[%d]:%d\n",i,bigb[i]);
  100. */
  101.  
  102. carry = (biga[i] + bigb[i] +carry) / 10;
  103.  
  104. if (carry > 0){
  105. count++;
  106. }
  107.  
  108. }
  109.  
  110. return count;
  111. }
Success #stdin #stdout 0s 2156KB
stdin
1 1
2 2
5 5
0 0
stdout
Standard output is empty