末大作业 用C#编写一个程序,计算a+b的值,其中a是一个有15-25位数的整数,b也是一个有15-25位数的整数。 要求: (1)a和b由用户自由输入,要求对用户输入作验证性判断,保证程序健壮性; (2)要对用户有友好提示性文字。
时间: 2024-02-27 17:55:15 浏览: 64
以下是一个简单的 C# 程序,用于计算输入的两个大整数 a 和 b 的和:
```csharp
using System;
namespace BigNumbersSum
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个整数 a(15-25位):");
string aStr = Console.ReadLine();
// 验证 a 是否为一个 15-25 位的整数
if (!IsValidNumber(aStr, 15, 25))
{
Console.WriteLine("请输入一个 15-25 位的整数!");
return;
}
Console.WriteLine("请输入第二个整数 b(15-25位):");
string bStr = Console.ReadLine();
// 验证 b 是否为一个 15-25 位的整数
if (!IsValidNumber(bStr, 15, 25))
{
Console.WriteLine("请输入一个 15-25 位的整数!");
return;
}
// 将 a 和 b 转换成对应的整数数组
int[] a = ToIntArray(aStr);
int[] b = ToIntArray(bStr);
// 对 a 和 b 进行逐位相加,得到结果数组 c
int[] c = new int[Math.Max(a.Length, b.Length) + 1];
int carry = 0;
int i = a.Length - 1;
int j = b.Length - 1;
int k = c.Length - 1;
while (i >= 0 || j >= 0)
{
int x = i >= 0 ? a[i--] : 0;
int y = j >= 0 ? b[j--] : 0;
int sum = x + y + carry;
c[k--] = sum % 10;
carry = sum / 10;
}
if (carry > 0)
{
c[k--] = carry;
}
// 将结果数组 c 转换成对应的字符串,并输出结果
string result = ToString(c);
Console.WriteLine("a + b = " + result);
}
// 判断一个字符串是否为一个 n 位到 m 位的整数
static bool IsValidNumber(string s, int n, int m)
{
if (s.Length < n || s.Length > m)
{
return false;
}
foreach (char c in s)
{
if (!char.IsDigit(c))
{
return false;
}
}
return true;
}
// 将一个字符串转换成一个整数数组
static int[] ToIntArray(string s)
{
int[] a = new int[s.Length];
for (int i = 0; i < s.Length; i++)
{
a[i] = s[s.Length - 1 - i] - '0';
}
return a;
}
// 将一个整数数组转换成一个字符串
static string ToString(int[] a)
{
int i = a.Length - 1;
while (i > 0 && a[i] == 0)
{
i--;
}
char[] s = new char[i + 1];
for (int j = 0; j <= i; j++)
{
s[j] = (char)(a[i - j] + '0');
}
return new string(s);
}
}
}
```
该程序首先提示用户输入两个整数 a 和 b,然后对输入的数字进行验证,如果不符合要求则输出错误信息并退出程序。然后将输入的字符串转换成对应的整数数组,逐位相加得到结果数组 c,最后将结果数组转换成字符串并输出。
阅读全文