一段计算减法的代码,哪里出错了呢?
这是计算两个100位以内的数字的减法,提交后系统说有错误,请问哪里错了呢?#include<stdio.h>
#include<string.h>
int t;
void fun(char a[],int n,char b[],int m)
{
int i,j;
n--;m--;
for(;n>=0;n--,m--)
{
if(m<0)
{
t=a-'0';
}
else if(a>=b)
t=a-b;
else
{
t=10+a-b;
a--;
}
}
}
void pr(int i,int n)
{
for(;i<n;i++)
{
printf("%d",t);
}
}
int main()
{
char a,b;
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==0;i++);
pr(i,n);
}
else if(n<m)
{
fun(b,m,a,n);
for(i=0;i<=m&&t==0;i++);
printf("-");
pr(i,m);
}
else
{
for(i=0;i<n;i++)
{
s=1;
if(a!=b)
{
s=0;
break;
}
}
if(s)
{
printf("0");
return 0;
}
else if(a>b)
{
fun(a,n,b,m);
for(i=0;i<=n&&t==0;i++);
pr(i,n);
}
else
{
fun(b,m,a,n);
for(i=0;i<=m&&t==0;i++);
printf("-");
pr(i,m);
}
}
} 楼主想要得到什么,通过样例来具体说明,输入是什么,预期的输出应该是什么? jackz007 发表于 2019-4-13 16:36
楼主想要得到什么,通过样例来具体说明,输入是什么,预期的输出应该是什么?
题目描述
计算A-B
其中A,B为正整数,无前导零(不保证A一定大于等于B。)
输入
第一行为数A,保证A的位数小于等于100。
第二行为数B,保证B的位数小于等于100。
输出
输出A-B。
输入样例
100000000000000000000
99999999999999999999
输出样例
1
所以你自己运行过么,我觉得自己运行一遍应该能很明显地看出错误- Croper 发表于 2019-4-13 19:53
所以你自己运行过么,我觉得自己运行一遍应该能很明显地看出错误-
运行过,我试的数据没有出错,求大佬指点 客天恺_hqkcq 发表于 2019-4-13 20:08
运行过,我试的数据没有出错,求大佬指点
你试试100-1 Croper 发表于 2019-4-13 20:54
你试试100-1
谢谢,改了之后就过了,大佬有没有简单的方法,感觉我的方法好麻烦。还有能看下隔壁那个求N元方程的题吗,那个我是一点都不会。谢谢了
页:
[1]