黑馬程序員考試題

題目一
 文本文件中存儲了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,每行一個,標題有的長有的短,輸出到控制檯的時候最多標題長度10,如果超過10,則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。

namespace test1
{
    class Program
    {
        /*文本文件中存儲了多個文章標題、作者,標題和作者之間用若干空格(數量不定)隔開,
          每行一個,標題有的長有的短,輸出到控制檯的時候最多標題長度10,
          如果超過10,則截取長度8的子串並且最後添加“...”,加一個豎線後輸出作者的名字。*/

        static void Main(string[] args)
        {
            //把文本中的信息讀取出來
            String[] lines = File.ReadAllLines(@"D:\C#\exam\test1\test1.txt",Encoding.Default);
            //遍歷每行
            foreach (String line in lines)
            {
                //以空格作爲分隔符,返回分割的子字符串
                String[] zh=line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
                //取得標題
                String title=zh[0];
                //取得作者
                String author=zh[1];
                //截取標題長度
                String title1=title.Substring(0);
                //標題長度是否大於10
                if (title.Length>10)
                {
                    //截取標題長度,取前八位
                    title1 = title.Substring(0, 7);
                    //後面的位數用...填充
                    title1 = title1 + "...";
                }
                Console.WriteLine("{0}|{1}", title1, author);
            }
            Console.ReadKey();
        }
        /*這個不太好想*/
    }
}

題目二

 定義兩個int類型的變量如:a和b分別賦值爲10和5,不借助第三方變量寫程序交換兩個變量的值。

namespace test2
{
    class Program
    {
        /*定義兩個int類型的變量如:a和b分別賦值爲10和5,
          不借助第三方變量寫程序交換兩個變量的值。*/

        static void Main(string[] args)
        {
            //定義兩個整型變量
            int a, b;

            //如果a的值是整型就跳出循環,否則就繼續循環
            while(true)
            {
                Console.WriteLine("請輸入a的值:");
                //接受a的值
                String A = Console.ReadLine();
                if (!(int.TryParse(A, out a)))
                {
                    Console.WriteLine("輸入的類型非法,請重新輸入!");
                }
                else
                {
                    break;
                }
            }

            //如果b的值是整型就跳出循環,否則就繼續循環
            while (true)
            {
                Console.WriteLine("請輸入b的值:");
                //接受b的值
                String B = Console.ReadLine();
                if (!(int.TryParse(B, out b)))
                {
                    Console.WriteLine("輸入的類型非法,請重新輸入!");
                }
                else
                {
                    break;
                }
        }

            //a、b的值進行交換
            a = a + b;
            b = a - b;
            a = a - b;
            Console.WriteLine("交換變量後a的值爲:{0},b的值爲:{1}", a, b);
            Console.ReadLine();

            /*注:交換兩個變量的值是個老生長談的話題,實現方式有很多,但限於個人時間精力有限,
            只寫了一種比較簡單的做法*/
        }
    }
}

題目三

  定義父親類Father(姓firstName,財產wealth,血型blood),兒子Son類(玩遊戲PlayGame),女兒Daughter類(跳舞Dance),調用父類構造函數給子類字段賦值。

namespace test3
{
    //定義父親類
    class Father
    {
        /*定義父親類Father(姓firstName,財產wealth,血型blood),
          兒子Son類(玩遊戲PlayGame),女兒Daughter類(跳舞Dance),
          調用父類構造函數給子類字段賦值。*/

        //父親類的構造函數
        public Father(String firstName, decimal wealth, String blood)
        {
            this.FirstName = firstName;
            this.Wealth = wealth;
            this.Blood = blood;
        }

        //爲firstName字段賦值
        String firstName;
        public String FirstName
        {
            get
            {
                return firstName;
            }
            set
            {
                firstName = value;
            }
        }

        //爲wealth字段賦值
        decimal wealth;
        public decimal Wealth
        {
            get
            {
                return wealth;
            }
            set
            {
                wealth=value;
            }
        }

        //爲blood字段賦值
        String blood;
        public String Blood
        {
            get
            {
                return blood;
            }
            set
            {
                blood=value;
            }
        }

        static void Main(string[] args)
        {
            //實例化son類
            Son son=new Son("張",99999M,"A");
            Console.WriteLine("姓:{0},財產:{1},血型:{2}",son.FirstName,son.Wealth,son.Blood);
            son.PlayGame();

            //實例化daughter類
            Daughter daughter=new Daughter("田",88888M,"B");
            Console.WriteLine("姓:{0},財產:{1},血型:{2}",daughter.FirstName,daughter.Wealth,daughter.Blood);
            daughter.Dance();

            Console.ReadKey();
        }
    }

    //定義Son類,繼承自Father類
    class Son:Father
    {
        //子類的構造函數
        public Son(String SfirstName,decimal Swealth,String Sblood):base(SfirstName,Swealth,Sblood)
        {
                
        }

        //子類的方法
        public void PlayGame()
        {
            Console.WriteLine("玩遊戲PlayGame");
        }
    }

    //定義Daughter類,繼承自Father類
    class Daughter:Father
    {
        //子類的構造函數
        public Daughter(String DfirstName,decimal Dwealth,String Dblood):base(DfirstName,Dwealth,Dblood)
        {
                
        }

        //子類的方法
        public void Dance()
        {
            Console.WriteLine("跳舞Dance");
        }
    }               
    /*此題沒弄明白,參考網友作答*/ 
}     

題目四

 已知一個int類型的數組,用冒泡排序法將數組中的元素按從小到大的順序排列;

namespace test4
{
    class Program
    {
        /* 已知一個int類型的數組,用冒泡排序法將數組中的元素按從小到大的順序排列.*/

        static void Main(string[] args)
        {
            //聲明一個int類型的數組
            int[] arr = { 80, 67, 23, 64, 25, 84, 90, 25 };
            //用兩層for循環實現冒泡排序
            for (int i = 0; i < arr.Length;i++ )
            {
                for (int j = 0; j < arr.Length-1-i; j++)
                { 
                    //從小到大排序
                    if(arr[j]>arr[j+1])
                    {
                       int temp = arr[j];
                           arr[j] = arr[j + 1];
                           arr[j + 1] = temp;
                    }
                }
            }
            Console.WriteLine("該數組經過冒泡排序後,從小到大的排列順序爲:");
            //輸出經過排序後的數組
            for (int i = 0; i < arr.Length;i++)
            {
                Console.Write(arr[i]+"  ");
            }
            Console.ReadLine();
        }
    }
}

題目五

  123-456---789-----123-2把類似的字符串中重複符號去掉,既得到123-456-789-123-2
namespace test5
{
    class Program
    {
        /* 123-456---789-----123-2把類似的字符串中重複符號去掉,
           即得到123-456-789-123-2*/

        static void Main(string[] args)
        {
            //設置標識位
            char fuhao = '@';
            Console.WriteLine("請輸入一串字符串,可以輸入多個連續的符號");
            //接受輸入的字符串
            String strInput=Console.ReadLine();
            //遍歷每一個字符
            for (int i = 0; i < strInput.Length; i++)
            {
                //檢索出每個字符
               char ele = strInput.ElementAt(i);
                //字符是否爲數字型判斷
               if (ele >= '0' && ele <= '9')
               {
                   //爲標識位賦值
                   fuhao = '@';
                   Console.Write(ele);
               }
               else
               {
                   if (ele != fuhao)
                   {
                       Console.Write(ele);
                   }
                   fuhao = ele;
               }                       
            }
            Console.ReadKey();
        }
    }
            /*這段程序自我感覺良好,陶醉中...*/
}

第六題

有1、2、3、4  四個數字,編程實現能組成多少個互不相同且無重複數字的三位數?都是多少?
namespace test6
{
    class Program
    {
        /*有1、2、3、4  四個數字,編程實現能組成多少個互不相同且無重複數字的三位數?
          都是多少?*/

        static void Main(string[] args)
        {
            //定義個位數、十位數、百位數、這個三位數以及三位數的總數
            int i, j, k,z,count=0;
            Console.WriteLine("這些三位數分別爲:");
            //個位數取值
            for (i = 1; i <= 4; i++)
            {
                //十位數取值
                for (j = 1; j <= 4; j++)
                {
                    //百位數取值
                    for (k = 1; k <= 4; k++)
                    {
                        //判斷條件:個位數不等於十位數、個位數不等於百位數並且十位數不等於百位數
                        if ((i != j) && (i != k) && (j != k))
                        {
                            //三位數的個數
                            count++;
                            //三位數字
                            z = i + j * 10 + k * 100;
                            //輸出這個三位數,並且用空格進行間隔
                            Console.Write(z + "   ");
                            //每輸出4個三位數字就換行
                            if (count % 4 == 0)
                            {
                                Console.WriteLine();
                            }
                        }                                                
                    }
                }                
            }
            Console.WriteLine("三位數的總數爲:{0}", count);
            Console.ReadKey();

            /*這是我想到的比較容易理解的寫法,雖然比較麻煩,但思路清晰,便於理解
             還可以再簡化,但限於時間精力有限,以後再完善吧!*/
        }
    }
}

第七題

從鍵盤上輸入兩個整數,由用戶回答它們的和,差,積,商和取餘運算結果,並統計出正確答案的個數。
namespace test7
{
    class Program
    {
        /* 從鍵盤上輸入兩個整數,由用戶回答它們的和,差,積,商和取餘運算結果,
           並統計出正確答案的個數。*/

        static void Main(string[] args)
        {
            //定義兩個整數
            int a, b;

            //如果a的值是整型就跳出循環,否則就繼續循環
            while (true)
            {
                Console.WriteLine("請輸入a的值:");
                //接受a的值
                String A = Console.ReadLine();
                if (!(int.TryParse(A, out a)))
                {
                    Console.WriteLine("輸入的類型非法,請重新輸入!");
                }
                else
                {
                    break;
                }
            }

            //如果b的值是整型並且不爲0就跳出循環,否則就繼續循環(除數不能爲0)
            while (true)
            {
                Console.WriteLine("請輸入b的值:");
                //接受a的值
                String B = Console.ReadLine();
                if (!(int.TryParse(B, out b))||Convert.ToInt32(B)==0)
                {
                    Console.WriteLine("輸入的類型非法,請重新輸入!");
                }
                else
                {
                    break;
                }
            }

            Console.WriteLine("請分別寫出它們的和,差,積,商,取餘運算結果:");
            Console.WriteLine("它們的和爲:");
            //接受用戶輸入的 和
            int he = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("它們的差爲:");
            //接受用戶輸入的 差
            int cha = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("它們的積爲:");
            //接受用戶輸入的 積
            int ji = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("它們的商爲:");
            //接受用戶輸入的 商
            int shang = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("它們取餘爲:");
            //接受用戶輸入的 取餘
            int quyu = Convert.ToInt32(Console.ReadLine());
            //定義正確的個數
            int count = 0;  
            //用戶輸入的和與實際和進行比較
            if (he == (a + b))
            {
                count++;
            }
            //用戶輸入的差與實際差進行比較
            if (cha == (a - b))
            {
                count++;
            }
            //用戶輸入的積與實際積進行比較
            if (ji == (a * b))
            {
                count++;
            }           
            if(shang == (a / b))
            {
                count++;
            }
            //用戶輸入的餘數與實際餘數進行比較
            if (quyu == (a % b))
            {
                count++;
            }
        Console.WriteLine("您回答的正確個數爲:{0}", count);
        Console.ReadKey();

            /*這個程序關鍵是除數不能爲0,我處理的不是太好,直接把除數不能爲0放在了最前面*/
        }
    }
}

第八題

 從一段文本中提取所有的數字。
namespace test8
{
    class Program
    {
        /*從一段文本中提取所有的數字。*/

        static void Main(string[] args)
        {           
            Console.WriteLine("請輸入一段文本信息:");
            //接受文本信息
            string szInput = Console.ReadLine();
            //遍歷文本信息
            for (int i = 0; i < szInput.Length; i++)
            {
                //檢索每一個字符
                char ele = szInput.ElementAt(i);
                //判斷字符是否爲數字
                if (ele >= '0' && ele <= '9')
                {
                    //輸出數字
                    Console.Write(ele+"  ");
                }
            }
            Console.ReadKey();
        }
        /*這段程序我認爲是自己寫的最精簡的*/
    }
}

第九題

在label控件中隨機輸入20個1~1000之間的整數,求出其中所有的素數的和。

namespace test9
{
    public partial class Form1 : Form
    {
        /*在label控件中隨機輸入20個1~1000之間的整數,求出其中所有的素數的和。*/

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //實例化隨機數
            Random r = new Random();
            //保存素數的和
            int sum = 0;
            Console.WriteLine("這20個隨機數爲:");
            for (int i = 1; i <= 20; i++)
            {
                //隨機產生1~1000之間的隨機數
                int n = r.Next(1, 1001);               
                //把值加入到label1中
                txtShuzi.Text+= Convert.ToString(n) + "   ";

                int j;
                //素數判斷
                for ( j = 2; j <= n/2; j++)
                {
                    if (n % j != 0)
                    {
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                if (j > n / 2)
                {
                    txtSushu.Text += n + "    ";
                    sum += n; 
                }
            }
            label1.Text = Convert.ToString(sum);     
        }
        /*寫這個程序費了不少勁,雖然不是最簡單的,但總算是實現了*/
    }
}

第十題

編寫一個擲篩子100次的程序,並打印出各種點數的出現次數。
namespace test10
{
    class Program
    {
        /*編寫一個擲篩子100次的程序,並打印出各種點數的出現次數。*/

        static void Main(string[] args)
        {
            //產生隨機數
            Random rand = new Random();
            //定義Count來存儲各點數出現的次數
            int[] Count = new int[6]{0,0,0,0,0,0};
            Console.WriteLine("輸出的篩子點數分別爲:");
            //控制輸出的行數
            for (int i = 0; i < 5; i++)
            {
                //控制輸出的列數
                for (int j = 0; j < 20; j++)
                {
                    //隨機產生1到6之間的數字
                    int r = rand.Next(1, 7);
                    Count[r - 1]++;
                    Console.Write(r + " ");
                }
                Console.WriteLine("");
            }
            Console.WriteLine("點數1出現的次數爲:{0}", Count[0]);
            Console.WriteLine("點數2出現的次數爲:{0}", Count[1]);
            Console.WriteLine("點數3出現的次數爲:{0}", Count[2]);
            Console.WriteLine("點數4出現的次數爲:{0}", Count[3]);
            Console.WriteLine("點數5出現的次數爲:{0}", Count[4]);
            Console.WriteLine("點數6出現的次數爲:{0}", Count[5]);
            Console.ReadLine();
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章