急求 这段代码哪里错了?

[复制链接]
查看11 | 回复2 | 2021-1-27 05:27:05 | 显示全部楼层 |阅读模式
#include
#include
#include
#defineMAXSIZE200
//用来计算bigint中第一个不为零的数字(最高位)的位置(下标)
intmark_bigint(intbigint[])
{
intmark;
for(mark=MAXSIZE-1;mark>=0;mark--)
{
if(bigint[mark]==0)break;
}
returnmark;
}
intmain(void)
{
intbigint1[MAXSIZE]={0,0,9,8,7,6,5,4,3,2,1};
//用来存放大整数1的整型数组,这个大整数值为:12345678900
intbigint2[MAXSIZE]={6,7,1,2,9,8,9,6,8,2,7,8,9,1,2};
//用来存放大整数2的整型数组,这个大整数值为:219872869892176
intbigint3[MAXSIZE+1];
//用来存放大整数运算结果的整型数组
intk,i,mark1,mark2,mark3,mark;
mark1=mark_bigint(bigint1);
//计算bigint1中第一个不为零的数字(最高位)所在的下标
mark2=mark_bigint(bigint2);
//计算bigint2中第一个不为零的数字(最高位)所在的下标
mark=mark1>mark2?mark1:mark2;
//取位数长的那个大整数的最高位的下标
k=0;
while(k10)//进位处理
{
bigint3[k+1]++;
bigint3[k]=bigint3[k]-10;
}
k++;
}
mark3=mark_bigint(bigint3);
//计算bigint3中第一个不为零的数字(最高位)所在的下标
printf("相加结果为:\n");
for(i=MAXSIZE-1;i>=0;i--)//输出相加结果
printf("%d",bigint3);
putchar('\n');
return0;
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
都没说是什么错...
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
for(mark=MAXSIZE-1;mark>=0;mark--)
{
if(bigint[mark]==0)break;
}
楼主的问题出在这里,看一下,MAXSIZE是200,而传进来的bigint有200个吗?
还有bigint传进来的内容是初始化的bigint1,bigint2,bigint3,第200个元素是几,楼主需要了解一下,不然这个问题不好解决。
intbigint1[MAXSIZE]={0,0,9,8,7,6,5,4,3,2,1};
这是初始化,前几个元素赋值了?答案是11个,那么第12个到MAXSIZE后面的数据初始化为几?看样子是没有初始化,其实编译器都给初始化了,为0.
既然这么理解了,那么上面的自定义函数里的处理是不是就有问题了?
不知道这么解释,楼主是否能够明白~
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行