一步一步跟着杨中科.net视频学c#基础(2)

2011.2.19晚上

接着上一篇http://www.cnblogs.com/CarreyWu/archive/2011/02/19/base_of_c_sharp.html#2029489

学习扬中科有关.net视频c#基础后总结的知识要点:这些知识点都是在视频中讲到或课件中涉及到的,本人将它们搜集整理并和大家分享希望对想学.net的朋友能有所帮助

(特别声明下:本人整理的代码全是本人用键盘一行一行敲出来的,可能一些表达方法和大家不太一样,见笑了)

16.eg1:用while计算1到100之间的整数和。代码如下:

           int i=1;                 //在VS控制台下运行

           int result=0;

           while(1<=100)

           {

             result=result+i;

             i++;

            }

            Console.WriteLine(result);

            Console.ReadKey();

   eg2:要求用户输入用户名密码,只要不是admin和888888,就一直提示要求重新输入。代码如下:

            Console.WriteLine("请输入用户名:");
            string user =Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string pwd = Console.ReadLine();
            while (user != "admin" || pwd != "888888")      //注意字符串的写法,"admin"
            {
                Console.WriteLine("您输入的用户名或密码错误,请重新输入:");
                Console.WriteLine("请重新输入用户名:");
                user = Console.ReadLine();
                Console.WriteLine("请重新输入密码:");
                pwd = Console.ReadLine();
            }
            Console.WriteLine("欢迎登录!");
            Console.ReadKey();

   eg3:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出(return)。代码如下:

           while (true)
            {
                Console.WriteLine("请输入一个数字");
                string strinput = Console.ReadLine();
                if (strinput == "q")    //if语句的位置很重要,如果把if语句放在后面就会出现BUG,原因是"q"不能被转换为int型
                {
                    return;   //执行到return的时候就退出整个函数(Main),while也就不会继再继续执行下去了,而控制台程序一旦Main退出程序也就退出了
                }
                int input = Convert.ToInt32(strinput);
                Console.WriteLine("所输入的数字的两倍是:{0}", input * 2);
               
            }
            Console.ReadKey();

   eg4:不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值。设一个变量int max,初始值为0,用户每输入一次就把用户输入的和max比较一下,如果输入的必max大,则让max等于用户输入。代码如下:

             int max = 0;
            while(true)
            {
                Console.WriteLine("请输入一个正整数(结束输入end):");
                string input = Console.ReadLine();
                if (input == "end")
                {
                    Console.WriteLine("所输入的最大值为{0}", max);  //注意if语句的位置和Console.ReadKey();+return;的位置
                    Console.ReadKey();
                    return;
                }
                int num = Convert.ToInt32(input);
                if (num > max)
                {
                    max = num;
                }
             }

17.循环的中断

    ●break:立即终止整个循环。  //与return区别
    ●continue:立即终止当前循环步骤,进行下一次循环步骤。  //终止本次循环

     eg:
            int i = 0;
            while (i < 15)
            {
                Console.WriteLine("i={0}", i);
                i++;
                if (i == 10)
                {
                    break;            //终止while循环,继续while后面的代码
                    //continue;       //终止while本次循环,继续while后面的代码
                    //return;         //终止当前执行的函数,后面的代码不会再执行
                }
                Console.WriteLine("自增以后i={0}",i);
            }
            Console.WriteLine("before ReadKey");
            Console.ReadKey();         

     �  练习1:用while continue  实现计算 1 到 100 之间的除了能被7 整除之外所有整数的和。 
     �  练习2:用while break 实现要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。
     �  练习3:编写聊天机器人,如果问“今天天气怎么样?”则回答天气  ,如果问 ……,如果说“88”,则“再见” 。

.........待续

18.foreach循环

       string[] names = {"tom","jerry","lily"};

       foreach(string name in names)    //string name声明一个变量名

         {

              Console.WriteLine("我的名字是:{0}",name);

         }  

      foreach和for的区别:for可以不猪哥遍历,比如每隔一个遍历一个,或者从后往前遍历。

19. 函数:

      ●     函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用她来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我。要求的数据就叫参数,返回的执行结果就叫返回值。

      ●     Console.ReadLine就是一个有返回结果的函数;

             Console.WriteLine("HELLO")就是一个有执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印;

             int i = Convert.ToInt32("22")则是一个既有参数又有返回值的函数。

      ●     有了函数写代码就像拼积木,c#中的各种各样的技术其实就是通过for,if等这些基础的语法将不同的函数按照一定的逻辑组织起来。

     eg:自己写函数:

          1.读取输入的整数,定义成函数,多次调用:

              static int ReadInt()

                {

                   String s = Convert.ReadLine();

                   return Convert.ToInt32(s);

                }  

             写程序测试,程序调用到函数的时候是进入函数内部执行的,执行完毕再继续向下执行。

              static void Main(string[] args)

               {

                    int i = ReadInt();

                    i++;

                    Console.WriteLine(i);

                 }

          2.函数如果没有返回值则标记返回值类型为void;

              static void SayHello()

              {

                 Console.Write("HelloWord~!");

                 return;

              }

          3.return语句:导致函数立即返回。在返回值为void的函数中return,在返回值非void的函数中return数值。

             static int Call(string name)

              {

                 if(name=="tom")

                    { return 1 ; }

                 if(name=="jok")

                    { return 0 ; }

                 return -1 ;

               }

             static string ReadIt()

              {

                    string name = Console.ReadLine();

                    return name ;

               }

20.函数参数:

     eg:

         1. 计算两个整数中的最大值:int Max(int i1 , int i2)

               static void Main(string[] args)

                  {

                     int a = Max(50,97);

                     Console.WriteLine(a);

                     Console.ReadKey();

                   }

               static int Max(int i1,int i2)

                 {

                    if(i1>i2)

                      {return i1 ; }

                    return i2;   //此处else可以省略

                 }

         2.计算输入数组的和:int Sum(int[] values)

               static void Main(string[] args)

                  {

                      int[] values = {4,5,6,7,8};

                      int sum = Sum(values);

                      Console.WriteLine(sum);

                      Console.ReadLine();

                   }

               static int Sum(int[] values)

                  {

                       int a = 0;

                       for(int i=0;i<values.length;i++)

                            {

                                 a = a + values[i];

                             }

                       return a;

                       //上面语句也可写作:

                       //int a = 0;

                       //foreach(int i in values)

                       //{

                       //   a = a + i ;

                       //}

                       //return a;

                       //

                   }

         3.确定函数参数的原则:自己能确定的数据自己内部解决,自己确定不良的数据通过参数传递。

         4.string[] strs={"aa","435","sdf","tre"}返回给我一个字符串,然后字符串使用我指定的分隔符来进行分割,比如我指定用“|”分割,那么返回给我

            “aa|435|sdf|tre”。

               static void Main(string[] args)

                {

                    string[] strs ={"aa","435","sdf","tre"};

                    Console.WriteLine(Test(strs,"|"));

                    Console.ReadKey();

                 }

               static string Test(string[] strs,string seperator)

                {

                    string abc = "" ;

                    for(int i=0;i<strs.length-1;i++)

                        {

                             abc =abc + strs[i] + seperator ;

                         }

                   abc = abc + strs[strs.(length-1)] ;

                   return abc ;

                 }

21.可变参数:

          1.参数数组:int sum(params int[] values) ; int sum(string name,params int[] values)

             ● 可变参数数组必须是最后一个

             Console.Write()函数的参数即为可变参数,其参数可以无限制的增加。

            eg:

               static void Main(string[] args)

                 {

                       SayHello("Jim","Lily","Jone","Luky","无休止的可变参数");
                       Console.ReadKey();

                 }

               static void SayHello(string name,params string[] nicknames)

                 {

                      Console.WriteLine("我的名字是:{0}",name);

                      foreach (string nickname in nicknames)

                      {

                          Console.WriteLine("我的昵称是:{0}",nickname) ;

                      }

                 }

          2.参数默认值(.NET4.0):void

             SayHello(string name,int age=20) (*了解)  //是用函数重载实现的

22.函数重载:(函数重名)

          1.函数的重名:

             eg: 1,3编写错误;2,4编写正确。

                1.static void SayHello(string name)

                   {

                      Console.WriteLine("我是{0}",name);

                   }            

                 static void SayHello(string name)

                   {

                      Console.WriteLine("i am{0}",name);

                   }

                2.static void SayHello(string name)

                   {

                      Console.WriteLine("我是{0}",name);

                   } 

                  static void SayHello(int age)

                    {

                       Console.WriteLine("我的年纪是{0}",age);

                    }

              3.static void SayHello(string name)

                   {

                      Console.WriteLine("我是{0},name");

                   }

                static int SayHello(string name)

                   {

                      return 10;

                   }   

             4.static void SayHello(string name)

                  {

                      Console.WriteLine("我是{0}",name);

                  }

               static void SayHello(string name,string nickname)

                  {

                      Console.WriteLine("我是{0},昵称是{1}",name,nickname);

                  }

             ● 构成重载的条件:参数的类型不同或参数的个数不同才能构成重载(不严谨),与返回值无关。

 

 

 

 

接下一篇:http://www.cnblogs.com/CarreyWu/archive/2011/03/11/base_of_Csharp_03.html

 

 

 

 

 

 

  

posted on 2011-02-20 02:02  CarreyWu  阅读(4979)  评论(1编辑  收藏  举报

导航