| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 814 人关注过本帖
标题:那位大虾帮我看看,我这哪里出错了。
只看楼主 加入收藏
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:11 
那位大虾帮我看看,我这哪里出错了。
题目很简单的,一个多位数乘以一个两位数

想用代码写出他们是如何运行每一步的,最终输出结果。

下面是我写的代码,请大家看看,找找看,到底是哪里出错了怎么不能运行,谢谢大家了


#include <stdio.h>
#include <stdio.h>
#include <conio.h>

#define MAXLENGTH 1000
#define b.len 2   

typedef struct Tdata         
{
    int len;                     
    
    char data[MAXLENGTH];        
}Tdata

int HighMul(Tdata a,Tdata b,Tdata *result)
{
    int i ,j;
    
    for(i=0;i<a.len;i++)
    {
        for(j=0;j<b.len;j++)
        {
            result->data[i+j]+=a.data[i]*b.data[j]%10;

            result->data[i+j+1]+=a.data[i]*b.data[j]/10;    //进位
        }
    }

    for(i=0;i<a.len+b.len;i++)
    {
        if(result->data[i]>=10)                  //两个数相加,值大于10,进位。
        {
            result->data[i+1]+=result->data[i]/10;

            result->data[i]=result->data[i]%10;
        
            i++;
        }
    }

    result->len=i-1;

    return i-1;
}


main()
{
    Tdata a, b, c;

    int i;

    printf("Please input two data:\n");

    scanf("%s%s",&a.data,&b.data);

    for(i=0;i<MAXLENGTH;i++)
    {
        c.data[i]=0;

        a.len = strlen(a.data);      
    
              b.len = strlen(b.data);

        for(i=0;i<a.len;i++)
        {
            a.data[i] -= 48;        //将Ascil码转换为数据.
        }
        
        for(i=0;i<b.len;i++)
        {
            b.data[i] -= 48;
        }
    }

    HighMul(a,b,&c);

    for(i=c.len;i<=0;i--)
    {    
        printf("%d",c.data[i]);
    }

    printf("\n");
        
    getch();
        
    return 1;
}
搜索更多相关主题的帖子: 相乘、结果、找错 
2009-08-27 09:03
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
怎么没有人啊
    本人蛮急的啊       急需完成这道题
2009-08-27 09:36
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
     还是没有人 ,    人到哪里去了啊

       难道都不会吗,我就不相信
2009-08-27 11:30
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
真的没有人啊, 看来只能自己顶自己了!

[ 本帖最后由 Kiu 于 2009-8-27 17:24 编辑 ]
2009-08-27 17:23
苏明亮
Rank: 2
等 级:论坛游民
帖 子:20
专家分:36
注 册:2009-8-26
收藏
得分:11 
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#define MAXLENGTH 1000
#define b.len 2  

typedef struct Tdata      
{
    int len;                  
  
    char data[MAXLENGTH];      
}Tdata
int HighMul(Tdata a,Tdata b,Tdata *result)
{
    int i ,j;
  
    for(i=0;i<a.len;i++)
    {
        for(j=0;j<b.len;j++)
        {
            result->data[i+j]+=a.data[i]*b.data[j]%10;
            result->data[i+j+1]+=a.data[i]*b.data[j]/10;    //进位
        }
    }
    for(i=0;i<a.len+b.len;i++)
    {
        if(result->data[i]>=10)                  //两个数相加,值大于10,进位。
        {
            result->data[i+1]+=result->data[i]/10;
            result->data[i]=result->data[i]%10;
      
            i++;
        }
    }
    result->len=i-1;
    return i-1;
}
main()
{
    Tdata a, b, c;
    int i;
    printf("Please input two data:\n"
    scanf("%s%s",&a.data,&b.data);                      从这儿就开始错了,数组都没弄懂,下面的就不用说了,得重新设计算法,还要注意语法。
    for(i=0;i<MAXLENGTH;i++)
    {
        c.data[i]=0;
        a.len = strlen(a.data);     
  
              b.len = strlen(b.data);
        for(i=0;i<a.len;i++)
        {
            a.data[i] -= 48;        //将Ascil码转换为数据.
        }
      
        for(i=0;i<b.len;i++)
        {
            b.data[i] -= 48;
        }
    }
    HighMul(a,b,&c);
    for(i=c.len;i<=0;i--)
    {  
        printf("%d",c.data[i]);
    }
    printf("\n");
      
    getch();
      
    return 1;
}bccn_1251375913343475746212527
2009-08-27 20:38
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
回复 5楼 苏明亮
是的   上面的确有很多的错误    当时发的太急了   好多的地方没有注意你在帮我看下面的    我改了下     但是还是不能运行也,帮忙看看   #include #include #include #include #define MAXLENGTH 1000 typedef struct Tdata         {    int len;                            char data[MAXLENGTH];        }Tdata;int HighMul(Tdata a,Tdata b,Tdata *result){    int i ,j;        for(i=0;idata[i+j]+=a.data[i]*b.data[j]%10;            result->data[i+j+1]+=a.data[i]*b.data[j]/10;            }    }    for(i=0;idata[i]>=10)                          {            result->data[i+1]+=result->data[i]/10;            result->data[i]=result->data[i]%10;                    i++;        }    }    result->len=i-1;    return i-1;}main(){    Tdata a, b, c;    int i;    printf("Please input two data:\n");    scanf("%s%s",&a.data,&b.data);    for(i=0;i=0;i--)                    {            printf("%d",c.data[i]);    }    printf("\n");            getch();            return 1;}
2009-08-27 21:51
苏明亮
Rank: 2
等 级:论坛游民
帖 子:20
专家分:36
注 册:2009-8-26
收藏
得分:0 
scanf("%s%s",&a.data,&b.data)这句里面是不用 & 符号的
for(i=0;i=0;i--) 这句也应该错了吧。
不能着急,小心心急吃不了热豆腐的!!!
2009-08-27 22:51
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:11 
我在奇怪这程序怎么编出来的,都编这么长了,还有语法错误?
编的时候没一段段检查吗?不会埋头就在记事本上写完再来编译吧。
就像建高楼大厦,地基没打好就盖到最高层。会倒的……
看来基础没打好,动手少呀。

努力—前进—变老—退休—入土
2009-08-27 23:04
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
回复 7楼 苏明亮
记得我当时写的是if(i=c.data[i];i>=0;i--);怎么打出来就变成这样了if(i=0;i=0;i--);真是郁闷啊!!!
2009-08-27 23:37
Kiu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
收藏
得分:0 
回复 8楼 UserYuH
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAXLENGTH 1000
 

typedef struct Tdata         
{
    int len;                    
    
    char data[MAXLENGTH];        
}Tdata;

int HighMul(Tdata a,Tdata b,Tdata *result)
{
    int i ,j;
    
    for(i=0;i<a.len;i++)
    {
        for(j=0;j<b.len;j++)
        {
            result->data[i+j]+=a.data[i]*b.data[j]%10;

            result->data[i+j+1]+=a.data[i]*b.data[j]/10;    //进位
        }
    }

    for(i=0;i<a.len+b.len;i++)
    {
        if(result->data[i]>=10)                  
        {
            result->data[i+1]+=result->data[i]/10;

            result->data[i]=result->data[i]%10;
        }

        while(result->data[i]>=10)
        {
            esult->data[i+1]+=result->data[i]/10;

            result->data[i]=result->data[i]%10;

            i++;
        }
    }

    result->len=i-1;

    return i-1;
}


main()
{
    Tdata a, b, c;

    int i;

    printf("Please input two data:\n");

    scanf("%s%s",&a.data,&b.data);

    for(i=0;i<MAXLENGTH;i++)
    {
        c.data[i]=0;

        a.len = strlen(a.data);      
    
              b.len = strlen(b.data);

        for(i=0;i<a.len;i++)
        {
            a.data[i] -= 48;        //将Ascil码转换为数字
        }
        
        for(i=0;i<b.len;i++)
        {
            b.data[i] -= 48;
        }
    }

    HighMul(a,b,&c);

    for(i=c.len-1;i>=0;i--)
    {    
        printf("%d",c.data[i]);
    }

    printf("\n");
        
    getch();
        
    return 1;
}


[ 本帖最后由 Kiu 于 2009-8-28 00:14 编辑 ]
2009-08-28 00:12
快速回复:那位大虾帮我看看,我这哪里出错了。
数据加载中...
 
   



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

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