标签:count 10 num1 ++ len1 len2 初级 加法
初级加法
Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)
Total Submissions: 151 Accepted Submissions: 66
Problem Description
孩子们是这样学习多位数的加法:将两个加数右对齐,然后从右到左每次加一位。这种情况下经常会产生进位,即两位相加结果若大于等于10就向左进一位。对于孩子们来说,判断进位具有一定的挑战性。你的任务是:给定任意的两个加数,要求统计出进位的次数,以帮助教育者评估该加法的难度。
Input
每一行是两个少于10位的无符号整数,最后一行为0 0,表示输入结束。
Output
对输入文件的每一行(除最后一行外),计算它们在相加时进位的次数并输出。按照输出样例的格式输出。
Sample Input
123 456
555 555
123 594
0 0
Sample Output
No carry operation.
3 carry operations.
1 carry operation.
#include <stdio.h>
#include <string.h>
int main()
{
char num1[10],num2[10];
int count;
int len1,len2;
while(1) {
scanf("%s%s",num1,num2);
count = 0;
if(!strcmp(num1,"0") && !strcmp(num2,"0"))
break;
len1 = strlen(num1)-1;
len2 = strlen(num2)-1;
if(len1 == len2) {
for(int i = len1 ; i >= 0 ; i--)
{
if((num1[i]-'0' + num2[i]-'0')>=10) {
count ++;
num1[i-1] ++;
}
}
}
if(len1>len2) {
for(; len2 >= 0 ;) {
if((num1[len1]-'0' + num2[len2]-'0')>=10) {
count ++;
num1[len1-1]++;
}
len1--;
len2--;
}
for(;len1>0;) {
if(num1[len1] -'0'>= 10) {
count ++;
num1[len1-1] ++;
}
len1--;
}
if(num1[0]-'0'>=10)
count++;
}
if(len2>len1) {
for(; len1 >= 0 ;) {
if((num2[len2]-'0' + num1[len1]-'0')>=10) {
count ++;
num2[len2-1] ++;
}
len2--;
len1--;
}
for(;len2>0;) {
if(num2[len2] -'0'>= 10) {
count ++;
num2[len2-1] ++;
}
len2--;
}
if(num2[0]-'0'>=10)
count++;
}
if(count==0) {
printf("No carry operation.\n");
} else if(count==1) {
printf("1 carry operation.\n");
} else {
printf("%d carry operations.\n",count);
}
}
return 0;
}
标签:count,10,num1,++,len1,len2,初级,加法 来源: https://blog.csdn.net/qq_51299174/article/details/118004088
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。