编程计算a+aa+aaa+...+aa...a(n个a)的值,n和a由键盘输入。
n的值为0<n<19,a的值为0<a<10
我的这些代码在计算时怎么会出现这种情况,需要怎么解决
谢谢
因为累加的值超过int类型的最大值2147483647了,这个时候变量c就不能存储超过这个数量的值,建议使用long声明变量c才足够存储累加的值
估计是溢出了。可以在循环里打印c的值
应该是溢出了,int 类型能存储的最大值是正20多亿到负20多亿,超过这个数就会溢出,溢出的部分就会反复在这个区间叠加,比如你存了一个25亿的值,比int多了4亿左右,那他一般就会显示负4亿。用long替代int就可以了
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
long n = long.Parse(Console.ReadLine());
long a = long.Parse(Console.ReadLine());
long c = 0, b = 0;
for (int i = 0; i < n; i++)
{
c = c * 10 + a;
b += c;
}
Console.WriteLine(b);
Console.ReadLine();
}
}
}
C#中int由两个字节组成,即由32个二进制数组成,由于最高位是用于标示正负数,所以实际上int所能表示的最大数为2^32-1,long的最大数为2^63-1,这里你的int超出了它的限制了,应该用long,你也可以用int.MaxValue long.MaxValue去查看类型的最大值。