1.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
String str=null 将str指向一个空地址,没有为str分配空间,str是点不出任何东西的
String str=“” 将str指向一个存储着空字符串的地址,为str分配了空间,str可以点出东西来
2.请详述在.NET中类(class)与结构(struct)的异同。
Class可以被实例化,属于引用类型,内存分配不固定,分配在内存的堆上的,可以继承
Struct属于值类型,内存分配是固定的,分配在内存的栈上的,不可继承
3.分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i=(13) j=(10)。
4. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
S1=s1+1是把short和int相加结果,结果是int类型,没有经过强制转换赋给short,所以会出错
S1+=1是把int类型自动转换成short,此时的1是short,所以正确
编程题(最好用C#)
1.已知数列:1,1,2,3,5,8,13,21,34,..... 求第50个数值
public static int Fib(int i)
{
if (i <= 2) return 1;
else return Fib(i - 2) + Fib(i - 1);
}
2.字符串反转
public static string Rev(string s)
{
char[] c=s.ToCharArray();
char temp;
for (int i = 0; i <= (c.Length - 1)/2; i++)
{
temp = c[i];
c[i] = c[c.Length - 1 - i];
c[c.Length - 1 - i] = temp;
}
s=new string(c);
return s;
}
3.写出任意一种排序算法
public static int[] Seq(int[] n)
{
int temp;
int j = n.Length - 1;
while (j > 0)
{
for (int i = 0; i < j; i++)
{
if (n[i] > n[i + 1])
{
temp = n[i];
n[i] = n[i + 1];
n[i + 1] = temp;
}
}
j--;
}
return n;