笔试收集

来源:互联网 发布:淘宝商城名字大全 编辑:程序博客网 时间:2024/05/02 02:55

1.1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。

关于小白鼠问题的解答

10只得答案是正确的,但是方法并不是折半法,而是类似数字电路中的编码方式。

准备10个空瓶(编号为1-10,然后找10只老鼠每只喝一瓶),然后将1000个瓶子进行二进制编号,
1号瓶子为:0000000001、2号瓶子为:0000000010........、1000号瓶子为:1111101000。
0000000001————————1
0000000010————————2
0000000011————————3
0000000100————————4
0000000101————————5
0000000110————————6
0000000111————————7
....
....
....
1111101000————————1000
根据编号向10个瓶子中滴水,例如编号为0000101010就向第5、7、9瓶中滴。

看老鼠的死亡情况去查上面的表,假设8号老鼠和9号老鼠死了,其他均正常那么就是0000000110——6号瓶有毒。
假设1,3,4,5,6,8号老鼠死了,其他正常那么就是101110100——756号瓶子有毒。


JDBC 操作数据库
  1. String DBDRIVER = "oracle.jdbc.driver.OracleDriver";  
  2.         String DBURL = "jdbc:oracle:thin:@localhost:1521:cjlu";  
  3.         String DBUSER = "scott";  
  4.         String DBPASSWORD = "tiger";  
  5.         Connection conn = null;  
  6.         PreparedStatement ps = null;  
  7.         ResultSet res=null;  
  8.         try {  
  9.             Class.forName(DBDRIVER);  
  10.             // 连接时必须填写用户名及密码  
  11.             conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);  
  12.             // 查询用户  
  13.             String sql = "select * from users where username=?";  
  14.             ps = conn.prepareStatement(sql);  
  15.             ps.setString(1"zhangsan");  
  16.             res=ps.executeQuery();  
  17.             while(res.next()){  
  18.                 System.out.println(res.getString("username")+res.getString("email"));  
  19.             }  
  20.         } catch (Exception e) {  
  21.             e.printStackTrace();  
  22.         }finally{  
  23.             if(ps!=null){  
  24.                 try {  
  25.                     ps.close();  
  26.                 } catch (SQLException e) {  
  27.                     e.printStackTrace();  
  28.                 }  
  29.             }  
  30.             if(conn!=null){  
  31.                 try {  
  32.                     conn.close();  
  33.                 } catch (SQLException e) {  
  34.                     e.printStackTrace();  
  35.                 }  
  36.             }  
  37.         }  

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。下列代码段给出了以上三步的基本示例:
  Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login",
  "password");
  Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
  while (rs.next()) {
  int x = rs.getInt("a");
  String s = rs.getString("b");
  float f = rs.getFloat("c");
  }

3、对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。
1.4.9.16.25.36.49.64.81.100
每个数都可以分解为若干互质的数的乘积,如果约数是奇数个,就是熄灯状态


三个函数的声明分别是: 
void* realloc(void* ptr, unsigned newsize); 
void* malloc(unsigned size); 
void* calloc(size_t nelem, size_t elsize); 
都在stdlib.h函数库内

原型:extern void *realloc(void *mem_address, unsigned int newsize);

用法:#include <alloc.h> 
功能:改变mem_address所指内存区域的大小为newsize长度。

说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *malloc(unsigned int num_bytes); 
用法:#include <alloc.h>

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *calloc(int num_elems, int elem_size); 
用法:#include <alloc.h> 
功能:为具有num_elems个长度为elem_size元素的数组分配内存 
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 
        当内存不再使用时,应使用free()函数将内存块释放。

区别:

1、calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据

2、realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度




原创粉丝点击