文章出處

一、下面是一個由*號組成的4行倒三角形圖案。

要求:

1、輸入倒三角形的行數,行數的取值3-21之間,對于非法的行數,要求拋出提示“非法行數!”;

2、在屏幕上打印這個指定了行數的倒三角形。

*******
*****
  ***
   *

static void Main(string[] args)
        {

            //1、每行需要填充的星號個數2*RowNum-1,
            //2、假設有RowNum行,每行需要輸出的元素總個數(包含空格占位符):2*RowNum-1
            //3、從左邊到右邊開始填充的位置Position=RowNum - RowIndex
            Console.WriteLine("請輸入行數");
            int RowNum=Convert.ToInt32( Console.ReadLine());      //總的行數
            while (RowNum<3 ||RowNum>21)                          //判斷輸入是否合法
            {
                Console.WriteLine("總行數小于3或者大于21,請重新輸入");
                RowNum=Convert.ToInt32( Console.ReadLine());
            }
            int ToFillCounter;
            for (int RowIndex = RowNum; RowIndex>0; RowIndex--)       //控制行
            {
                 ToFillCounter = 1;
                for (int ColumnIndex = 0; ColumnIndex < 2*RowNum-1; ColumnIndex++)//控制列
                {
                    if (RowNum - RowIndex <= ColumnIndex && ToFillCounter<=2*RowIndex-1)
                    {
                        Console.Write('*');
                        ToFillCounter++;
                    }
                    else
                    {
                        Console.Write(' ');
                    }
                }
                Console.WriteLine();
            }
        }

截圖:

image

 

二、一個文本文件含有如下內容,分別表示姓名和成績:

張三 90
李四 96
王五 78
趙六 82

提供用戶一個控制臺界面,允許用戶輸入要查詢的姓名,輸入姓名并且按回車以
后,打印出此人的成績,如果不輸入姓名直接按回車則顯示所有人的姓名以及成
績。(注意:不能使用數據庫)

static void Main(string[] args)
        {
            String Path = @"D:\Data.txt";

            if (!System.IO.File.Exists(Path))
            {
                Console.WriteLine("要讀取的文件不存在");
                return;
            }

            Console.WriteLine("請輸入要查詢的名稱");
            //1、讀取用戶輸入的指令。要嘛回車、要嘛姓名 
            string Request = Console.ReadLine();
            //2、讀取文件(打開文件、文件是否存在、按行讀取)
            using (StreamReader file = new StreamReader(Path, System.Text.Encoding.Unicode))
            {
                bool IsShowAllData = string.IsNullOrEmpty(Request.Trim());
                if (IsShowAllData)
                {
                    Console.WriteLine(file.ReadToEnd());
                }
                else
                {  //3、按行查找文件中的內容
                    string LineReaded = string.Empty;
                    while (!file.EndOfStream)
                    {
                        LineReaded = file.ReadLine();
                        //4、找到了
                        if (LineReaded.Contains(Request))
                        {
                            Console.WriteLine(LineReaded);
                            return;
                        }
                    }
                    Console.WriteLine("沒找到指定信息");//沒找到輸出提示信息
                }
                //5、關閉文件
                file.Close();
            }
        }

結果截圖:

image

 

三、說出TCP和UDP之間的區別,各有什么優缺點?

傳輸層的兩大協議TCPUDP,到底用哪一個?這是所有基于網絡通訊的應用程序在設計、開發時需要考慮的。

下面,我們先分別來看看TCP和UDP的優缺點,在后面,再來分析一下,什么時候該用TCP什么時候該用UDP

TCP的優點

  • 可靠,穩定
    TCP的可靠體現在TCP在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源。

TCP的缺點

  • 慢,效率低,占用系統資源高,易被攻擊
    TCP在傳遞數據之前,要先建連接,這會消耗時間,而且在數據傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺設備上維護所有的傳輸連接,事實上,每個連接都會占用系統的CPU、內存等硬件資源。
    而且,因為TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

UDP的優點

  • 快,比TCP稍安全
    UDP沒有TCP的握手、確認、窗口、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協議,所以它在傳遞數據時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊……

UDP的缺點

  • 不可靠,不穩定
    因為UDP沒有TCP那些可靠的機制,在數據傳遞時,如果網絡質量不好,就會很容易丟包。

基于上面的優缺點,那么:

什么時候應該使用TCP
當對網絡通訊質量有要求的時候,比如:整個數據要準確無誤的傳遞給對方,這往往用于一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸文件的協議,POP、SMTP等郵件傳輸的協議。
在日常生活中,常見使用TCP協議的應用如下:

  • 瀏覽器,用的HTTP
  • FlashFXP,用的FTP
  • Outlook,用的POP、SMTP
  • Putty,用的Telnet、SSH
  • QQ文件傳輸
  • …………

什么時候應該使用UDP
當對網絡通訊質量要求不高的時候,要求網絡通訊速度能盡量的快,這時就可以使用UDP。
比如,日常生活中,常見使用UDP協議的應用如下:

  • QQ語音
  • QQ視頻
  • TFTP
  • ……

以上《說出TCP和UDP之間的區別,各有什么優缺點? 》轉載自http://www.ctowhy.com/132.html


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()