Lydia
量的提高,质的飞越!

1、请用C#或Java写出n!的算法
方法一:
public int fun(int n)
{
   if(n==1||n==0)
   {
      return 1;
   }
   else
   {
      return n*fun(n-1);
   }
}

方法二:
public int fun2(int n)
 {
     if(n==1 || n==0) 
      {
         return 1;
      }
      else
      {
         for(int i=n-1;i>1;i--)
            {
               num*=i;
            }
      }
 }

2、找错
public void ExcuteSql(string connectionString,string sql)
  {
   SqlConnection conn=new SqlConnection(connectionString);
   try
   {
    for(int i=0;i<10;i++)
    {
      conn.Open();
     SqlCommand common=new SqlCommand(sql,conn);
     common.ExecuteNonQuery();
     common.Dispose();
    }
   }
   catch(Exception ex)
   {
    this.ExceptionHandler();
    Response.Write(ex.Message);
    return;
   }

   finally
   {
    this.FinallyHandler(conn);
   }
  }

  public void ExceptionHandler()
  {
   Response.Write("Exception\n");
  }

  public void FinallyHandler(SqlConnection conn)
  {
   Response.Write("FinallyHandler");
   conn.Close();
   conn.Dispose();
  }
1) 调用接口ExcuteSql()时,方法ExceptionHandler()和方法FinallyHandler()都会不会执行?
答:经过程序验证两个方法都会执行,原因程序确实出现了异常,conn对象只能打开一次,而在程序中循环打开了,至于FinallyHandler()方法的执行主要跟finally块有关:

finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块,与 try 块的退出方式无关。
2)ExceptionHandler()方法是否会重复执行
答:不会
3) conn.Dispose();是否可以去掉?为什么?
答:不可以,原因是要释放资源
4) 程序是否有错误,请指出错误
答:应该要判断conn对象的状态
if(conn.state==ConnectionState.Closed) 
{
   conn.Open();
}
我还认为关闭conn时要判断
if(conn.state==ConnectionState.Ope)
{
   conn.Close();
   if(conn!=null)
   {
      conn.Dispose();
   }
}
 3、说说左外联接和右外联接的区别
4、用TreeView控件显示数据,并且可以追加、合并,删除,移动节点,如果要把数据存储到一张表中,那么这张表的结构该如何设计?在.net工具中如何取数据来显示?

posted on 2007-05-18 17:25  冰水沸腾  阅读(72)  评论(0)    收藏  举报