BNU Online Judge 1006

来源:互联网 发布:java主流框架有哪些 编辑:程序博客网 时间:2024/06/07 03:11

题目如下:



本题的思路如下:
对于输入的两个数,我们需要将最后的位数进行相加,以确定是否会产生进位,那么这样的方法有很多。
  1. 可以利用String来存取数据 ,这样可以取得每一位的数据,但是这样操作的缺陷在于运算的时候取出来的数据同样也是string类型的;
  2. 可以利用char[]来存取数据,这样也同样可以取得每一位的数据,但是他与string有着同样的缺陷;
  3. 用int来存取数据,通过除法运算以及取余运算可以取得每一位,这样在操作的时候数据依然是int\类型的。本题我们采用这样的方法来解题。

有了以上的思路,我们在编写程序的时候就会很清晰,代码以及相应的解释如下:

#include<iostream>#include<string>#include<stdio.h>using namespace std;int main(){int a, b, x, y, c;int result;//存放进位的个数cin >> a >> b;//判断输入如果等于0 0 就结束程序while (a != 0 && b != 0)//{if (a == 0 && b == 0) break;result = 0;c = 0;while (a > 0 || b > 0){//取得两个数中的最后一位x = a % 10;y = b % 10;//改变数据,去掉最后一位a = a / 10;b = b / 10;//判断是不是产生进位c = x + y + c;//如果产生了进位 就将count加一if (c >= 10){result++;c = c / 10;}else{c = 0;}}//按照要求来规范输出格式if (result == 0)    printf("No carry operation.\n");else{if (result > 1) printf("%d carry operations.\n", result);else printf("%d carry operation.\n", result);}cin >> a >> b;}return 0;}

运行程序测试结果如下:


0 0
原创粉丝点击