杭电的 acm 1002题 http://acm.hdu.edu.cn/showproblem.php?pid=1002

下面是我的代码,请告诉我错在哪里,请不要跟我说你认为应该怎么做,我更想知道我怎么错了?#include<stdio.h>intnot_0(char*s)/*返回字符串最后... 下面是我的代码,请告诉我错在哪里,请不要跟我说你认为应该怎么做,我更想知道我怎么错了?
#include<stdio.h>
int not_0(char *s)/* 返回字符串最后一个不为空的标号,从零开始*/
{
int c=0;
while(s[c]!='\0')
{c++;}
return c-1;
}
int sum(char *A,char *B,char *D)/*把A与B相加后保存在D中*/
{
int a,b,c,d=0,count,mid;
int sum,rest=0,rest1=0;
char C[1002]="\0";
a=not_0(A);
b=not_0(B);
for(count=0;a>=0&&b>=0;a--,b--)
{
sum=(A[a]+B[b]-96)%10;
C[count++]=sum+rest+48;
rest=(A[a]+B[b]-96)/10;
mid=count;
rest1=rest;
}
while(a>=0)
{
C[count++]=A[a--];
}
while(b>=0)
{
C[count++]=B[b--];
}
if(rest1==1)
{
if(C[mid]=='\0')
C[mid]=49;
else
{
if(C[mid]==57)
{
C[mid]=48;
C[mid]=49;
}
else
C[mid]+=1;
}
}
c=not_0(C);
while(c>=0)
{
D[d++]=C[c--];
}
D[d]='\0';
return 0;
}
int main()
{
int i,count=0;
char A[1002]="\0",B[1002]="\0",ch[20][1002];
for(i=0;i<20;i++)
ch[i][0]='\0';
scanf("%d",&count);
if(count<0||count>20)
return 0;
for(i=0;i<count;i++)
{
scanf("%s %s",A,B);
sum(A,B,ch[i]);
printf("Case %d:\n%s+%s=%s\n",i+1,A,B,ch[i]);
A[0]='\0';
B[0]='\0';
}
scanf("%d",i);
return 0;
}
倒数第三行跟本文没关系,但是加上他之后,输入数据后直接跳过这一行,消失了我只想说,我不是来要答案的,别再发你的代码了,你很牛逼,好了吧
展开
 我来答
qfyh05
2011-01-25 · TA获得超过507个赞
知道小有建树答主
回答量:325
采纳率:50%
帮助的人:358万
展开全部
兄台,不要那么怒,他不是显示他多牛,只是想你参考一下而已,看看别人的解题报告是一种享受。
你的问题有不少:
1、倒数第三行scanf()删掉;
2、输出格式不对;
3、最重要的是加法运算里面的问题,你用9+91去测试你的程序,你就应该懂你错哪了。就是当相加到只剩下a或者b的时候,此时还有进位,你没有处理,我看到好像你是最后再处理,估计没有考虑到这种情况。
drama620
2011-01-24 · TA获得超过122个赞
知道答主
回答量:75
采纳率:0%
帮助的人:24万
展开全部
我的通过了,下面是我的代码:不知道为什么不能完整显示,我把完整的代码通过百度Hi给你发过去了 #include
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式