• 某公司面试试题答案


    小写转大写金额存储过程[SQL SERVER]

    一、写一个程序,语言不限,打印出100的阶乘(即1*2*3*…*100)。

    答案:

            /// <summary>
            /// 定义每个数组存储的最大值
            /// </summary>
            const int UNIT=100;
            /// <summary>
            /// 定义数组的最大位置
            /// </summary>
            static int count=1;

            /// <summary>
            /// 阶乘方法
            /// </summary>
            /// <param name="n">输入的阶乘数</param>
            public static void Factorial(int n)
            {
                ///分配临时空间
                int[] array=new int[100];
                ///初始化数组0位的值
                array[0]=1;
                count=1;
                while(n>0)
                {
                    Dohandle(array,n);
                    n--;
                }
                Console.WriteLine("Count="+count);
                ///打印数据
                Console.Write("结果=");
                for(int i=count;i>-1;i--)
                {
                    Console.Write(array[i].ToString("00"));
                }
                //结果
    =933262154439441526816992388562667004907159682643816214685929638952175999932
    2991560894146397615651828625369792082722375825118521091686400000000000000000
    0000000
            }
            /// <summary>
            /// 处理阶乘
            /// </summary>
            /// <param name="array">数组</param>
            /// <param name="n">要乘的数</param>
            private static void Dohandle(int[] array,int n)
            {
                for(int i=count;i>-1;i--)
                {
                    array[i]*=n;
                    ///如果超出最大存储的值
                    if(array[i]>UNIT)
                    {
                        //进位
                        array[i+1]+=array[i]/UNIT;
                        array[i]=array[i]%UNIT;
                        ///count记住数组最大位置
                        if(i>=count)
                        {
                            count=i+1;
                        }
                    }
                }
            }

    二、写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。

    答案:

    /// <summary>
            /// 转换money
            /// </summary>
            /// <param name="money">输入money</param>
            public static void TransformMoney(string money)
            {
                ///定义大写数组
                string[] odxc={"分","角","圆","拾","佰","仟","万","拾","佰","仟
    ","亿","拾","佰","仟","万","拾","佰","仟","亿"};
                string[] odxs={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖
    "};
                string result="";
                //舍去小数点两位
                Decimal temp=Convert.ToDecimal(money);
                money=temp.ToString(".00");
                //除去小数点
                money=money.Replace(".","");
                int len=money.Length;
                if(len>odxc.Length)
                {
                    Console.WriteLine("error:超过最大金额");
                    return;
                }
                //转换大写
                for(int i=0;i<len;i++)
                {
                    int v=Convert.ToInt32(money.Substring(i,1));
                    result+=odxs[v]+odxc[len-i-1];
                }
                Console.WriteLine(result);
                //if(dot+2)
            }

    三、在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序。

    答案:

    Select CourseID, Achievement, StudentID  from StudentAchievement a

    where StudentID in(select top 2 b.StudentID from StudentAchievement b

           where b.CourseID=a.CourseID order by Achievement desc)

    order by courseid, Achievement desc

    四、编程实现求出若干个整数之和为500的连续整数(如98,99,100,101,102),所有组合。

    public static void NumberSum(int num)
            {
                for(int i=1;i<num;i++)
                {
                    int result=0;
                    int start=i;
                    while(result<num)
                    {
                        result+=start;
                        start++;
                    }
                    ///判断结果等于num
                    if(result==num)
                    {
                        while(start>=i)
                        {
                            Console.Write(start +" ");
                            start--;
                        }
                        Console.WriteLine();
                    }
                }
            }
            //结果:33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14
    13 12 11 10 9 8
            //      67 66 65 64 63 62 61 60 59
            //      103 102 101 100 99 98
     }

    五、谈谈你对多层架构的认识(限150字)。
    N层架构是将应用程序分成多个独立的逻辑部分,利用分层的方式处理复杂的系统。层
    次系统要求上层可使用下层的功能,而下层是不能使用上层的功能。主要优点:透明和
    封装;高内聚、低耦合;易于扩展、维护和重用;人员易分工。缺点:效率低;开发难
    度大。
    通常做法是三层:Web表述、业务、数据访问,扩展:Web、业务外观、业务规则、数据
    访问、实体层、组件等层次。

    六、谈谈你对面向对象的认识(限150字)。
         对象是建立面向对象程序所依赖的基本单元。所谓对象就是一种代码的实例,这
    种代码执行特定的功能,具有自包含或者封装的性质。这种封装代码通常叫做类、对象
    类 。优点是:对象可重用性、可继承。每个对象中可有下列成员:构造、析构、方
    法、属性、变量、事件、委托、索引。
        面向对象基础主要有 抽象、封装、多态、继承 、 接口 这些概念

    愿一路奔跑不退缩,到目前一直从事.Net的B/S,C/S企业应用研发
  • 相关阅读:
    子序列自动机学习笔记
    P4709 信息传递 解题报告
    斯坦纳树学习笔记
    NOIP2021 游记
    P5206 [WC2019]数树 解题报告
    CF1205D Almost All 解题报告
    设计模式原来如此策略模式(Strategy Pattern)
    再次站起,继续开博
    Java原来如此反射机制
    Java原来如此随机数
  • 原文地址:https://www.cnblogs.com/syveen/p/185904.html
Copyright © 2020-2023  润新知