数据结构 长数的代数运算

学习 时间:2026-03-31 02:34:48 阅读:5389
数据结构 长数的代数运算(1) 设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算.(2) 课程设计目的能够应用线性数据结构解决实际问题.(3) 基本要求① 长整数长度在一百位以上.② 实现两长整数在同余代数下的加、减、乘、除操作.即实现算法来求解a+b mod n,a-b mod n,a´b mod n,a¸b mod n.③ 输入输出均在文件中.④ 分析算法的时空复杂性.(4) 实现提示需将长整数的加法转化为多个一般整数加法的组合.完成所有的功能用C语言数据结构完成,如果正确可以提高悬赏 300分

最佳回答

狂野的小虾米

有魅力的灰狼

2026-03-31 02:34:48

参考资料:Dim a(),b(),c() As Byte '定义输入和输出数组Sub Main()ts = "整数乘法"xx = InputBox("请输入被乘数:",ts)If xx = "" Then Endyy = InputBox("请输入乘数",ts)If yy = "" Then Enda1 = Len(xx) '取xx的位数b1 = Len(yy) '取yy的位数c1 = a1 + b1 '确定结果的最大位数ReDim a(a1),b(b1),c(c1) '重定义数组For i = 1 To aa(i) = Mid(xx,a1 - i + 1,1) '给数组a的每一位赋值If Not IsNumeric(a(i)) Then '检查输入的合法性MsgBox "被乘数输入错误",,tsEndEnd IfNext iFor i = 1 To b1b(i) = Mid(yy,b1 - i + 1,1) '给数组b的每一位赋值If Not IsNumeric(b(i)) Then '检查输入的合法性MsgBox "乘数输入错误",,tsEndEnd IfNext iFor i = 1 To c1 '结果数组c初始化c(i) = 0Next iFor i = 1 To b1 '取b中的每一位For j = 1 To a1 '取a中的每一位c(j + i - 1) = c(j + i - 1) + b(i) * a(j) '相乘结果累加到c中的相应位zz = c(j + i - 1)k = 0Do While zz >= 10 'c中的每一位进位检查c(j + i + k - 1) = zz Mod 10 '本位处理c(j + i + k) = c(j + i + k) + zz \ 10 '进位处理zz = c(j + i + k)k = k + 1LoopNext jNext izz = ""For k = c1 To 1 Step -1If c(k) 0 Then Exit For '去掉结果中的前导0Next kk = IIf(k < 1,1,k)For i = k To 1 Step -1zz = zz + Trim(Str(c(i)))Next izz = xx + " X " + yy + " = " + zzts = "计算结果:" + Str(a1) + "位 X " + Str(b1) + "位 结果为" + Str(k) + "位"MsgBox zz,,ts '算式和结果输出EndEnd Su

最新回答共有2条回答

  • 幽默的鼠标
    回复
    2026-03-31 02:34:48

    参考资料:Dim a(),b(),c() As Byte '定义输入和输出数组Sub Main()ts = "整数乘法"xx = InputBox("请输入被乘数:",ts)If xx = "" Then Endyy = InputBox("请输入乘数",ts)If yy = "" Then Enda1 = Len(xx) '取xx的位数b1 = Len(yy) '取yy的位数c1 = a1 + b1 '确定结果的最大位数ReDim a(a1),b(b1),c(c1) '重定义数组For i = 1 To aa(i) = Mid(xx,a1 - i + 1,1) '给数组a的每一位赋值If Not IsNumeric(a(i)) Then '检查输入的合法性MsgBox "被乘数输入错误",,tsEndEnd IfNext iFor i = 1 To b1b(i) = Mid(yy,b1 - i + 1,1) '给数组b的每一位赋值If Not IsNumeric(b(i)) Then '检查输入的合法性MsgBox "乘数输入错误",,tsEndEnd IfNext iFor i = 1 To c1 '结果数组c初始化c(i) = 0Next iFor i = 1 To b1 '取b中的每一位For j = 1 To a1 '取a中的每一位c(j + i - 1) = c(j + i - 1) + b(i) * a(j) '相乘结果累加到c中的相应位zz = c(j + i - 1)k = 0Do While zz >= 10 'c中的每一位进位检查c(j + i + k - 1) = zz Mod 10 '本位处理c(j + i + k) = c(j + i + k) + zz \ 10 '进位处理zz = c(j + i + k)k = k + 1LoopNext jNext izz = ""For k = c1 To 1 Step -1If c(k) 0 Then Exit For '去掉结果中的前导0Next kk = IIf(k < 1,1,k)For i = k To 1 Step -1zz = zz + Trim(Str(c(i)))Next izz = xx + " X " + yy + " = " + zzts = "计算结果:" + Str(a1) + "位 X " + Str(b1) + "位 结果为" + Str(k) + "位"MsgBox zz,,ts '算式和结果输出EndEnd Su

上一篇 作文《一件事情》700字写什么

下一篇 1.判断题:锉齿的粗细规格是按锉刀齿数的齿距大小来表示的.(这种说法对不对)