注意末尾回车符的数量,杭电题经常有此类坑。
swap可以交换char数组。
strlen得到的返回值,最好存到size_t类型中。
但放入for循环时,用int代替,直接用size_t的后果是for循环由于size_t没有负类型的原因会死循环。
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 1005
char num1[maxn];
char num2[maxn];
int ans[maxn];
int main()
{
int N;
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
memset(ans,0,sizeof(ans));
scanf("%s%s",num1,num2);
size_t lenth1 = strlen(num1);
size_t lenth2 = strlen(num2);
int cnt = 0;
printf("Case %d:\n",i);
printf("%s + %s = ",num1,num2);
int k =0;
if(lenth2>lenth1)
{
swap(lenth1,lenth2);
swap(num1,num2);
}
for(int j=1;j<=lenth2;j++)
{
int t = num1[lenth1-j] - '0' + num2[lenth2-j] - '0' + k;
ans[cnt++] = t%10;
if(t>9) k = 1;
else k = 0;
}
for(int j=lenth2+1;j<=lenth1;j++)
{
int t = num1[lenth1-j] - '0' + k;
ans[cnt++] = t%10;
if(t>9) k = 1;
else k = 0;
}
if(k!=0) ans[cnt++] = 1;
for(int j=cnt-1;j>=0;j--)
{
printf("%d",ans[j]);
}
printf("%s",i==N?"\n":"\n\n");
}
return 0;
}
本文介绍了解答杭州电子科技大学在线编程题目时的一些常见技巧和注意事项,包括如何正确使用字符串交换函数swap,如何处理字符串长度不一致的情况,以及如何避免死循环等问题。通过具体的代码示例展示了如何实现两个不同长度字符串的加法运算。
2629

被折叠的 条评论
为什么被折叠?



