11.24 作业 Problem E: 小学生算术

来源:互联网 发布:openwrt软件源地址 编辑:程序博客网 时间:2024/05/08 01:43

Description

给出两个正整数,计算两个数相加需要多少次进位。

Input

数据有多组,每组包含两个整数,都在int范围内,输入以EOF结尾

Output

一个整数,表示两个数相加需要的进位次数

Sample Input

123 321
555 555
123456789 987654321

Sample Output

0
3
9

HINT

一定要用整数求余相加判断吗?想想有没有简洁的思路。试试用字符串吧,转换思路,分步处理。

思路:

字符串储存 从最后一位开始算 相加大于10就进位 

注:进位后前面一位数要+1  苟

代码:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    char str1[100],str2[100];    while(scanf("%s",str1)!= EOF)    {        scanf("%s",str2);        int i,j,flag = 0,flag2 = 0;//flag记录次数 flag2记录进位次数 每进位一次+1        int len1 = strlen(str1);//第一个数的长度        int len2 = strlen(str2);//第二个数的长度        int temp = 0;//temp表示相加之和        for(i = len1-1,j = len2 - 1; i>=0||j>=0; i--,j--)        {            temp = 0;//清空每一次的temp            if(i >= 0)                temp += str1[i] - 48;            if(j >= 0)                temp += str2[j] - 48;            if(temp + flag2 >= 10)            {                flag2 = 1;//表示进一位                flag++;            }            else                flag2 = 0;//表示不进位        }        printf("%d\n",flag);//输出进位次数    }    return 0;}


0 0
原创粉丝点击