1. 写一个程序,语言ASP.NET(C#),打印出100的阶乘(即1*2*3*…*100)。 
2. 写一个程序,语言ASP.NET(C#),能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
3. 编程实现求出若干个整数之和为500的连续整数(如98,99,100,101,102),所有组合。
4. 在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序。
5. 谈谈你对面向对象的认识(限150字)。
6. 谈谈你对多层架构的认识(限150字)。

解决方案 »

  1.   

    1.using System;
    using System.Collections.Generic;
    using System.Text;namespace asdfff
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<int> a = new List<int>();//阶乘起点
                a.Add(1);//定义了100!起点的            List<int> c = new List<int>();//阶乘次数
               
                int gs = 0;//表示是否有大于10,如有就去了个位取出来
                List<int> b = new List<int>();//用于存储中间生成的结果
                List<int> sums = new List<int>();//用存储有两个位数时存储单个位数的结果
               
               
                for (int i = 1; i <= 99; i++)
                {
                    c.Clear();
                    c.Add(i % 10);//把阶乘(如100分成一个0,0,1的数组)
                    if (i >= 10)
                    {
                        c.Add(i / 10 % 10);
                    }
                    for (int j = 0; j < c.Count; j++)
                    {
                        if (c[j] != 0)//不是0时计算
                        {
                            for (int k = 0; k < a.Count; k++)
                            {
                                int sum = 0;
                                sum = c[j] * a[k];//用阶乘的值与目标值相乘
                                if (gs != 0)//结果如大于10就要取出个位存到b集合中 并把去了个位上的数后把值存在进位变量中
                                {
                                    sum = sum + gs;
                                }
                                if (sum >= 10)
                                {
                                    int a1 = sum / 10 % 10;
                                    int a2 = sum / 100 % 10;
                                    gs = (a2 * 10) + a1;
                                }
                                else
                                {
                                    gs = 0;
                                }
                                b.Add(sum % 10);                        }
                            if (gs != 0)//如是最大的时就把进位的值也加到集合中去
                            {
                                if (gs < 10)
                                {
                                    b.Add(gs);
                                }
                                else
                                {
                                    b.Add(gs % 10);
                                    b.Add(gs / 10 % 10);
                                }
                                gs = 0;
                            }                    }
                        else//如阶乘值是0就把集合定义为单个值(0值)的集合
                        {
                            b.Add(0);
                        }
                       
                        if (c.Count ==1)//当阶乘值不大于10(是单位数时)
                        {
                            a.Clear();//直接把数组做为下次阶乘的对象
                            for (int d = 0; d < b.Count; d++)
                            {
                                a.Add(b[d]);
                            }
                            b.Clear();
                        }
                        if (c.Count > 1)//阶乘大于10
                        {
                            if (sums.Count > 0)//是否为以有存在个位结果
                            {
                                a.Clear();
                                a.Add(b[0]);//增加最后的个位
                                int o = 0;//临时存储用于是否有进位数
                                int ss=0;//计算结果
                                for (int d = 0; d < b.Count; d++)
                                {
                                    if (d < sums.Count-1)
                                    {
                                        if (sums.Count > 1 )
                                        {
                                            ss = sums[d + j] + b[d]+o;//加上进位数
                                            o = 0;
                                            if (ss >= 10)
                                            {
                                                o = 1;
                                            }
                                            else
                                            {
                                                o = 0;
                                            }                                        a.Add(ss%10);
                                        }
                                        else
                                        {
                                            a.Add(sums[d]+o);
                                            o = 0;
                                        }
                                    }
                                    else
                                    {
                                        a.Add(b[d]+o);
                                        o = 0;
                                    }
                                }
                                if (o != 0)//如果进位后没有就要加上进位的值
                                {
                                    a.Add(o);
                                }
                                sums.Clear();
                                b.Clear();
                            }
                            else//第一次进行个位计算时把值增加到位结果集合中
                            {
                                sums.Clear();
                                for (int d = 0; d < b.Count; d++)
                                {
                                    sums.Add(b[d]);
                                }
                                b.Clear();
                            }
                           
                        }                 }
                   
                }
                for (int s = a.Count-1; s >=0; s--)
                {
                    Console.Write(a[s]);
                }
            }
        }
    }
      

  2.   

    2. 写一个程序,语言ASP.NET(C#),能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
    ------------
    这个以前用powerbuilder做过。这个问题看似很容易,实际上,要小心“0”的变换,比如10.05,应该转成壹拾圆零五分,这个一不小心就容易弄错。
    5. 谈谈你对面向对象的认识(限150字)。
    ----------
    这个我好像还说不到150字。面向对象的基本思想似乎是定义一些具有某些功能(方法)的相对独立的数据结构,通过事件触发(有点类似中断调用)的方式互相通信,调用,来实现程序功能。主要目的是提高可维护性,可重用性等。6. 谈谈你对多层架构的认识(限150字)。
    -----------
    这个也说不深刻。大致似乎是将软件系统分成逻辑上相对独立的几组模块,各自负责一定的功能,这样有利于提高程序的可维护性,提高性能,安全性等。基本的多层架构是用户界面层,业务逻辑处理层和与数据库打教道的数据层。缺点是增加了程序的复杂性,调试起来比较麻烦。