数据结构c 语言1000行代码,数据结构本学期实验。1000行代码。如图。求帮助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这方面我做过以前,因为long类型最多也就18位好像,长整数肯定是超过18位吧,不然直接做四则运算就行了。超过long类型的数只能用string来存了,我的思路是:

1:先用字符串存下两个待运算的整数;

2:比较两个字符串,把较短的那个数前面用0补齐到和长的那个一样位数;

3:然后倒着把两个数的最后一位取出来,做四则运算,如果超过10的就取后一位,并把前一位存起来,记得进位就行了

4:把上面得到的数倒着拼接起来就成了。

具体代码如下:

string s1 = Console.ReadLine();

string s2 = Console.ReadLine();

//取出较短的那个数

string shortNumber = s1.Length > s2.Length ? s2 : s1;

//取出较长的那个数

string longNumber = s1.Length > s2.Length ? s1 : s2;

//将较短的那个数用0补齐到和长的一样长

string s4 = "0";

for (int i = 1; i < Math.Abs(s1.Length - s2.Length); i++)

s4 += "0";

shortNumber = s4 + shortNumber;

int carryNumber = 0;//声明进位数

string resultNumber = "";//声明结果数

for (int i = longNumber.Length - 1; i >= 0; i--)

{

//取出数一的最后一位,并转成整形用来运算

int l = Convert.ToInt32(longNumber[i]) - 48;

//取出数二的最后一位,并转成整形用来运算

int s = Convert.ToInt32(shortNumber[i]) - 48;

int t = l + s;//将末尾两位相加

//计算当前位相加的得数,并加上前一位的进位数

int curNumber = t + carryNumber;

//取出进位后剩下的余数作为结果存起来

resultNumber += curNumber > 9 ? curNumber % 10 : curNumber;

//取出当前位相加的进位数,如果没有则为0

carryNumber = curNumber > 9 ? curNumber / 10 : 0;

}

//将上面的结果倒着输出来就是正确结果了

for (int i = 0; i < resultNumber.Length; i++)

Console.Write(resultNumber[resultNumber.Length - 1 - i]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值