online judge 1002题
我在vc上运行完全没问题,但是贴到网上就出错题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1002源代码#include<...
我在vc上运行完全没问题,但是贴到网上就出错
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1002
源代码
#include<stdio.h>
int main()
{
int n,i,j,low1,low2,top1,top2,top3,k;
int a[5][25],b[5][25],c[5][25];
char data;
scanf("%d",&n);
for(i=0;i<5;i++)
{
for(j=0;j<25;j++)
{
a[i][j]=0;
b[i][j]=0;
c[i][j]=0;
}
}
getchar();
i=0;
while(i<n)
{
data=getchar();
j=0;
while(data!=' ')
{
a[i][j++]=data-48;
data=getchar();
}
j=0;
data=getchar();
while(data!='\n')
{
b[i][j++]=data-48;
data=getchar();
}
i++;
}
for(i=0;i<n;i++)
{
for(j=24;j>=0;j--)
{
if(a[i][j]!=0)
{
low1=j;
break;
}
}
for(j=24;j>=0;j--)
{
if(b[i][j]!=0)
{
low2=j;
break;
}
}
j=24;
while(low1>=0)
{
a[i][j--]=a[i][low1];
a[i][low1--]=0;
}
j=24;
while(low2>=0)
{
b[i][j--]=b[i][low2];
b[i][low2--]=0;
}
for(j=24;j>=0;j--)
{
if(a[i][j]+b[i][j]>=10)
{
c[i][j-1]=c[i][j-1]+1;
c[i][j]=a[i][j]+b[i][j]-10+c[i][j];
}
else
c[i][j]=a[i][j]+b[i][j];
}
for(j=0;j<25;j++)
{
if(a[i][j]!=0)
{
top1=j;
break;
}
}
for(j=0;j<25;j++)
{
if(b[i][j]!=0)
{
top2=j;
break;
}
}
for(j=0;j<25;j++)
{
if(c[i][j]!=0)
{
top3=j;
break;
}
}
printf("Case %d:\n",i+1);
for(j=top1;j<25;j++)
printf("%d",a[i][j]);
printf(" + ");
for(j=top2;j<25;j++)
printf("%d",b[i][j]);
printf(" = ");
for(j=top3;j<25;j++)
printf("%d",c[i][j]);
printf("\n");
if(i!=n-1)
printf("\n");
}
} 展开
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1002
源代码
#include<stdio.h>
int main()
{
int n,i,j,low1,low2,top1,top2,top3,k;
int a[5][25],b[5][25],c[5][25];
char data;
scanf("%d",&n);
for(i=0;i<5;i++)
{
for(j=0;j<25;j++)
{
a[i][j]=0;
b[i][j]=0;
c[i][j]=0;
}
}
getchar();
i=0;
while(i<n)
{
data=getchar();
j=0;
while(data!=' ')
{
a[i][j++]=data-48;
data=getchar();
}
j=0;
data=getchar();
while(data!='\n')
{
b[i][j++]=data-48;
data=getchar();
}
i++;
}
for(i=0;i<n;i++)
{
for(j=24;j>=0;j--)
{
if(a[i][j]!=0)
{
low1=j;
break;
}
}
for(j=24;j>=0;j--)
{
if(b[i][j]!=0)
{
low2=j;
break;
}
}
j=24;
while(low1>=0)
{
a[i][j--]=a[i][low1];
a[i][low1--]=0;
}
j=24;
while(low2>=0)
{
b[i][j--]=b[i][low2];
b[i][low2--]=0;
}
for(j=24;j>=0;j--)
{
if(a[i][j]+b[i][j]>=10)
{
c[i][j-1]=c[i][j-1]+1;
c[i][j]=a[i][j]+b[i][j]-10+c[i][j];
}
else
c[i][j]=a[i][j]+b[i][j];
}
for(j=0;j<25;j++)
{
if(a[i][j]!=0)
{
top1=j;
break;
}
}
for(j=0;j<25;j++)
{
if(b[i][j]!=0)
{
top2=j;
break;
}
}
for(j=0;j<25;j++)
{
if(c[i][j]!=0)
{
top3=j;
break;
}
}
printf("Case %d:\n",i+1);
for(j=top1;j<25;j++)
printf("%d",a[i][j]);
printf(" + ");
for(j=top2;j<25;j++)
printf("%d",b[i][j]);
printf(" = ");
for(j=top3;j<25;j++)
printf("%d",c[i][j]);
printf("\n");
if(i!=n-1)
printf("\n");
}
} 展开
1个回答
展开全部
1. 题目不说最多20组数吗,你怎么只用5个。多余的怎么算。另外数组长度应为1000,结果数组至少应为1001。先看看这个。
建议:
2. 要写注释。存数移位很难看懂。
3. 读一组,算完后直接打印一组,再数组初始化读入新的数据重新计算不好吗。空间代价也很高。
4. low 和top可以只用一个参数,如tag。k参数未用到,增加了空间开销(有的编译器下不能通过)。
5. (检验过上述所有因素后,题目只说输出两行隔一行。最后一行似乎没有空行)但一般来说空一行也不会错。这个是小问题。主要看前面。
建议:
2. 要写注释。存数移位很难看懂。
3. 读一组,算完后直接打印一组,再数组初始化读入新的数据重新计算不好吗。空间代价也很高。
4. low 和top可以只用一个参数,如tag。k参数未用到,增加了空间开销(有的编译器下不能通过)。
5. (检验过上述所有因素后,题目只说输出两行隔一行。最后一行似乎没有空行)但一般来说空一行也不会错。这个是小问题。主要看前面。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询