編程|網路
1. 編寫一個控制台應用程式,完成下列功能。
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]);
}
}
}