程序设计题目:
1,给出的数是矩阵,行列转换
100    200    300
400    500    600
700    800    900
写一个函数,要出输出
100    400    700
200    500    800
300    600    9002、写一个函数:给一个数字,要求求出这个数中的各位相乘时候的结果,例如:225的结果为20;202的结果为0。3、写一个程序:提供两个正整数,要求第二个正整数的个位和十位调换,放前面;第一个数的个位和十位调换放后面。例如:12和45,结果为542。4、下表为用户登陆流水表,表结构如下。
学生编号      登陆时间写一条SQL语句,查询出每个用户的最后登陆时间。这几道提不会,感觉第一题应该是用二维数组就可以搞定了,但是由于不是很熟,所以没发手写出来。2、3提都不知道考的什么。求答案!面试题h程序设计SQL

解决方案 »

  1.   

    随便写了一下,没有写成函数,可以自己:
    //第一题
    int[,] values = new int[,] { { 100, 200, 300 }, { 400, 500, 600 }, { 700, 800, 900 } };
    for (int j = 0; j < values.GetLength(1); j++)
    {
    for (int i = 0; i < values.GetLength(0); i++)
    Response.Write(values[i, j] + " ");
    Response.Write("<br/>");
    } //第二题
    int value = 225;
    int sum = 1;
    while (value > 0)
    {
    sum *= value % 10;
    value /= 10;
    }
    Response.Write(sum); //第三题
    int a = 12, b = 45;
    string s = new string(b.ToString().ToCharArray().Reverse().ToArray()) + new string(a.ToString().ToCharArray().Reverse().ToArray());
    int r = int.Parse(s);
    Response.Write(r); //第四题
    string sqlStr = "select 学生编号,max(登陆时间) as 最后登录时间 from 登陆流水 group by 学生编号";
      

  2.   

    1
    a =new int[2,2]写入数据 WriteLine(a【0,0】,a[1,0],a[2,0])
    后面一样
    2
    xxx=ReadLine(aaa)。toChararray()
    for(int,i《xxx,i)
    convert。toint(xxx【i】)乘以后面的不写了,键盘要完蛋,sql 就是分组查询,因该明白了吧
      

  3.   

    第三题其实可这么写,我觉得更符合要求:
    //第三题
    int a = 12, b = 45;
    int sum = 0;
    while (b > 0)
    {
    sum = sum * 10 + b % 10;
    b /= 10;
    }
    while (a > 0)
    {
    sum = sum * 10 + a % 10;
    a /= 10;
    }
    Response.Write(sum);
      

  4.   

    1.第一题取决与你使用的数据结构,所以无固定解法
    2.第二题也无固定解。直接tostring可以,递归可以,循环可以。如果能写出函数式或声明式解的人算比较有意思滴了
    函数式解法
      Func<int, int> fun = null;
                fun = i => i < 10 ? i : fun(i / 10) * (i % 10);
               var res = fun(225);3.第3题其实和第二题基本一样,第2题能用的手法,第3题都可以用。木啥好说滴
    ps:其实这两题还都可以用正则直接搞
    4.分组排序,在取唯一(sql2005以上可以用排名开窗)
      

  5.   

    1 google 矩阵转置
    2 最简单,转成字符串,然后每一位相乘
    ...
    都是很简单的题目啊。
      

  6.   


    个人觉得第二题
    可以加些思路:
    if(value.ToString().Contains("0")) return 0;
    string temp=value.ToString().Replace("1","");
    if(string.IsNullOrEmpty(temp)) return 1;
    else value=(int)temp;
      

  7.   

    这都挂了 太说不过去了吧
    LZ在c#基本语法,SQL基本语法上 还需加油
    放心,下次面试就会了
      

  8.   

    //第二题
                int num = 123456;
                string strNum = num.ToString();
                int sum = 1;
                for (int i = 0; i < strNum.Length; i++)
                {
                    sum *= int.Parse(strNum.Substring(i, 1));
                }
      

  9.   


            protected void Button1_Click(object sender, EventArgs e)
            {            int a = 0;
                string str = TextBox1.Text;
                string[] str2 = new string[str.Length];
                for (a = 0; a < str.Length; a++)
                {                str2[a] = str.Substring(a, 1);
                }
                TextBox2.Text ="1";
                for (int i = 0; i < str2.Length; i++)
                {
                    TextBox2.Text = (Convert.ToInt32(TextBox2.Text) * Convert.ToInt32(str2[i])).ToString();
                }
            }
    这样就能实现第二题, 顺路给大伙看看帮我也点评一下
      

  10.   

    第一题:
    def roate(L):
        height = len(L)
        for i in range(0, height):
            for j in range(0, i):
                L[i][j], L[j][i] = L[j][i], L[i][j]
                     
    if __name__ == '__main__':
        L =  [[100, 200, 300], [400, 500, 600], [700, 800, 900]]
        roate(L)
        print(L)
      

  11.   

    第二题
    def multi(I):
        if I == 0:
            return 0
        elif I > 0:
            sign = 1
        else:
            sign = -1
            I = int(math.fabs(I))
        res = 1
        while I != 0:
            res = res * (I%10)
            I = I/10
        return res * sign
      

  12.   

    第三题:
    def third(a, b):
        b = list(str(b))
        b[0], b[1] = b[1], b[0]
        return int(''.join(b) + str(a))
      

  13.   

    还确实比较基础
    4、select 用户, max(登录时间) from 登录表 group by 用户
      

  14.   

    第一题是我02年上中职时接触过最多的题,无论是vf、c、qb都有这个题啊
      

  15.   

    我不懂.NET。我是在论坛首页看到了所以进来的。
    我觉得这几个问题除了最后一个SQL语句的问题之外,其他的应该都是比较基础的吧。
    LZ不该不会吧。
      

  16.   

    由于我不懂.NET,我按照C语言的方式给出思路。仅供参考。
    1.只是输出的话,那么输出时直接按列输出应该就行了吧。
    2.可以直接int a = 225;
    int sum = 1,buff = a ;
    while(buff >0)
    {
        sum *= buff%10;
        buff = buff/10;
    }
    printf("The number is %d, the sum is %d \n" , a ,sum );
    3.不知道你写错了没,应该是5421吧。
    首先这两个正整数不一定小于100,所以要先进行判断,或者直接进行除以100取余的操作。
    (如果题意要求的是不管多少位的数都逆序组合的话,其实和只有两位的数是一样的思路)
    根据2 ,我猜你应该已经知道了怎么拆分一个整数了。
    4.我也不会。
      

  17.   

    确实不应该呀。。没有灵活运用,不知道可以这样MAX,7道SQL语句,三种题型,做了5道,最后就被这个现在认为很简单的题目难住了啊啊啊啊啊啊啊啊啊。可恶啊。。主要是最后几道程序设计我没想到考什么。。
      

  18.   

    用C/C++编写其实都不太难,ASP就不清楚了。
    Q4还真不知道怎么写SQL,学的全忘了
      

  19.   

    //第二题
    public static int mul(int num) {
    int sum = 1;
    if (num > 0) {
    String str = String.valueOf(num);
    for (int i = 0; i < str.length(); i++) {
    int t = Integer.parseInt(str.substring(i, i + 1));
    sum *= t;
    }
    return sum;
    } else {
    return 0;
    } }
    //第三题
    public static String swap(int num1, int num2) {
    String str1 = num2 % 10 + "" + num2 / 10;
    String str2 = num1 % 10 + "" + num1 / 10;
    return str1 + str2;
    }
      

  20.   

    #region 1-矩阵转换            int[][] testArray = new int[3][] {
                    new int[]{100, 200, 300},
                    new int[]{400, 500, 600},
                    new int[]{700, 800, 900}
                };            Console.WriteLine("转换前:\n");
                PrintArrayResult(testArray);
                Console.WriteLine();
                Console.WriteLine("转换后:\n");
                PrintArrayResult(TransformRowToColumn(testArray));            #endregion            #region 2-数值计算            Console.WriteLine("数值计算:\n");
                int number = 252;
                Console.WriteLine("输入数值:{0},乘积值为:{1}", number, Calculate(number));            #endregion            #region 3-数值交换            Console.WriteLine("数值交换:\n");
                Stack<int> stack = new Stack<int>();
                stack.Push(12);
                stack.Push(45);
                string s = string.Empty;
                while (stack.Count > 0)
                {
                    int temp = ChangeOrder(stack.Pop());
                    s += (temp.ToString());
                }            Console.WriteLine("交换后结果为:{0}", s);            #endregion            #region 4-SQL查询            select userid, max(logintime) from user
                group by userid
                order by userid            #endregion
            }        /// <summary>
            /// 打印二维数组结果
            /// </summary>
            /// <param name="sourceArray"></param>
            private static void PrintArrayResult(int[][] sourceArray)
            {
                for (int row = 0; row < sourceArray.Length; row++)
                {
                    List<int> ls = new List<int>();
                    for (int col = 0; col < sourceArray[row].Length; col++)
                    {
                        ls.Add(sourceArray[row][col]);
                    }
                    Console.WriteLine(string.Join(",", ls));
                }
            }        /// <summary>
            /// 行转列
            /// </summary>
            /// <param name="sourceArray"></param>
            /// <returns></returns>
            public static int[][] TransformRowToColumn(int[][] sourceArray)
            {
                int[][] newArray = new int[3][]{
                    new int[]{0,0,0},
                    new int[]{0,0,0},
                    new int[]{0,0,0}
                };            for (int row = 0; row < sourceArray.Length; row++)
                {
                    for (int col = 0; col < sourceArray[row].Length; col++)
                    {
                        newArray[row][col] = sourceArray[col][row];
                    }
                }            return newArray;
            }        /// <summary>
            /// 计算每个数的各个数字乘积
            /// </summary>
            /// <param name="number"></param>
            /// <returns></returns>
            public static int Calculate(int number)
            {
                Stack<int> stack = new Stack<int>();
                int result = 1;
                while (number > 0)
                {
                    int temp = number % 10;
                    stack.Push(temp);
                    number = number / 10;
                }            while (stack.Count > 0)
                {
                    result = result * stack.Pop();
                }            return result;
            }        /// <summary>
            /// 转换顺序
            /// </summary>
            /// <param name="number"></param>
            /// <returns></returns>
            public static int ChangeOrder(int number)
            {
                List<int> ls = new List<int>();            while (number > 0)
                {
                    int temp = number % 10;
                    ls.Add(temp);
                    number = number / 10;
                }            string s = string.Empty;
                for (int i = 0; i < ls.Count; i++)
                {
                    s += ls[i].ToString();
                }            return int.Parse(s);
            }其实都是数学题....LZ加油吧给你点思路老就当
      

  21.   

    第二题 我来写个递归吧
        
    int Func(int sum, int value)
            {
                sum *= value % 10;
                value = value / 10;
                return value > 0 ? Func(sum, value) : sum;           
            }
    调用:Response.Write(Func(1, 225));
      

  22.   

    只对SQL部分写一个效率相对高点的select * from  登录表 a where not exists(select 1 from 登录表 b where a.id = b.id and a.登陆时间<b.登陆时间)
      

  23.   

    2.
    int value = 225;
                int sum = value.ToString().Select(t => (int)t - 48).Aggregate((a, b) => a * b);