南阳理工oj-74 小学生算术

小学生算术

时间限制:3000 ms  |  内存限制:65535 KB 
难度:1
描述 
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
输入
输入两个正整数m,n.(m,n,都是三位数)
输出
输出m,n,相加时需要进位多少次。
样例输入
123 456
555 555
123 594
0 0
样例输出
0
3 
1

代码:

#include <stdio.h>
int count(int m,int n){
    int num=0,a[4],i;
    a[0]=0;
    a[3]=m%10+n%10;
    a[2]=m/10%10+n/10%10;
    a[1]=m/100%10+n/100%10;
    for (i=3; i>0; i--) {
        if (a[i]>=10) {
            a[i-1]++;
            num++;
        }
    }
    return num;
}
int main(){
    int m,n;
    while (1) {
        scanf("%d %d",&m,&n);
        if (m==0&&n==0) {
            break;
        }
        printf("%d\n",count(m, n));
    }
    return 0;
}

思路:定义了一个函数专门计算次数,因为有可能两个三位数相加会超过1000,所以便设了可以存放4组数据的一维数组,将他们的个位,十位,百位,分别给a[3],a[2],a[1],判断是否大于10如果大于十的话高位的数字加1,并且记录进位次数的num自加一;最后返回num值。

在主函数中当输入两个值都为0的时候才结束也就是在此之前一直可以做循环就设了 当1位真是一直做循环,一旦读入的m和n都等于0时退出循环

阅读更多
个人分类: 南阳理工算法
上一篇南阳理工oj-75 日期计算
下一篇南阳理工oj-822 画图
想对作者说点什么? 我来说一句

南阳理工ACM题库

2012年12月26日 13.92MB 下载

没有更多推荐了,返回首页

关闭
关闭