bxwjyumscx 2017-04-19 06:28 采纳率: 0%
浏览 1352
已结题

C#小白一个,两个数相乘,不知道哪里出错了,求大手指点

namespace multiplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入较短的正整数:"); //将被乘数按位存入数组arr1
string str1 = Console.ReadLine();
int len1 = str1.Length;
int[] arr1 = new int[len1];
int i = 0;
foreach(char a in str1)
{
if (!char.IsNumber(a))
return;
arr1[i] = Convert.ToInt32(a - 48);
i++;
}
Console.WriteLine("输入较长的正整数:"); //将乘数按位存入数组arr2
string str2 = Console.ReadLine();
int len2 = str2.Length;
int[] arr2 = new int[len2];
i = 0;
foreach(char b in str2)
{
if (!char.IsNumber(b))
return;
arr2[i] = Convert.ToInt32(b - 48);
i++;
}
int i1,i2,num = 0,t=0; //定义数组长度分别为i1,i2,每一位乘数乘完被乘数后的值为num
for(i1=0;i1 {
int[] result = new int[len2 + 1]; //数组result放每一位乘数乘完被乘数后的值,长度为较长的数长度len1+1
int s = 0; //进位为s
for (i2 = len2 - 1; i2 >= 0; i2--)
{
if (arr1[i1] * arr2[i2] + s > 9) //若相乘>9则进位
{
result[i2+1] = (arr1[i1] * arr2[i2] + s) % 10;
s = (arr1[i1] * arr2[i2] + s) /10;
}
else //否则无进位
{
result[i2+1] = arr1[i1] * arr2[i2] + s;
s = 0;
}
}
foreach (int a in result) //将数组result中内容转换为num
{
num = num*10 + a;
}
t = t * 10 + num;
}
Console.WriteLine("{0}", t);
Console.ReadKey();
}
}
}

  • 写回答

1条回答 默认 最新

  • ! 不再维护 2017-04-19 06:52
    关注

    问题没有描述完整吧,,,

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码