杭电的 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;
}
倒数第三行跟本文没关系,但是加上他之后,输入数据后直接跳过这一行,消失了我只想说,我不是来要答案的,别再发你的代码了,你很牛逼,好了吧 展开
#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;
}
倒数第三行跟本文没关系,但是加上他之后,输入数据后直接跳过这一行,消失了我只想说,我不是来要答案的,别再发你的代码了,你很牛逼,好了吧 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询