国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#網(wǎng)絡(luò)應(yīng)用編程基礎(chǔ)練習(xí)題與答案(二)

2024-07-21 02:28:23
字體:
供稿:網(wǎng)友

  1. c#支持的數(shù)據(jù)類型有那些?與c++相比有哪些特點(diǎn)?

  【解答】

  c#支持的數(shù)據(jù)類型有:

  (1) 值類型

  包括:簡(jiǎn)單類型、結(jié)構(gòu)類型、枚舉類型。其中,簡(jiǎn)單類型又分為:整型、布爾型、字符型、浮點(diǎn)型、小數(shù)型。

  (2) 引用類型

  包括:對(duì)象類型、類類型、接口、元數(shù)據(jù)、字符串類型、數(shù)組。

  與c++相比,c#的主要特點(diǎn)有:

  1) c#語言自c/c++演變而來。但是,它是完全按照面向?qū)ο蟮乃枷雭碓O(shè)計(jì)的,并保證了類型的安全性。

  2) c#簡(jiǎn)化了c++在類、名稱空間、方法重載和異常處理等方面的使用。摒棄了c++的復(fù)雜性,使它更易用、更少出錯(cuò)。

  3) c#減少了c++的一些特性,不再有宏、多重繼承。特別對(duì)企業(yè)開發(fā)者來說,上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。

  4) c#采用嚴(yán)格的類型安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標(biāo)都是瞄準(zhǔn)了開發(fā)面向組件的軟件開發(fā)。

  5) c#中不再有“::”、“.”、和“->”操作符,僅使用單個(gè)操作符“.”。

  6) c#使用統(tǒng)一的類型系統(tǒng),摒棄了c++多變的類型系統(tǒng)。

  7) 在c#中,不能在類的外部定義全局函數(shù)、變量或者是常量等。所有的東西都必須封裝在類中,包括實(shí)例成員或靜態(tài)成員。從而使c#代碼更加易讀且有助于減少潛在的命名沖突。

  8) 在c#中,不能使用沒有初始化的變量。從而避免了由于使用不經(jīng)初始化的變量而導(dǎo)致的計(jì)算結(jié)果錯(cuò)誤。

  2. c#語言中,值類型和引用類型有何不同?

  【解答】

  值類型和引用類型的區(qū)別在于,值類型的變量直接存放實(shí)際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對(duì)象的引用。

  值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實(shí)際數(shù)據(jù)的地址保存在堆棧中,而實(shí)際數(shù)據(jù)則保存在堆中。注意,堆和堆棧是兩個(gè)不同的概念,在內(nèi)存中的存儲(chǔ)位置也不相同,堆一般用于存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù),如字符串類型;而堆棧則用于存儲(chǔ)固定長(zhǎng)度的數(shù)據(jù),如整型類型的數(shù)據(jù)int(每個(gè)int變量占用四個(gè)字節(jié))。由數(shù)據(jù)存儲(chǔ)的位置可以得知,當(dāng)把一個(gè)值變量賦給另一個(gè)值變量時(shí),會(huì)在堆棧中保存兩個(gè)完全相同的值;而把一個(gè)引用變量賦給另一個(gè)引用變量,則會(huì)在堆棧中保存對(duì)同一個(gè)堆位置的兩個(gè)引用,即在堆棧中保存的是同一個(gè)堆的地址。在進(jìn)行數(shù)據(jù)操作時(shí),對(duì)于值類型,由于每個(gè)變量都有自己的值,因此對(duì)一個(gè)變量的操作不會(huì)影響到其它變量;對(duì)于引用類型的變量,對(duì)一個(gè)變量的數(shù)據(jù)進(jìn)行操作就是對(duì)這個(gè)變量在堆中的數(shù)據(jù)進(jìn)行操作,如果兩個(gè)引用類型的變量引用同一個(gè)對(duì)象,實(shí)際含義就是它們?cè)诙褩V斜4娴亩训牡刂废嗤虼藢?duì)一個(gè)變量的操作就會(huì)影響到引用同一個(gè)對(duì)象的另一個(gè)變量。

  3. 結(jié)構(gòu)和類的區(qū)別是什么?

  【解答】

  1) 結(jié)構(gòu)是一個(gè)值類型,保存在棧上,而類是一個(gè)引用類型,保存在受管制的堆上。

  2) 對(duì)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行操作比對(duì)類或?qū)ο笾械臄?shù)據(jù)進(jìn)行操作速度要快。

  3) 一般用結(jié)構(gòu)存儲(chǔ)多種類型的數(shù)據(jù),當(dāng)創(chuàng)建一個(gè)很多類或?qū)ο蠊灿玫男⌒蛯?duì)象時(shí),使用結(jié)構(gòu)效率更高。

  4. c#中的數(shù)組類型有何特點(diǎn)?

  【解答】

  1) 數(shù)組一般用于存儲(chǔ)同一種類型的數(shù)據(jù),包括object類型。

  2) 數(shù)組是一種引用類型,而不是值類型。

  3) c#中除了可以有一維數(shù)組、多維數(shù)組外,還有交錯(cuò)型數(shù)組。

  5. c#中不同整型之間進(jìn)行轉(zhuǎn)換的原則是什么?

  【解答】

  在整型之間進(jìn)行轉(zhuǎn)換時(shí),小范圍類型可以隱式轉(zhuǎn)換為大范圍類型,但大范圍類型轉(zhuǎn)換為小范圍類型時(shí)需要使用顯式轉(zhuǎn)換。

  6. 簡(jiǎn)述裝箱和拆箱的過程。

  【解答】

  裝箱是將值類型隱式地轉(zhuǎn)換為object類型或者轉(zhuǎn)換為由該值類型實(shí)現(xiàn)了的接口類型。裝箱一個(gè)數(shù)值會(huì)為其分配一個(gè)對(duì)象實(shí)例,并把該數(shù)值拷貝到新對(duì)象中。拆箱是顯式地把object類型轉(zhuǎn)換成值類型,或者把值類型實(shí)現(xiàn)了的接口類型轉(zhuǎn)換成該值類型。

  7. 下列寫法哪些是錯(cuò)誤的?為什么?

  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) 錯(cuò)誤。if中的條件表達(dá)式結(jié)果不是布爾型。

  2) 正確。

  3) 錯(cuò)誤一:temp沒有定義。

  錯(cuò)誤二:在foreach塊內(nèi),test作為枚舉成員是只讀的,不能使用test++修改其值。

  4) 錯(cuò)誤。console后應(yīng)該是點(diǎn),而不應(yīng)該是大于號(hào)。

  8. 錯(cuò)誤和異常有什么區(qū)別,為什么要進(jìn)行異常處理,用于異常處理的語句有哪些?

  【解答】

  錯(cuò)誤是指在執(zhí)行代碼過程中發(fā)生的事件,它中斷或干擾代碼的正常流程并創(chuàng)建異常對(duì)象。當(dāng)錯(cuò)誤中斷流程時(shí),該程序?qū)L試尋找異常處理程序(一段告訴程序如何對(duì)錯(cuò)誤做出響應(yīng)的代碼),以幫助程序恢復(fù)流程。換句話說,錯(cuò)誤是一個(gè)事件,而異常是該事件創(chuàng)建的對(duì)象。

  當(dāng)使用短語“產(chǎn)生異常”時(shí),表示存在問題的方法發(fā)生錯(cuò)誤,并創(chuàng)建異常對(duì)象(包含該錯(cuò)誤的信息及發(fā)生的時(shí)間和位置)來響應(yīng)該錯(cuò)誤。導(dǎo)致出現(xiàn)錯(cuò)誤和隨后異常的因素包括用戶錯(cuò)誤、資源失敗和編程邏輯失敗。這些錯(cuò)誤與代碼實(shí)現(xiàn)特定任務(wù)的方法有關(guān),而與該任務(wù)的目的無關(guān)。

  如果不進(jìn)行異常處理,即不對(duì)錯(cuò)誤做出響應(yīng),程序的健壯性就會(huì)大打折扣,甚至無法保證正常運(yùn)行,所以必須要進(jìn)行異常處理。

  用于異常處理的語句有:try-catch語句、try-catch-finally語句、throw語句。

  9. 編寫一個(gè)控制臺(tái)應(yīng)用程序,輸出1到5的平方值,要求:

  1) 用for語句實(shí)現(xiàn)。

  2) 用while語句實(shí)現(xiàn)。

  3) 用do-while語句實(shí)現(xiàn)。

  【解答】

  using system;
  using system.collections.generic;
  using system.text;
  namespace outputsquarevalue
  {
  class program
  {
  static void main()
  {
  //用for語句實(shí)現(xiàn)
  for (int i = 1; i <= 5; i++)
  {
  console.writeline("{0}的平方值為{1}", i, i * i);
  }
  //用while語句實(shí)現(xiàn)
  int j = 0;
  while (j++ < 5)
  {
  console.writeline("{0}的平方值為{1}", j, j * j);
  }
  //用do-while語句實(shí)現(xiàn)
  int k = 1;
  do
  {
  console.writeline("{0}的平方值為{1}", k, k * k);
  } while (k++ < 5);
  console.readline();
  }
  }
  }

  10. 編寫一個(gè)控制臺(tái)應(yīng)用程序,要求用戶輸入5個(gè)大寫字母,如果用戶輸入的信息不滿足要求,提示幫助信息并要求重新輸入。

  【解答】

  using system;
  using system.collections.generic;
  using system.text;
  namespace inputcapitalletter
  {
  class program
  {
  static void main()
  {
  bool ok = false;
  while (ok == false)
  {
  console.write("請(qǐng)輸入5個(gè)大寫字母:");
  string str = console.readline();
  if (str.length != 5)
  {
  console.writeline("你輸入的字符個(gè)數(shù)不是5個(gè),請(qǐng)重新輸入。");
  }
  else
  {
  ok = true;
  for (int i = 0; i < 5; i++)
  {
  char c = str[i];
  if (c < 'a' || c > 'z')
  {
  console.writeline("第{0}個(gè)字符“{1}”不是大寫字母,請(qǐng)重新輸入。", i + 1, c);
  ok = false;
  break;
  }
  }
  }
  }
  }
  }
  }

  11. 編寫一個(gè)控制臺(tái)應(yīng)用程序,要求完成下列功能。

  1) 接收一個(gè)整數(shù)n。

  2) 如果接收的值n為正數(shù),輸出1到n間的全部整數(shù)。

  3) 如果接收的值為負(fù)值,用break或者return退出程序。

  4) 轉(zhuǎn)到(1)繼續(xù)接收下一個(gè)整數(shù)。

  【解答】

  using system;
  using system.collections.generic;
  using system.text;
  namespace testoutput
  {
  class program
  {
  static void main()
  {
  while (true)
  {
  console.write("請(qǐng)輸入一個(gè)整數(shù)(負(fù)值結(jié)束):");
  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("你輸入的不是數(shù)字或超出整數(shù)的表示范圍,請(qǐng)重新輸入");
  }
  }
  }
  }
  }

  12. 編寫一個(gè)控制臺(tái)應(yīng)用程序,求1000之內(nèi)的所有“完數(shù)”。所謂“完數(shù)”是指一個(gè)數(shù)恰好等于它的所有因子之和。例如,6是完數(shù),因?yàn)?=1+2+3。

  【解答】

  using system;
  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();
  }
  }
  }

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永顺县| 乌海市| 兰西县| 磴口县| 冷水江市| 安乡县| 三河市| 曲麻莱县| 襄汾县| 若羌县| 南靖县| 崇信县| 淅川县| 鹤岗市| 鸡东县| 金山区| 中超| 马山县| 吐鲁番市| 徐州市| 佛冈县| 时尚| 冀州市| 鱼台县| 阿克苏市| 克山县| 安泽县| 东至县| 汝州市| 马龙县| 囊谦县| 鄢陵县| 赣榆县| 浑源县| 奈曼旗| 平潭县| 衡南县| 五家渠市| 南皮县| 龙胜| 攀枝花市|