[可视化编程]计算1!+2!+……+n! 的和

[可视化编程]计算1!+2!+……+n! 的和

输入正整数n(int类型),输出1!+2!+……+n!的值。用try {}catch{}语句捕获整型溢出。

  • 运行示例:

[可视化编程]计算1!+2!+……+n! 的和_第1张图片

[可视化编程]计算1!+2!+……+n! 的和_第2张图片
[可视化编程]计算1!+2!+……+n! 的和_第3张图片

  • 源码 :
using System;

namespace factorialSum
{
     
    class factorialSum
    {
     
        static void Main(string[] args)
        {
     
            int number, result = 0;   //result表示最终结果
            int flag = 1, item = 1;    //用flag作为标志控制阶乘和结果是否需要输出,item表示第i项的阶乘值

            Console.Write("Please input a number:");    //输入提示
            string s = Console.ReadLine();
            number = Int32.Parse(s);
            
            //输入的数为0,则0!=1
            if (number == 0)
            {
     
                Console.WriteLine("\n0!=1");
            }  

            //当输入的数为负值时,循环输入,直至输入正整数或0
            while (number < 0)
            {
     
                Console.Write("您输入的数是负数!!!\n请重新输入:");
                s = Console.ReadLine();
                number = Int32.Parse(s);
                if (number == 0)   //0!为1
                {
     
                    Console.WriteLine("\n0!=1");
                }
            }

            try
            {
     
            for (int i = 1; i <= number; i++)
            {
        
                    item *= i;    //计算第i项的阶乘值
                    result =checked(result+ item);    //累加item,得1~number的阶乘和
            }
            }catch(OverflowException e)
            {
         //捕获计算溢出异常
                flag = 0;    //修改标志变量flag的值,溢出时不输出最终阶乘和即result的值
                Console.WriteLine("\nArithmetic operation resulted in an overflow!\n");    // 打印异常信息
            }

            if (flag != 0 && number != 0)  //不溢出时输出result的值
            {
     
                Console.WriteLine("\nThe sum from 1! to " + number + "! = " + result);  
            }
        }
    }
}

你可能感兴趣的:(#,可视化编程,c#,可视化编程,阶乘和,捕获异常,WHUT课程实验)