您的位置:首页 > 其它

11.24 作业 Problem E: 小学生算术

2016-11-24 18:48 281 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: