码迷,mamicode.com
首页 > 其他好文 > 详细

2015恒生电子校招笔试详解

时间:2015-01-04 22:42:39      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

技术分享

技术分享

技术分享

详细解答:

一、选择题

1、BD  C语言要经过编译成二进制代码,再经过连接形成.exe可执行文件。

2、D  3种遍历方式的互推。

3、D    私有成员只能本类访问

4、CD  索引不是越多越好,尤其是组合索引。

5、B    主要看SQL语句where后是否为ture。

6、B  abcd直接过得A;依次全入栈再出栈得C;a入栈,bcd直接过,a出栈得D。

7、DA  值调用表示方法接收的是调用者提供的值,不改变实参;引用调用表示方法接收的是调用者提供的变量的地址,改变实参。

8、D  因为D最抽象,C是错的,还有链式、树等。

9、C    1000|0001=1001>>1=0100=4。

10、CD  d表示目录,w是写,r是读,x是执行,没3个一组,分别是所有着、用户组或其他用户,即用户组为r-x,拥有读和执行权限。 

二、Java语言部分

1、B

2、C

3、AB A申明了字符串,B字符多了,CD正常,可以用中文和Unicode编码申明。

4、AC   (-5)%2=-1,B错;D超过int范围。

5、C     常考题,http://www.cnblogs.com/dingshilei/p/4107583.html的23题解析。

三、数据库

1、select distinct S.Sname from S,C,SC where SC.Sno=S.Sno and SC.Cno=C.Cno and C.Cname="数据库" order by S.Sname DESC; 

2、select distinct SC.Sno,C.Ccredit from SC,C where C.Ccredit >80 and SC.Grade>60;

3、alter table SC add Teacher varchar(20) not null;

4、create view SCSum as select Sno,sum(Grade) from SC group by Sno ;

5、delect from SC where Sno not in(select Sno from S);

四、编程题

注意要判断是否为闰年,闰年的2月份要多加一天。

#include <stdio.h>



struct date 

{

    int year; 

    int month; 

    int day; 

}; 



int leap_year(int a);

int cal_day(struct date a);



/*判断闰年*/ 

int leap_year(int a)

{

    if(a%400==0||(a%4==0&&a%100!=0)) 

        return 1;

    else 

        return 0;

}



/*计算一年中的第几天*/ 

int cal_day(struct date a) 

{

    int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;

    for(int i=0;i<a.month-1;i++) 

        sum+=b[i]; 

    if(a.month>2)

        sum=sum+a.day+leap_year(a.year); 

    else

        sum=sum+a.day;

    return sum; 

} 



void main()

{

    struct date a;

    int n;

    printf("\n请输入日期(年 月 日)\n"); 

    scanf("%d%d%d",&a.year,&a.month,&a.day); 

    n=cal_day(a);

    printf("该日在本年中是第%d天\n",n);

}

五、算法题

1、基本思路就是判断合数的因子是否为素数,然后for循环迭代完成。

import java.util.Scanner;

public class Try
{
  static boolean is_odd(int n) //判断是否为素数
  {
   if(n==2||n==3) return true;
   if(n%2==0) return false;
   int i;
   for(i=3;i<=n/2;i+=2)
    if(n%i==0) return false;
   return true;
  }
 
  public static void main(String[] args)
  {
   Scanner in=new Scanner(System.in);
   System.out.println("输入数值");
   int n=in.nextInt();
   int i;
   System.out.print(n+"=");
   for(i=2;i<=n;i++)
   {
    if(!is_odd(i)) continue;
    if(n%i==0)
    {
     while(true)
     {
      System.out.print(i);
      n/=i;
      if(n!=1) System.out.print("*");
      if(n%i!=0) break; 
     }
    }
   }
   System.out.println();
  }
}

还可以用递归的方法来实现http://blog.csdn.net/YidingHe/article/details/3952651

    import java.util.List;  
    import java.util.ArrayList;  
       
    /** 
     * 分解质因数 
     */  
    public class GetFactor {  
       
        public static void main(String[] args) {  
            List<Long> factors = getFactors(5555566666L, 2);  
            System.out.println(factors);  
        }  
       
        /** 
         * 通过递归实现分解质因数 
         * 
         * @param n      要分解的数字 
         * @param factor 起始因子 
         * 
         * @return 分解结果 
         */  
        private static List<Long> getFactors(long n, long factor) {  
            // 不断增大 factor 直到能整除 n  
            while (n % factor != 0 && factor < n) {  
                // 得到 2,3,5,7,9,11,13,...  
                factor = factor < 2 ? 2 : factor == 2 ? 3 : factor + 2;  
            }  
       
            List<Long> result;  
            if (factor >= n) {  // 因子已经涨到和 n 一样大,说明 n 本身就是因子。这时递归完成。  
                result = new ArrayList<Long>();  
            } else {            // 因子能够整除 n,于是继续分解除以因子后的结果  
                result = getFactors(n / factor, factor);    // 向下递归  
            }  
              
            result.add(factor);  
            return result;  
        }  
    }  

 

2015恒生电子校招笔试详解

标签:

原文地址:http://www.cnblogs.com/dingshilei/p/4164866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!