| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2421 人关注过本帖
标题:杭电oj1002上的题,为什么我的过不了啊,,
只看楼主 加入收藏
zwfars
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-13
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
杭电oj1002上的题,为什么我的过不了啊,,
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void deal(char *a,int  *a1){
  int i,j;
    scanf("%s",a);
    for(i=0;a[i]<='9'&&a[i]>='0';i++)
         a1[i]=a[i]-'1'+1;
}

int main(){
    char a[1010]={0},b[1010]={0};
    int a1[1010]={0},b1[1010]={0},c[1010]={0};
    int i,j,m,n,p,a2,b2,f=1009,sb=0,ars,a3,b3;
    scanf("%d",&n);
    for(p=1;p<=n;p++){
        a2=b2=a3=b3=sb=0,f=1009;
        deal(a,a1),deal(b,b1);
     for(i=0;i<1000&&a[i]!=0;i++)
     a3=a2=i;
     for (i=0;i<1000&&b[i]!=0;i++)
      b3=b2=i;
     while(a2>=0&&b2>=0){
         c[f]=(a1[a2]+b1[b2]+sb)%10;
         sb=(a1[a2]+b1[b2]+sb)/10;
         a2--,b2--;
         f--;
     }
     if(a2>b2){
         while(a2>=0){
             c[f]=(a1[a2]+sb)%10;
             sb=(a1[a2]+sb)/10;
             a2--;
             f--;
         }
     }
    else{
        while(b2>=0){
            {
             c[f]=(b1[b2]+sb)%10;
             sb=(b1[b2]+sb)/10;
             b2--;
             f--;
         }
        }
        if(sb) c[f]=sb,f--;
        printf("case %d:\n",p);
    printf("%s + %s = ",a,b);
     for(i=f+1;i<=1009;i++)
           printf("%d",c[i]);
           if(p==n)
           printf("\n");
           else
           printf("\n\n");
    }
    }
    return 0;
}
搜索更多相关主题的帖子: include 
2013-03-22 16:42
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
你没发现 a比 b大的时候没有输出么?


[fly]存在即是合理[/fly]
2013-03-22 19:39
zwfars
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-13
收藏
得分:0 
回复 2楼 azzbcc
谢了,我改了,还是过不了啊,为什么啊,
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void deal(char *a,int  *a1){
  int i,j;
    scanf("%s",a);
    for(i=0;a[i]<='9'&&a[i]>='0';i++)
         a1[i]=a[i]-'1'+1;
}

int main(){
    char a[1010]={0},b[1010]={0};
    int a1[1010]={0},b1[1010]={0},c[1010]={0};
    int i,j,m,n,p,a2,b2,f=1009,sb=0,ars,a3,b3;
    scanf("%d",&n);
    for(p=1;p<=n;p++){
        a2=b2=a3=b3=sb=0,f=1009;
        deal(a,a1),deal(b,b1);
     for(i=0;i<1010&&a[i]!=0;i++)
     a3=a2=i;
     for (i=0;i<1010&&b[i]!=0;i++)
      b3=b2=i;
     while(a2>=0&&b2>=0){
         c[f]=(a1[a2]+b1[b2]+sb)%10;
         sb=(a1[a2]+b1[b2]+sb)/10;
         a2--,b2--;
         f--;
     }
     if(a2>b2){
         while(a2>=0){
             c[f]=(a1[a2]+sb)%10;
             sb=(a1[a2]+sb)/10;
             a2--;
             f--;
         }
     }
    else{
        while(b2>=0){
            {
             c[f]=(b1[b2]+sb)%10;
             sb=(b1[b2]+sb)/10;
             b2--;
             f--;
         }
        }
    }
        if(sb) c[f]=sb,f--;
    printf("case %d:\n",p);
    printf("%s + %s = ",a,b);
     for(i=f+1;i<=1009;i++)
           printf("%d",c[i]);
           if(p==n)
           printf("\n");
           else
           printf("\n\n");

    }
    return 0;
}
2013-03-22 22:27
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
不知道了,应该没问题的,你加上负数的情况看看


[fly]存在即是合理[/fly]
2013-03-22 23:45
zwfars
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-13
收藏
得分:0 
回复 4楼 azzbcc
那个说了是正数的
2013-03-23 17:02
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
搞不明白,不懂。你自己测试看看

程序代码:
#include <stdio.h>
#include <string.h>

#define MAX 1024

void Add(char *a, char *b, char *c)
{
    int Result, i = 0;
    int a_len = strlen(a);
    int b_len = strlen(b);
    
    memset(c, 0, MAX);

    for (--b_len;--a_len >= 0 && b_len >= 0;--b_len)
    {
        Result = a[a_len]-'0' + b[b_len]-'0' + c[i];
        c[i++] = Result % 10 + '0';
        c[i] = (Result /= 10);
    }
    while (a_len >= 0)
    {
        Result = a[a_len--]-'0' + c[i];
        c[i++] = Result % 10 + '0';
        c[i] = (Result /= 10);
    }
    while (b_len >= 0)
    {
        Result = b[b_len--]-'0' + c[i];
        c[i++] = Result % 10 + '0';
        c[i] = (Result /= 10);
    }
    
    if (Result)    c[i] += '0';
    strrev(c);
}

int main()
{
    int n, i = 0;
    char a[MAX] = {0};
    char b[MAX] = {0};
    char c[MAX] = {0};

    
    for (scanf("%d", &n); ++i <= n;)
    {
        scanf("%s%s", a, b), Add(a, b, c);
        printf("Case %d:\n%s + %s = %s\n", i, a, b, c);
        if (n != i)    puts("");
    }
    return 0;
}


[fly]存在即是合理[/fly]
2013-03-23 17:35
快速回复:杭电oj1002上的题,为什么我的过不了啊,,
数据加载中...
 
   



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

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