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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。