鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 6

[已解决]一段计算减法的代码,哪里出错了呢?

[复制链接]
发表于 2019-4-13 16:27:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是计算两个100位以内的数字的减法,提交后系统说有错误,请问哪里错了呢?
#include<stdio.h>
#include<string.h>

int t[110];

void fun(char a[],int n,char b[],int m)
{
        int i,j;
        n--;m--;
        for(;n>=0;n--,m--)
        {
                if(m<0)
                {
                        t[n]=a[n]-'0';
                }
                else if(a[n]>=b[m])
                        t[n]=a[n]-b[m];
                else
                {
                        t[n]=10+a[n]-b[m];
                        a[n-1]--;
                }       
        }
}

void pr(int i,int n)
{
       
        for(;i<n;i++)
        {
                printf("%d",t[i]);
        }
}

int main()
{
        char a[110],b[110];
       
        int i,j,k,n,m,s;
        scanf("%s",&a);
        scanf("%s",&b);
        n=strlen(a);
        m=strlen(b);
        if(n>m)
        {
                fun(a,n,b,m);
                for(i=0;i<=n&&t[i]==0;i++);
                pr(i,n);
        }
        else if(n<m)
        {
                fun(b,m,a,n);
                for(i=0;i<=m&&t[i]==0;i++);
                printf("-");
                pr(i,m);
        }
        else
        {
                for(i=0;i<n;i++)
                {
                        s=1;
                        if(a[i]!=b[i])
                        {
                                s=0;
                                break;
                        }
                }
                if(s)
                {
                        printf("0");
                        return 0;
                }
                else if(a[i]>b[i])
                {
                        fun(a,n,b,m);
                        for(i=0;i<=n&&t[i]==0;i++);
                        pr(i,n);
                }
                else
                {
                        fun(b,m,a,n);
                        for(i=0;i<=m&&t[i]==0;i++);
                        printf("-");
                        pr(i,m);       
                }
        }
}
最佳答案
2019-4-13 20:54:52
客天恺_hqkcq 发表于 2019-4-13 20:08
运行过,我试的数据没有出错,求大佬指点

你试试100-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-13 16:36:31 | 显示全部楼层
     楼主想要得到什么,通过样例来具体说明,输入是什么,预期的输出应该是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-13 17:41:56 | 显示全部楼层
jackz007 发表于 2019-4-13 16:36
楼主想要得到什么,通过样例来具体说明,输入是什么,预期的输出应该是什么?

题目描述
计算A-B
其中A,B为正整数,无前导零(不保证A一定大于等于B。)
输入
第一行为数A,保证A的位数小于等于100。
第二行为数B,保证B的位数小于等于100。
输出
输出A-B。
输入样例
100000000000000000000
99999999999999999999
输出样例
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 19:53:52 | 显示全部楼层
所以你自己运行过么,我觉得自己运行一遍应该能很明显地看出错误-
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-13 20:08:16 | 显示全部楼层
Croper 发表于 2019-4-13 19:53
所以你自己运行过么,我觉得自己运行一遍应该能很明显地看出错误-

运行过,我试的数据没有出错,求大佬指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 20:54:52 | 显示全部楼层    本楼为最佳答案   
客天恺_hqkcq 发表于 2019-4-13 20:08
运行过,我试的数据没有出错,求大佬指点

你试试100-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-13 21:28:16 | 显示全部楼层

谢谢,改了之后就过了,大佬有没有简单的方法,感觉我的方法好麻烦。还有能看下隔壁那个求N元方程的题吗,那个我是一点都不会。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表