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工具中如何取数据来显示?
浙公网安备 33010602011771号