1.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。
关于小白鼠问题的解答
准备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号瓶子有毒。
- String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
- String DBURL = "jdbc:oracle:thin:@localhost:1521:cjlu";
- String DBUSER = "scott";
- String DBPASSWORD = "tiger";
- Connection conn = null;
- PreparedStatement ps = null;
- ResultSet res=null;
- try {
- Class.forName(DBDRIVER);
- // 连接时必须填写用户名及密码
- conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
- // 查询用户
- String sql = "select * from users where username=?";
- ps = conn.prepareStatement(sql);
- ps.setString(1, "zhangsan");
- res=ps.executeQuery();
- while(res.next()){
- System.out.println(res.getString("username")+res.getString("email"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(ps!=null){
- try {
- ps.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(conn!=null){
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
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是重新申请的地址长度