1) 創建一個類,用無參數的構造函數輸出該類的類名。
2) 增加一個重載的構造函數,帶有一個string類型的參數,在此構造函數中將傳遞的字符串打印出來。
3) 在Main方法中創建屬於這個類的一個對象,不傳遞參數。
4) 在Main方法中創建屬於這個類的另一個對象,傳遞一個字符串“This is a string.”。
5) 在Main方法中聲明類型為這個類的一個具有5個對象的數組,但不要實際創建分配到數組裡的對象。
6) 寫出運行程序應該輸出的結果。
【解答】
using System;
class Test1
{
public Test1()
{
Console.WriteLine(this);
}
public Test1(string str)
{
Console.WriteLine(str);
}
public static void Main()
{
Test1 t1 = new Test1();
Test1 t2 = new Test1("This is a string.");
Test1[] t3 = new Test1[5];
}
}
輸出結果:
Test1
This is a string.
2. 編寫一個控制台應用程序,定義一個類MyClass,類中包含有public、private以及protected數據成員及方法。然後定義一個從MyClass類繼承的類MyMain,將Main方法放在MyMain中,在Main方法中創建MyClass類的一個對象,並分別訪問類中的數據成員及方法。要求注明在試圖訪問所有類成員時哪些語句會產生編譯錯誤。
【解答】
using System;
class MyClass
{
public int i;
private int j;
protected int k;
public void method1()
{
Console.WriteLine("public method.");
}
private void method2()
{
Console.WriteLine("private method.");
}
protected void method3()
{
Console.WriteLine("protected method.");
}
}
class MyMain : MyClass
{
public static void Main()
{
MyClass t = new MyClass();
Console.WriteLine("i={0}", t.i);
Console.WriteLine("j={0}", t.j); //會出現編譯錯誤,私有成員不允許在其它類中訪問
Console.WriteLine("k={0}", t.k); //會出現編譯錯誤,應該創建MyMain的對象,然
//後通過MyMain的對象訪問
t.method1();
t.method2(); //會出現編譯錯誤,私有的方法不允許在其它類中調用
t.method3(); //會出現編譯錯誤,應該創建MyMain的對象,然後通過MyMain的
//對象調用該方法
}
}
3. 創建一個類包含有protected數據。在相同的文件裡創建第二個類,用一個方法操縱第一個類裡的protected數據。
【解答】
using System;
class Class1
{
protected int i = 5;
protected void MyMethod()
{
Console.WriteLine("protected method.");
}
}
class Class2 : Class1
{
private void NewMethod()
{
Console.WriteLine(this.i);
this.i += 10;
Console.WriteLine(this.i);
}
public static void Main()
{
Class2 t = new Class2();
t.NewMethod();
}
}
4. 分別寫出下列語句執行的結果。
1) Console.WriteLine("{0}--{0:p}good",12.34F);
2) Console.WriteLine("{0}--{0:####}good",0);
3) Console.WriteLine("{0}--{0:00000}good",456);
【解答】
12.34--1,234.00%good
0--good
456--00456good
5. 編寫一個控制台應用程序,計算
要求精度為10-8。
【解答】
using System;
class Test5
{
public static void Main()
{
int n = 50;
double x = 3;
double s = 0;
double a = 1;
for (int i = 1; i <= n; i++)
{
a *= i;
s += Math.Pow(-1, i + 1) * Math.Pow(x, i) / a;
}
Console.WriteLine("n={0},s={1:0.00000000}", n, s);
}
}
6. 編寫一個控制台應用程序,接收一個長度大於3的字符串,完成下列功能
1) 輸出字符串的長度。
2) 輸出字符串中第一個出現字母a的位置。
3) 在字符串的第3個字符後面插入子串“hello”,輸出新字符串。
4) 將字符串“hello”替換為“me”,輸出新字符串。
5) 以字符“m”為分隔符,將字符串分離,並輸出分離後的字符串。
【解答】
using System;
class Test6
{
public static void Main()
{
string str = "";
while (str.Length <= 3)
{
Console.Write("請輸入一個長度大於3的字符串:");
str = Console.ReadLine();
}
//(1)
Console.WriteLine("字符串的長度為:{0}", str.Length);
//(2)
int i = str.IndexOf('a');
if (i > -1)
{
Console.WriteLine("第一個出現字母a的位置是:{0}", i);
}
else
{
Console.WriteLine("字符串中不包含字母a。");
}
//(3)
string str1 = str.Insert(3, "hello"); //在第3個(初始序號為)字符前插入hello
Console.WriteLine("插入hello後的結果為:{0}", str1);
//(4)
string str2 = str1.Replace("hello", "me");
Console.WriteLine("將hello替換為me後的結果為:{0}", str2);
//(5)
string[] arr = str2.Split('m');
Console.WriteLine("以m為分隔符分離後的字符串有:");
for (int j = 0; j < arr.Length; j++)
{
Console.WriteLine(arr[j]);
}
}
}