C#網路應用程式設計基礎練習題與答案(1)
【解答】
首先,在系統的效能方面。只要擁有可上網的瀏覽器,就可以使用B/S系統。不過,B/S結構的客戶端只能完成瀏覽、查詢、資料輸入等簡單功能,絕大部分工作要由伺服器承擔,這就對伺服器提出了很高的要求,無形中增加了使用者在這一方面的投入。採用C/S結構時,客戶端和伺服器都承擔部分工作,有效利用了客戶端和伺服器端的資源,使使用者不必在硬體上有更多的投入。另外,瀏覽器頁面不便於修改,這為使用者定製自己的檔案時帶來了不便,比如使用者想自定義一個報表,用B/S結構的系統就比較難完成。
其次,在系統的開發方面,C/S結構的開發對開發者提出了較高的要求,整個開發過程比較複雜。與B/S結構相比,C/S技術的歷史更為“悠久”,從技術成熟度和開發人員普遍掌握的水平來看更為成熟。
第三,系統升級方面。C/S結構中若有某一模組發生改變,可能要關聯到其它模組的變動,使系統升級的成本較大;而B/S結構在開發、維護階段幾乎所有的工作都集中在伺服器端,只需更新伺服器端的軟體就可以了。如果系統升級比較頻繁,那麼B/S架構的產品就具有維護工作量少的優勢。
第四,安全性方面。在安全性上,B/S結構則略顯不足,畢竟現在網路安全係數不高,只要擁有密碼,任何人都可以進入到使用者的系統中;而C/S結構由於需要特定的客戶端軟體,並且一般來說都要對客戶端加密,甚至可以限定只有某一臺計算機可以使用這個客戶端,因而對安全性有更多的保障。
2. 可以用C#編寫哪些型別的應用程式?
【解答】
1) 控制檯應用程式。
2) Windows應用程式。
3) 水晶報表應用程式。
4) ASP.NET Web應用程式。
5) ASP.NET Web服務應用程式。
6) ASP.NET 水晶報表Web應用程式。
7) 智慧裝置應用程式。
3. 什麼是名稱空間?名稱空間和類庫的關係是什麼?
【解答】
1) 名稱空間是對類的一種邏輯上的分組,即將類按照某種關係或聯絡劃分到不同的名稱空間下。
2) 名稱空間又可以包含其它的名稱空間,例如System.Windows.Forms,是指System名稱空間下有Windows名稱空間,Windows名稱空間下有Forms名稱空間。
3) 所有類庫都在規定的名稱空間下。
【解答】
C#支援的資料型別有:
(1) 值型別
包括:簡單型別、結構型別、列舉型別。其中,簡單型別又分為:整型、布林型、字元型、浮點型、小數型。
(2) 引用型別
包括:物件型別、類型別、介面、後設資料、字串型別、陣列。
與C++相比,C#的主要特點有:
1) C#語言自C/C++演變而來。但是,它是完全按照物件導向的思想來設計的,並保證了型別的安全性。
2) C#簡化了C++在類、名稱空間、方法過載和異常處理等方面的使用。摒棄了C++的複雜性,使它更易用、更少出錯。
3) C#減少了C++的一些特性,不再有巨集、多重繼承。特別對企業開發者來說,上述功能只會產生更多的麻煩而不是效益。
4) C#採用嚴格的型別安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標都是瞄準了開發面向元件的軟體開發。
5) C#中不再有“::”、“.”、和“->”操作符,僅使用單個操作符“.”。
6) C#使用統一的型別系統,摒棄了C++多變的型別系統。
7) 在C#中,不能在類的外部定義全域性函式、變數或者是常量等。所有的東西都必須封裝在類中,包括例項成員或靜態成員。從而使C#程式碼更加易讀且有助於減少潛在的命名衝突。
8) 在C#中,不能使用沒有初始化的變數。從而避免了由於使用不經初始化的變數而導致的計算結果錯誤。
2. C#語言中,值型別和引用型別有何不同?
【解答】
值型別和引用型別的區別在於,值型別的變數直接存放實際的資料,而引用型別的變數存放的則是資料的地址,即物件的引用。
值型別變數直接把變數的值儲存在堆疊中,引用型別的變數把實際資料的地址儲存在堆疊中,而實際資料則儲存在堆中。注意,堆和堆疊是兩個不同的概念,在記憶體中的儲存位置也不相同,堆一般用於儲存可變長度的資料,如字串型別;而堆疊則用於儲存固定長度的資料,如整型型別的資料int(每個int變數佔用四個位元組)。由資料儲存的位置可以得知,當把一個值變數賦給另一個值變數時,會在堆疊中儲存兩個完全相同的值;而把一個引用變數賦給另一個引用變數,則會在堆疊中儲存對同一個堆位置的兩個引用,即在堆疊中儲存的是同一個堆的地址。在進行資料操作時,對於值型別,由於每個變數都有自己的值,因此對一個變數的操作不會影響到其它變數;對於引用型別的變數,對一個變數的資料進行操作就是對這個變數在堆中的資料進行操作,如果兩個引用型別的變數引用同一個物件,實際含義就是它們在堆疊中儲存的堆的地址相同,因此對一個變數的操作就會影響到引用同一個物件的另一個變數。
3. 結構和類的區別是什麼?
【解答】
1) 結構是一個值型別,儲存在棧上,而類是一個引用型別,儲存在受管制的堆上。
2) 對結構中的資料進行操作比對類或物件中的資料進行操作速度要快。
3) 一般用結構儲存多種型別的資料,當建立一個很多類或物件共用的小型物件時,使用結構效率更高。
4. C#中的陣列型別有何特點?
【解答】
1) 陣列一般用於儲存同一種型別的資料,包括Object型別。
2) 陣列是一種引用型別,而不是值型別。
3) C#中除了可以有一維陣列、多維陣列外,還有交錯型陣列。
5. C#中不同整型之間進行轉換的原則是什麼?
【解答】
在整型之間進行轉換時,小範圍型別可以隱式轉換為大範圍型別,但大範圍型別轉換為小範圍型別時需要使用顯式轉換。
6. 簡述裝箱和拆箱的過程。
【解答】
裝箱是將值型別隱式地轉換為object型別或者轉換為由該值型別實現了的介面型別。裝箱一個數值會為其分配一個物件例項,並把該數值拷貝到新物件中。拆箱是顯式地把object型別轉換成值型別,或者把值型別實現了的介面型別轉換成該值型別。
7. 下列寫法哪些是錯誤的?為什麼?
1) if (nMyValue1=5) i=1;
2) if(nMyValue2==1)i=1;
3) int[] myInt={1,2,3};
foreach(int test in myInt)
{
test++;
Console.WriteLine(temp);
}
4) int[] myInt1={1,2,3};
foreach(int test in myInt1)
{
Console>WriteLine(test);
}
【解答】
1) 錯誤。if中的條件表示式結果不是布林型。
2) 正確。
3) 錯誤一:temp沒有定義。
錯誤二:在foreach塊內,test作為列舉成員是隻讀的,不能使用test++修改其值。
4) 錯誤。Console後應該是點,而不應該是大於號。
8. 錯誤和異常有什麼區別,為什麼要進行異常處理,用於異常處理的語句有哪些?
【解答】
錯誤是指在執行程式碼過程中發生的事件,它中斷或干擾程式碼的正常流程並建立異常物件。當錯誤中斷流程時,該程式將嘗試尋找異常處理程式(一段告訴程式如何對錯誤做出響應的程式碼),以幫助程式恢復流程。換句話說,錯誤是一個事件,而異常是該事件建立的物件。
當使用短語“產生異常”時,表示存在問題的方法發生錯誤,並建立異常物件(包含該錯誤的資訊及發生的時間和位置)來響應該錯誤。導致出現錯誤和隨後異常的因素包括使用者錯誤、資源失敗和程式設計邏輯失敗。這些錯誤與程式碼實現特定任務的方法有關,而與該任務的目的無關。
如果不進行異常處理,即不對錯誤做出響應,程式的健壯性就會大打折扣,甚至無法保證正常執行,所以必須要進行異常處理。
用於異常處理的語句有:try-catch語句、try-catch-finally語句、throw語句。
9. 編寫一個控制檯應用程式,輸出1到5的平方值,要求:
1) 用for語句實現。
2) 用while語句實現。
3) 用do-while語句實現。
【解答】
using System.Collections.Generic;
using System.Text;
namespace outputSquareValue
{
class Program
{
static void Main()
{
//用for語句實現
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("{0}的平方值為{1}", i, i * i);
}
//用while語句實現
int j = 0;
while (j++ < 5)
{
Console.WriteLine("{0}的平方值為{1}", j, j * j);
}
//用do-while語句實現
int k = 1;
do
{
Console.WriteLine("{0}的平方值為{1}", k, k * k);
} while (k++ < 5);
Console.ReadLine();
}
}
}
10. 編寫一個控制檯應用程式,要求使用者輸入5個大寫字母,如果使用者輸入的資訊不滿足要求,提示幫助資訊並要求重新輸入。
【解答】
using System.Collections.Generic;
using System.Text;
namespace inputCapitalLetter
{
class Program
{
static void Main()
{
bool ok = false;
while (ok == false)
{
Console.Write("請輸入5個大寫字母:");
string str = Console.ReadLine();
if (str.Length != 5)
{
Console.WriteLine("你輸入的字元個數不是5個,請重新輸入。");
}
else
{
ok = true;
for (int i = 0; i < 5; i++)
{
char c = str[i];
if (c < 'A' || c > 'Z')
{
Console.WriteLine("第{0}個字元“{1}”不是大寫字母,請重新輸入。", i + 1, c);
ok = false;
break;
}
}
}
}
}
}
}
11. 編寫一個控制檯應用程式,要求完成下列功能。
1) 接收一個整數n。
2) 如果接收的值n為正數,輸出1到n間的全部整數。
3) 如果接收的值為負值,用break或者return退出程式。
4) 轉到(1)繼續接收下一個整數。
【解答】
using System.Collections.Generic;
using System.Text;
namespace testOutput
{
class Program
{
static void Main()
{
while (true)
{
Console.Write("請輸入一個整數(負值結束):");
string str = Console.ReadLine();
try
{
int i = Int32.Parse(str);
if (i < 0) break;
for (int j = 1; j <= i; j++) Console.WriteLine(j);
}
catch
{
Console.WriteLine("你輸入的不是數字或超出整數的表示範圍,請重新輸入");
}
}
}
}
}
12. 編寫一個控制檯應用程式,求1000之內的所有“完數”。所謂“完數”是指一個數恰好等於它的所有因子之和。例如,6是完數,因為6=1+2+3。
【解答】
using System.Collections.Generic;
using System.Text;
namespace completeNumber
{
class Program
{
static void Main(string[] args)
{
for (int i = 2; i <= 1000; i++)
{
int s = 1;
string str = "1";
for (int j = 2; j <= (int)Math.Sqrt(i); j++)
{
if (j * (i / j) == i)
{
if (j != i / j)
{
s += j + i / j;
str += string.Format("+{0}+{1}", j, i / j);
}
else
{
s += j;
str += string.Format("+{0}", j);
}
}
}
if (s == i) Console.WriteLine("{0}={1}", i, str);
}
Console.ReadLine();
}
}
}
相關文章
- 50道Java基礎程式設計練習題Java程式設計
- 程式設計假期練習題--1程式設計
- Java語言程式設計基礎篇第十版第一章程式設計練習題答案Java程式設計
- Java程式設計基礎24——遞迴練習Java程式設計遞迴
- Java網路程式設計基礎學習與整理Java程式設計
- java語言程式設計基礎篇第七章程式設計練習題Java程式設計
- C與指標課後練習與程式設計答案(不斷更新)指標程式設計
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- 《父與子的程式設計之旅(第3版)》第1章習題答案程式設計
- 實驗2 c語言分支與迴圈基礎應用程式設計1C語言程式設計
- 實驗2 C語言分支與迴圈基礎應用程式設計-1C語言程式設計
- c# windows程式設計基礎C#Windows程式設計
- JAVA 基礎練習題Java
- C與指標課後答案與程式設計練習(第一章)指標程式設計
- Linux認證網路管理方面練習題《含答案》(轉)Linux
- 程式設計假期練習題--2程式設計
- 程式設計假期練習題--3程式設計
- linux基礎練習題Linux
- Python基礎練習題Python
- 網路程式設計基礎-socket基礎程式設計
- 網路程式設計基礎程式設計
- Socket網路程式設計基礎與實踐:建立高效的網路通訊程式設計
- C#基礎程式設計——簡介及基礎語法C#程式設計
- 第一模組-第二章 Python基礎資料型別與檔案操作-練習題(程式設計題)Python資料型別程式設計
- Mac基礎設定—應用程式Mac
- 好程式設計師web前端學習路線分享前端基礎面試題程式設計師Web前端面試題
- 《Java語言程式設計(基礎篇)(原書第10版)》第2~4章部分程式設計練習題程式碼Java程式設計
- 程式設計實踐(Pandas)綜合練習1程式設計
- 《Spark程式設計基礎》(Scala版)第七章簡答題答案(自制)Spark程式設計
- 程式設計練習程式設計
- oracle基礎練習1-4章Oracle
- 基礎面試題 — 計算機網路面試題計算機網路
- 《The Rust Programming language》程式碼練習(part 1 基礎部分)Rust
- python程式設計基礎:深度學習基礎:繪相簿之matplotlib(1)Python程式設計深度學習
- 07.程式程式設計基礎1~概述程式設計
- 《UML基礎、案例與應用》習題記錄-第16章
- 《UML基礎、案例與應用》習題記錄-第22章
- JavaSE基礎程式設計十題Java程式設計