1.填空:(一空一分,满分10分)
(1)面向对象的语言具有[继承]性;[封装]性;[ 多态]性。
(2)能用foreach遍历访问的对象需要实现[IEnumerable ]接口或声明[GetEnumerator ]方法的类型。
(3)列举ADO.net中的五个主要的对象[ ];[ ];[ ];[ ];[ ]。
*******************************************************************
2.不定项选择(一题五分,满分10分)
(1)以下叙述正确的是:
A 接口可以有虚方法。 B 一个类可以实现多个接口。
C 接口不能被实例话。 D 接口中可以包含已实现的方法。
(2)从数据库读取记录,你可以使用的方法有:
A ExecuteNonQuery B ExecuteScalar
C Fill D EcecuteReader
**********************************************************************
3.简述:private;protected;public;internal修饰符的访问权限。(满分10分)
**********************************************************************
4.写出一条SQL语句,取出表A中第31到第40条记录(ID为自动增长的主键,并ID不是连续的。)(满分10分)
**********************************************************************************
5.列举ASP.NET页面之间传递值的几种方式:(满分10分)
*****************************************************
6.写出程序输出的结果:(满分10分)
class Class1
{
private string str="Class1.str";
private int i=0;
static void StringConvert(string str)
{
str="string being converted";
}
static void stringConvert(Class1 c)
{
c.str="string being converted";
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
static void Main()
{
int i1=10;
int i2=20;
string str="str";
Class1 c=new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
}
}
*******************************************************************************
7.写出程序输出的结果:(满分10分)
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B:A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a=new B()
a.Fun();
}
}
*******************************************************************************
8.写出程序输出的结果:(满分10分)
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B:A
{
public override void Fun1(int i)
{
base.Fun1(i+1);
}
public static void Main()
{
B b=new B();
A a=new A();
a.Fun2(b);
b.Fun2(a);
}
}
*********************************************************************************
9.一列数的规则如下:1 1 2 3 5 8 13 21 34........ 求第30位数是多少,用递规实现。(满分10分)
********************************************************************************************
10.(满分10分)
select * from tt
------------------/
id pid
----- -------
1 1
1 1
2 2
3 3
3 3
3 3
如何删除重复数据,请写出sql语句。
参考答案:
1.(1)继承性;封装性;多态性。
(2)IEnumerable;GetEnumerator
********************************
2.(1)B C (2) B C D
**********************
3.private:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
public:公共成员,完全公开,没有访问权限。
internal:在同一命名空间内可以访问。
**********************************************
4.select top 10 * from A where id not in(select top 30 id form A) 或
select top 10 * from A where id > (select max(id) from (select top 30 id from A)AS A)
********************************************************************
5. QueryString/Session/Server.Transfer
***************************************
6. 10/21/0/str/string being converted
***************************************
7.A/B/A.Fun()
*****************
8.2/5/1/6
************
9. public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if(i<=0)
return 0;
else if(i>0 && i<=2)
return 1;
else return Foo(i-1)+Foo(i-2);
}
}
***********************************************
10.方法一:使用distinct和临时表
if object_id('tempdb..#tmp') is not null
drop table #tmp
select distinct * into #tmp from tt
truncate table tt
insert into tt select * from #tmp
---------------------------------
方法二:添加标识列
alter table tt add NewID int identity(1,1)
go
delete from tt where exists(select 1 from tt a where a.newid>tt.newid and tt.id=a.id and tt.pid=a.pid)
go
alter table tt drop column NewID
go