1 /* 2 *很多学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个整数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据, 3 直到读到两个0(这是输入结束标记)。假设读入的整数都不超过9个数字。 4 *样例输入: 5 123 456 6 555 555 7 123 594 8 0 0 9 *样例输出: 10 0 11 3 12 1 13 */ 14 15 //源程序 16 #include <stdio.h> 17 18 int main() 19 { 20 int a, b; 21 while(scanf("%d%d", &a, &b) == 2) 22 { 23 if(!a && !b) return; //读到两个0,则输入结束 24 int i, c = 0, ans = 0; //c表示进位,ans表示进位个数 25 for(i = 9; i >= 0; i--) 26 { 27 c = ((a%10 + b%10 + c) > 9) ? 1 : 0; 28 ans += c; 29 a /= 10; b /= 10; 30 } 31 printf("%d\n", ans); 32 } 33 return 0; 34 } 35 /*分析: 36 *int的上限约2000000000,可保存所有9位整数,因此用整数来保存输入数据。每次把a和b分别模10获得最低位。 37 */ 38 39 //程序(2) 40 #include<stdio.h> 41 42 int main() 43 { 44 int m, n, i, t, k, a[3], b[3]; //t表示进位,k表示进位个数 45 while(scanf("%d%d\n", &m, &n) != EOF) 46 { 47 if( !(m||n) ) break; //读到两个0,则跳出循环 48 for(i = 0; i < 3; i++) 49 { 50 a[i] = m - (m/10) * 10; //等价于a%10 51 b[i] = n - (n/10) * 10; //等价于b%10 52 m /= 10; 53 n /= 10; 54 } 55 for(i=k=t=0; i < 3; i++) 56 if(t = ((a[i]+b[i]+t) / 10)) k++; 57 printf("%d\n", k); 58 } 59 return 0; 60 }
亲爱的读者:如果觉得本文对你有所帮助,请点击推荐,分享给其他人!