【NYOJ】[74]小学生算术_NYOJ

模拟进位
刚开始想可能会忽视记录进位次数之后,真的要”进位”

#include<stdio.h>
int main() {
    int a,b;
    while(scanf("%d %d",&a,&b),a!=0||b!=0) {
        int cnt=0;
        int m[6];
        m[0]=a%10;
        m[3]=b%10;
        m[1]=a/10%10;
        m[4]=b/10%10;
        m[2]=a/100;
        m[5]=b/100;
        if(m[0]+m[3]>9) {
            cnt++;
            m[1]+=m[0]+m[3]-9;
        }
        if(m[1]+m[4]>9) {
            cnt++;
            m[2]+=m[1]+m[4]-9;
        }
        if(m[2]+m[5]>9) {
            cnt++;
        }
        printf("%d\n",cnt);
    }
    return 0;
}

标程的思路是一样的
不过没用数组显得乱一些

#include<stdio.h>
int main() {
    int a,b,c,d,e,f,n,m,i;
    for(;;) {
        scanf("%d%d",&n,&m);
        if(n==0&&m==0)
            return 0;
        else {
            i=0;
            a=n/100;
            b=n%100/10;
            c=n%10;
            d=m/100;
            e=m%100/10;
            f=m%10;
            if(c+f>=10) {
                i+=1;
                b+=1;
            }
            if(b+e>=10) {
                i+=1;
                a+=1;
            }
            if(a+d>=10) {
                i+=1;
            }
            printf("%d\n",i);
        }
    }
    return 0;
}

题目地址:【NYOJ】[74]小学生算术