| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1114 人关注过本帖
标题:杭电1002,纠结,请大侠帮忙看看哪错了
只看楼主 加入收藏
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
杭电1002,纠结,请大侠帮忙看看哪错了
#include <stdio.h>
#include <string.h>
int main()
{
 int i,j,n,k,m;
 char c1[1002]={0},c2[1002]={0},sum[1002]={0},c11[1002]={0},c22[1002]={0};
 scanf("%d",&n);
 m=n;
 while(scanf("%s%s",c1,c2)!=EOF&&n--)
 {

     if(m>=1&&m<=20)
     {
     printf("Case %d:\n",m-n);
 for(i=strlen(c1)-1,j=0;i>=0;i--,j++)
 c11[j]=c1[i]-'0';
 c11[j]=0;
  for(i=strlen(c2)-1,j=0;i>=0;i--,j++)
 c22[j]=c2[i]-'0';
 c22[j]=0;
  for(i=0;i<strlen(c1);i++)
 printf("%c",c1[i]);
 printf(" + ");
for(i=0;i<strlen(c2);i++)
 printf("%c",c2[i]);
printf(" = ");
  for(i=0;i<=strlen(c1)||i<=strlen(c2);i++)
  if((sum[i]+c11[i]+c22[i])>=10)
  {
      sum[i]=sum[i]+c11[i]+c22[i]-10;
      sum[i+1]=sum[i+1]+1;
  }
  else
 sum[i]=sum[i]+c11[i]+c22[i];
  k=i;
 if(sum[k-1])
 for(i=k-1;i>=0;i--)
     printf("%d",sum[i]);
 else
 for(i=k-2;i>=0;i--)
 printf("%d",sum[i]);
printf("\n");
for(i=0;i<strlen(c1);i++)
      c1[i]=0;
for(i=0;i<strlen(c2);i++)
      c2[i]=0;
for(i=0;i<strlen(sum);i++)
    sum[i]=0;
     if(n)
         printf("\n");
 }
 }
 return 0;
}
搜索更多相关主题的帖子: 纠结 
2010-07-19 18:41
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:5 
暂时没看完你的代码,不过想问一下:
for(i=strlen(c1)-1,j=0;i>=0;i--,j++)
c11[j]=c1[i]-'0';
c11[j]=0;
这是不是把c1中的字符串分别减去0的ASCII值再逆序存放到c11中啊?
如果是这样并且后面不存放其他的东西的话,那么最后的c11[j]=0;应该写成c11[j]='\0';
剩下的代码我再看看……呵呵……

[ 本帖最后由 vs_inzaghi 于 2010-7-19 19:27 编辑 ]

我很懒,但我讨厌别人说我懒……
2010-07-19 19:26
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
恩,是这样的,但我改了还是没有提交成功
2010-07-19 19:46
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
好纠结的算法……能给点提示吗?就是说这程序的目的……

我很懒,但我讨厌别人说我懒……
2010-07-19 19:46
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
题目是这样的
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.

 

Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.

 

Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.

 

Sample Input
2
1 2
112233445566778899 998877665544332211
 

Sample Output
Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
2010-07-19 19:49
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
貌似你c11[j]=0;中的j值就是你最后存进去的j值,也就是说,你实际上用0这个字符把你最后存进去的一个字符给覆盖掉了……


我很懒,但我讨厌别人说我懒……
2010-07-19 19:52
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
这个我是为了最前面的数字进位准备的
2010-07-19 19:56
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
哪位大侠看看咯,
我把所有积分送出
2010-07-19 20:35
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:15 
很水的错误,在while循环结束一次之后你没有初始化,再初始化一次就行了
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,n,k,m;
char c1[1002]={0},c2[1002]={0},sum[1002]={0},c11[1002]={0},c22[1002]={0};


scanf("%d",&n);
m=n;
while(scanf("%s%s",c1,c2)!=EOF&&n--)
{

     if(m>=1&&m<=20)
     {
     printf("Case %d:\n",m-n);
for(i=strlen(c1)-1,j=0;i>=0;i--,j++)
c11[j]=c1[i]-'0';
c11[j]=0;
  for(i=strlen(c2)-1,j=0;i>=0;i--,j++)
c22[j]=c2[i]-'0';
c22[j]=0;
  for(i=0;i<strlen(c1);i++)
printf("%c",c1[i]);
printf(" + ");
for(i=0;i<strlen(c2);i++)
printf("%c",c2[i]);
printf(" = ");
  for(i=0;i<=strlen(c1)||i<=strlen(c2);i++)
  if((sum[i]+c11[i]+c22[i])>=10)
  {
      sum[i]=sum[i]+c11[i]+c22[i]-10;
      sum[i+1]=sum[i+1]+1;
  }
  else
sum[i]=sum[i]+c11[i]+c22[i];
  k=i;
if(sum[k-1])
for(i=k-1;i>=0;i--)
     printf("%d",sum[i]);
else
for(i=k-2;i>=0;i--)
printf("%d",sum[i]);
printf("\n");
for(i=0;i<strlen(c1);i++)
      c1[i]=0;
for(i=0;i<strlen(c2);i++)
      c2[i]=0;
for(i=0;i<strlen(sum);i++)
    sum[i]=0;
     if(n)
         printf("\n");
}
memset(c1,0,sizeof(sum));
memset(c2,0,sizeof(sum));
memset(sum,0,sizeof(sum));
memset(c11,0,sizeof(sum));
memset(c22,0,sizeof(sum));

}
return 0;
}

然后就AC了
╮(╯_╰)╭
图片附件: 游客没有浏览图片的权限,请 登录注册

2010-07-19 21:24
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
太感谢了,我终于提交成功了

2010-07-19 21:40
快速回复:杭电1002,纠结,请大侠帮忙看看哪错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036372 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved