|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 NYJYA 于 2019-1-20 09:17 编辑
题目描述:谷学长有一个非常简单的问题给你,给你两个整数A和B,你的任务是计算A+B。
输入:输入的第一行包含一个整数T(T<=20)表示测试实例的个数,然后2*T行,分别表示A和B两个正整数。注意整数非常大,那意味着你不能用32位整数来处理。你可以确定的是整数的长度不超过1000。
输出:对于每一个样例,你应该输出两行,第一行是"Case #:",#表示第几个样例,第二行是一个等式"A+B=Sum",Sum表示A+B的结果。注意等式中有空格。 可以解释一下这个代码怎样运行的吗? - <div class="blockcode"><blockquote>
- #include "stdio.h"
- #include "string.h"
- int main()
- {
- int i,t,j=1,n,len,k;
- char sum[1009],sa[1009],sb[1009];
- scanf("%d",&t);
- getchar();
- while(t--)
- {
- for(i=0;i<1009;i++)
- sum[i]='0';
- scanf("%s%s",sa,sb);
- len=strlen(sa);
- for(i=len-1,k=0;i>=0;i--,k++)
- {
- sum[k]=sum[k]-'0'+sa[i];
- n=k;
- while(sum[n]>'9')
- {
- sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
- sum[n]=(sum[n]-'0')%10+'0';
- n++;
- }
- }
- len=strlen(sb);
- for(i=len-1,k=0;i>=0;k++,i--)
- {
- sum[k]=sum[k]-'0'+sb[i];
- n=k;
- while(sum[n]>'9')
- {
- sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
- sum[n]=(sum[n]-'0')%10+'0';
- n++;
- }
- }
- printf("Case %d:\n%s + %s = ",j,sa,sb);
- j++;
- for(i=1008;sum[i]=='0';i--);
- for(;i>=0;i--)
- printf("%c",sum[i]);
- //printf("\n");
- if(t>0)
- printf("\n");
- }
- return 0;
- }
复制代码
想想小学数学课是怎么用竖式算加减法的
1、从低位加起,
2、满10就向高一位进1
然后你模拟这个过程就对了
|
|