| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1216 人关注过本帖
标题:高精度除法
只看楼主 加入收藏
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
收藏
已结贴  问题点数:20 回复次数:3 
高精度除法
我写了代码,带余数,但是除下来结果不正确,余数是正确的,但是结果不正确:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print(int sum[],int length)
{
    int i;
    for(i=length-1;i>=0;i--)
    printf("%d",sum[i]);
    printf("\n");
}
int division(int a[],long b,int sum[],int a_length)
{
    long i,temp=0,sum_length;
    for(i=a_length-1;i>=0;i--)
    {
    temp=temp*10+a[i];
    sum[i]=temp/b;
    temp=temp%b;
    }
    sum_length=a_length;
    while(sum_length>0&&sum[sum_length]==0) sum_length--;
    print(sum,sum_length);
    return temp;
}
int main()
{
    char a[1000];
    int length=0,i;
    long B,mod;
    int sum[1000]={0},A[1000]={0};
    gets(a);
    length=strlen(a);
    for(i=0;i<length;i++)
    A[i]=a[i]-48;
    scanf("%ld",&B);
    mod=division(A,B,sum,length);
    printf("%ld\n",mod);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: long 
2011-02-09 16:52
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:5 
一是将它转化为十进制转二进制,再转十进制,这个非要用到字符串处理不可。

小代码,大智慧
2011-02-09 17:00
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
一是,试商(乘法)+移位+比较+减法+分支

小代码,大智慧
2011-02-09 17:08
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:15 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print(int sum[],int res_length,int tot_length)
{
    int i;
    for(i=res_length;i<tot_length;i++)
        printf("%d",sum[i]);
    printf("\n");
}
int division(int a[],long b,int sum[],int a_length)
{
    long i,temp=0,sum_length;
    for(i=0;i<a_length;i++)       //此处有修改
    {
        temp=temp*10+a[i];
        sum[i]=temp/b;
        temp=temp%b;
    }
    sum_length=0;
    while(sum_length<a_length&&sum[sum_length]==0) sum_length++;    //此处有修改
    print(sum,sum_length,a_length);     //此处有修改
    return temp;
}
int main()
{
    char a[1000];
    int length=0,i;
    long B,mod;
    int sum[1000]={0},A[1000]={0};
    gets(a);
    length=strlen(a);
    for(i=0;i<length;i++)
        A[i]=a[i]-48;
    scanf("%ld",&B);
    mod=division(A,B,sum,length);
    printf("%ld\n",mod);
    return 0;
}
2011-02-09 17:57
快速回复:高精度除法
数据加载中...
 
   



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

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