杭电ACM1002 这两个程序差别在哪啊,简直一模一样,可是我写的不能AC,不知道为什么
这是我写的程序,不能AC#include<stdio.h>#include<string.h>intmain(){chara[1001],b[1001];intn,la,...
这是我写的程序,不能AC
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001],b[1001];
int n,la,lb,j,lmax,k,num=1;
scanf("%d",&n);
getchar();
while(n--)
//for(i=1;i<=n;i++)
{
int c[1001]={0},d[1001]={0},e[1001]={0};
scanf("%s",a);
la=strlen(a);
for(j=0;j<=la-1;++j)
c[j]=a[la-1-j]-'0'; //把字符格式的数字转化为整形;把数组a中数字以整形形式倒赋给数组c,即a的最后一位数给c的第一个数
scanf("%s",b);
lb=strlen(b);
for(j=0;j<=lb-1;++j)
d[j]=b[lb-1-j]-'0';
if(la>lb)
lmax=la;
else
lmax=lb;
k=0;
for(j=0;j<=lmax-1;++j)
{
e[j]=(c[j]+d[j]+k)%10; //相当于把数组a的末位加上数组b的末位,余数留下来
k=(c[j]+d[j]+k)/10; //如果相加大于等于十,则进位一,加到前一位上,继续计算
}
if(k!=0)
e[lmax]=1; //如果最高位相加要进位,则再多一个1
printf("Case %d:",num);
num++;
printf("%s + %s = ",a, b);
if(e[lmax]==1)
printf("1");
for(j=lmax-1;j>=0;--j)
{printf("%d",e[j]);}
printf("\n");
if(n>=1)
printf("\n");
}
return 0;
}
这是可以AC的程序
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001], b[1001];
int t, i, la, lb, len_max, num = 1, k;
scanf("%d", &t);
getchar();
while(t--)
{
int c[1001] = {0}, d[1001] = {0}, e[1001] = {0};
scanf("%s", a);
la = strlen(a);
for(i = 0; i <= la - 1; ++i)
c[i] = a[la - 1 - i] - '0';
scanf("%s",b); lb = strlen(b);
for(i = 0; i <= lb - 1; ++i)
d[i] = b[lb - 1 - i] - '0';
if(la > lb)
len_max = la;
else
len_max = lb;
k = 0;
for(i = 0; i <= len_max - 1; ++i)
{
e[i] = (c[i] + d[i] + k) % 10;
k = (c[i] + d[i] + k) / 10;
}
if(k != 0)
e[len_max] = 1;
printf("Case %d:\n", num);
num++;
printf("%s + %s = ",a, b);
if(e[len_max] == 1)
printf("1");
for(i = len_max - 1; i >= 0; --i)
{
printf("%d", e[i]); }
printf("\n");
if(t >= 1)
printf("\n");
}
return 0;
} 展开
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001],b[1001];
int n,la,lb,j,lmax,k,num=1;
scanf("%d",&n);
getchar();
while(n--)
//for(i=1;i<=n;i++)
{
int c[1001]={0},d[1001]={0},e[1001]={0};
scanf("%s",a);
la=strlen(a);
for(j=0;j<=la-1;++j)
c[j]=a[la-1-j]-'0'; //把字符格式的数字转化为整形;把数组a中数字以整形形式倒赋给数组c,即a的最后一位数给c的第一个数
scanf("%s",b);
lb=strlen(b);
for(j=0;j<=lb-1;++j)
d[j]=b[lb-1-j]-'0';
if(la>lb)
lmax=la;
else
lmax=lb;
k=0;
for(j=0;j<=lmax-1;++j)
{
e[j]=(c[j]+d[j]+k)%10; //相当于把数组a的末位加上数组b的末位,余数留下来
k=(c[j]+d[j]+k)/10; //如果相加大于等于十,则进位一,加到前一位上,继续计算
}
if(k!=0)
e[lmax]=1; //如果最高位相加要进位,则再多一个1
printf("Case %d:",num);
num++;
printf("%s + %s = ",a, b);
if(e[lmax]==1)
printf("1");
for(j=lmax-1;j>=0;--j)
{printf("%d",e[j]);}
printf("\n");
if(n>=1)
printf("\n");
}
return 0;
}
这是可以AC的程序
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001], b[1001];
int t, i, la, lb, len_max, num = 1, k;
scanf("%d", &t);
getchar();
while(t--)
{
int c[1001] = {0}, d[1001] = {0}, e[1001] = {0};
scanf("%s", a);
la = strlen(a);
for(i = 0; i <= la - 1; ++i)
c[i] = a[la - 1 - i] - '0';
scanf("%s",b); lb = strlen(b);
for(i = 0; i <= lb - 1; ++i)
d[i] = b[lb - 1 - i] - '0';
if(la > lb)
len_max = la;
else
len_max = lb;
k = 0;
for(i = 0; i <= len_max - 1; ++i)
{
e[i] = (c[i] + d[i] + k) % 10;
k = (c[i] + d[i] + k) / 10;
}
if(k != 0)
e[len_max] = 1;
printf("Case %d:\n", num);
num++;
printf("%s + %s = ",a, b);
if(e[len_max] == 1)
printf("1");
for(i = len_max - 1; i >= 0; --i)
{
printf("%d", e[i]); }
printf("\n");
if(t >= 1)
printf("\n");
}
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询