C# 基础学习第一天

来源:互联网 发布:js字符串转正则表达式 编辑:程序博客网 时间:2024/05/18 20:11

 C#基础

.Net开发环境

开发工具:visual studio

语言 C# VB.Net F#

.net Framework 提供函数库、类库提供公共类的函数库

应用程序---.net Framework----CLR----操作系统

应用程序与操作系统隔一层作用:中间转换作用,不管操作系统是XP Window 不直接与操作系统打交道,是与.net Framwork打交道,至于.net Framwork怎么与操作系统打交道,不需要知道。

优点:更安全,更省心,代码托管,罕用指针,垃圾回收。平台无关语言无关,VB写的类 C#也可以调用。

.net 1.1 2.0 3.X 4.X    向后兼容    2003 2005 2008 2010 快捷版标准版专业版团队版(没啥区别,微软定价策略)

 

第一个程序:

           Console.WriteLine("Hello");//打印输出

            string s= Console.ReadLine();//用户输入文字的时候是暂停的输入完毕点回车,把用户输入的东西做为返回值,声明一个string类型的变量(容器)s,用s来放writeline函数返回的值。

            Console.WriteLine(s);

            Console.ReadKey();//按一个按键继续执行

 

            int i1 = 10;

            int i2 = 20;

            Console.WriteLine(i1+"+"+i2+"="+i1+i2);//输出1020

            Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);//输出10+20=30

//输入的小例子

            Console.WriteLine("请输入男孩的名字");

            string boy = Console.ReadLine();

            Console.WriteLine("请输入女孩的名字");

            string girl = Console.ReadLine();

            Console.WriteLine("{0}{1}",boy,girl);

            Console.ReadKey();//按一个按键继续执行

字符:

String 字符串 int 整型 char a“a”string  bool 布尔(或真或假)

转义:

String s = “”ab””//不通过“开始”结束

String s = “\”ab\” 输出ab“使用转义符因为编译器遇到”开始字符串在遇到“结束字符串,如果遇到前面有\就不把他当成有字符串开始结束意义的符号了。

String s = “a\nb” //n:newline 换行转义符

输出\  string s = “a\\b”  输出 a\b

String s= @”\\\\”  //@表示字符串中的\不当成转义符  只针对转义符\起作用对““不起作用

 

 

输入a\b 输出也是a\b 只关心代码输入无关程序

string str = Console.ReadLine();

Console.WriteLine(str);

Console.ReadKey();

 

简单的类型转换

Convert.ToString32();

简单的加法程序

            Console.WriteLine("请输入第一个数值");

            string s1 = Console.ReadLine();

            int i1 = Convert.ToInt32(s1);

            Console.WriteLine("请输入第二个数值");

            string s2 = Console.ReadLine();

            int i2 = Convert.ToInt32(s2);

            Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);

            Console.ReadKey();

 

精简版      Console.WriteLine("请输入第一个数值");

            int i1 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("请输入第二个数值");

            int i2 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("{0}+{1}={2}", i1, i2, i1 + i2);

            Console.ReadKey();

       

变量命名  

第一个字符必须是字母或者下划线_其后的字符可以是任意个数字,字符下划线,不可以使用关键字VS蓝色的就是关键字。

 

string Name = Console.ReadLine();

            Console.WriteLine(Name);

            Person p1 = newPerson();

            p1.Age = 20;

            p1.speak();

            Console.ReadKey();

 类:

            classPerson

    {

        publicint Age

        {

            get;set;

        }

        publicvoid speak()

        {

            Console.WriteLine("Hello");

        }

    }

运算符、表达式

+ 可以用作字符串连接,其他不可以

练习题1: Console.WriteLine("请输入第一个数值");

            string s1 = Console.ReadLine();

            int i1 = Convert.ToInt32(s1);

            Console.WriteLine("请输入第二个数值");

            string s2 = Console.ReadLine();

            int i2 = Convert.ToInt32(s2);

            Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);

            Console.ReadKey();

赋值

      int i = 30;

      console.writeLine("{0}",i==1);//结果是flase

      console.writeLine("{0}",i=1);//结果1  C#中赋值表达式页有值,它的值表示为赋值后变量的值

练习1:提示用户输入密码,如果密码是“88888”则提示正确,否则提示错误      

      Console.WriteLine("请输入密码");

      string s1 = Console.ReadLine();

      if (s1 == "888888")

      {

          Console.WriteLine("密码正确");

      }

      else

      {

           Console.WriteLine("密码错误");

      }


练习2:提示用户输入面,如果密码是“888888”则提示正确,否则要求再输入一次,如果密码是“888888”则提示正确,否则提示错误。

       Console.WriteLine("请输入密码");

       string s1 = Console.ReadLine();

       if (s1 == "888888")

       {

           Console.WriteLine("密码正确");

       }

       else

       {

           Console.WriteLine("密码错误,请重新输入");

           string s2 = Console.ReadLine();

           if (s2 == "888888")

           {

               Console.WriteLine("密码正确");

           }

           else

           {

               Console.WriteLine("密码错误");

            }

           Console.ReadKey();

         }


练习3:提示用户输入用户名,然后再提示输入数码,如果用户名是“admin”并且密码是"888888",则提示正确,否则提示错误,如果用户名不是admin还提示用户名不存在。

            Console.WriteLine("请输入用户名:");

            string s1 = Console.ReadLine();

            Console.WriteLine("请输入密码:");

            string s2 = Console.ReadLine();

            if (s1 != "admin")

            {

                Console.WriteLine("用户名不存在");

            }

            else if (s1 == "admin" && s2 == "888888")

            {

           

                Console.WriteLine("正确");

            }

            else

            {

                Console.WriteLine("错误");

            }

            Console.ReadKey();


练习4:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户可以差可能啊,否则提示不可以查看。

            Console.WriteLine("请输入年龄");

            string s1 = Console.ReadLine();

            int i1 = Convert.ToInt32(s1);

            if (i1 >= 18)

            {

                Console.WriteLine("可以查看");

            }

            else if (i1 < 10)

            {

                Console.WriteLine("不允许查看");

            }

            else if (i1 >= 10)

            {

                Console.WriteLine("是否继续查看:yes、no");

                string s2 = Console.ReadLine();

                if (s2 == "yes")

                {

                    Console.WriteLine("可以查看");

                }

                else

                {

                    Console.WriteLine("不允许查看");

                }

              }

              Console.ReadKey();


练习5:依次提示用户输入两个整数(假设i1、i2)如果i1、i2都是正数,则将i1的值递增一个数,然后打印i1*i2的值;如果i1、i2中任一个为0,则提示数据有错误;否则计算i1*i2的绝对值。

            Console.WriteLine("请输入第一个正数");

            string s1 = Console.ReadLine();

            int i1 = Convert.ToInt32(s1);

            Console.WriteLine("请输入第二个正数");

            string s2 = Console.ReadLine();

            int i2 = Convert.ToInt32(s2);

            if (i1 >0 && i2 > 0)

            {

                i1 = i1+1;

                Console.WriteLine("{0}",i1+i2);

            }

            else if (i1 <0 && i2 <=0)

            {

                i1 = i1 - 10;

                Console.WriteLine("{0}*{1}={2}",i1,i2,i1*i2);

            }

            else if (i1 == 0 || i2 == 0)

            {

                Console.WriteLine("数据有误!");

            }

            else

            {

                int i3 = i1 * i2;

                if (i3 < 0)

                {

                    i3 = -i3;

                }

                Console.WriteLine("{0}*{1}的绝对值是:{2}",i1,i2,i3);

             }

       

switch case学习

    int i = 20;

            switch (i)

            {

                case 2://if(i==2)

                    Console.WriteLine("你真2");

                    break;

                case 3://if(i=3||i=4)

                case 4://if(i=3||i=4)

                    Console.WriteLine("你才二");

                    break;

                default:

                    Console.WriteLine("你输入的{0}没有意义",i);

                    break;

            }

总结:类似于if...else...esle if...else 但是是离散值的判断

      switch 一般都可以用if重新写,但是if不一定能用switch重写

      不要忘了break C#中的break不写是不行的。


while循环

      while(i<100)           

      {                      

        //打印i;

         i++;

      }

      //只要while后小括号中的表达式为true,就不断执行大括号中的代码。

      do 

      {

        //打印i 

         i++;

       } 

       while(i<100)//先做,至少被执行一次,直至while表达式为false

练习1:用while计算1到100之间整数的和;

      int i = 0, s = 0;

      while(i<=100)

      {

         s=s+i;

         i++;

       }

       Console.WriteLine(s);

       Console.ReadKey();


练习2:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入

            Console.WriteLine("请输入用户名:");

            string s1 = Console.ReadLine();

            Console.WriteLine("请输入密码:");

            string s2 = Console.ReadLine();

            while (s1 != "admin" || s2 != "888888")//反向思维,只要有一项不满足就行。

            {

                Console.WriteLine("请输入用户名:");

                s1 = Console.ReadLine();

                Console.WriteLine("请输入密码:");

                s2 = Console.ReadLine();

            }

             Console.ReadKey();


第二种方法:

            while (true)

            {

                Console.WriteLine("请输入用户名");

                string username = Console.ReadLine();

                Console.WriteLine("请输入密码:");

                string password = Console.ReadLine();

                if (username == "admin" && password == "888888")

                {

                    Console.WriteLine("登录成功");

                    break; //终止循环

                }

            }

            Console.ReadKey();


练习3:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。,

            while(true)

            {

                Console.WriteLine("请输入数字");

                string s1 = Console.ReadLine();

                if(s1=="q")

                {

                    return;

                }

                else

                {

                    int a1 = Convert.ToInt32(s1);

                    a1 = a1 * 2;

                    Console.WriteLine(a1);

                }


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

int max = 0;

            while (true)

            {

                Console.WriteLine("请输入一个数值");

                string s = Console.ReadLine();

                if (s == "end")

                {

                    Console.WriteLine(max);

                    Console.ReadKey();

                    return;    

                }

                int a = Convert.ToInt32(s);

                if (a > max)

                {

                    max = a;

                }

            }



第一题:聊天机器人(第一版本)

           //聊天机器人

            Console.WriteLine("你好,我是聊天机器人!");

            int fullLevel = 5;//设置初始值,初始值必须在while外设置

            while (true)

            {

                string str = Console.ReadLine();

               

                if (fullLevel <= 0)

                {

                    Console.WriteLine("不聊了,饿死了!!喂我点吃的吧");

                    string food1 = Console.ReadLine();

                    int food = Convert.ToInt32(food1);

                    if (food <= 0)

                    {

                        Console.WriteLine("你耍我呢!!!");

                        Console.ReadKey();

                        return;

                    }

                    if (food > 10)

                    {

                        Console.WriteLine("撑死我了!!!!");

                        Console.ReadKey();

                        return;

                    }

                    fullLevel = fullLevel + food;

                    continue;

                }

               

                if (str == "今天天气怎么样?")

                {

                    Console.WriteLine("天气很好啊");

                }

                else if (str == "你有女朋友吗?")

                {

                    Console.WriteLine("我没有女朋友,因为我才18岁!");

                }

                else if (str == "你快毕业了吗?")

                {

                    Console.WriteLine("我才十八岁,还在上学呢!");

                }

                else if (str == "88")

                {

                    Console.WriteLine("886");

                    Console.ReadKey();

                    return;

                }

                else

                {

                    Console.WriteLine("你从火星来的吗?能说普通话吗?");

                }

                fullLevel--;

            }


总结:

第一步:机器人问好,我来提问

               string str = Console.ReadLine(); 

第二步:当 str=="?"打印输出.....

              输入与输出都不相等时......打印输出什么

              return; 前加console.ReadKey();

第三步:机器人会饿需要喂食

              设定局部变量int fulllevel=5;初始值为5

              如果fullLevel<=0提醒"饿了~"

              记录用户输入的字符串并转化成int型

              判断用户输入food的数值

              喂食=0时 提示”逗我玩呢“return;退出程序

              喂食>10时 提示“撑死我了”return;退出程序

              如果都不是 fullLevel=fullLevel+food;continue;

              继续聊天(fullLevel--;)

For循环

            int sum = 0;

            for(int i=200;i<301;i++)

            {

                sum = sum + i;

            }

            Console.WriteLine("{0}",sum);

            Console.ReadLine();


 Cast:类型转换

      只有内存存储上存在交集的类型之间才能进行Cast,否则则不可以。

      比如不可以,int i;string s =(string)i;这种情况必须使用Convert类提供方法来解决。

      例如:string s ="123";

            int i = (int)s;//错误,不能在Int、string之间进行强制类型转换,只能用convert

            正确做法:int i = convert.toint32(s);

            console.ReadKey();

Convert类型转化

       Convert不再是内存级别的转化,而是考虑数据意义转换,可以把姓名convert成人,convert是一个加工、改造的过程。Convert.ToInt32(?);

   

枚举://限定变量的取值范围,必须确定几种选择范围内之后才可以声明枚举

      确定数量、确定值的几个取值:东西南北、男女、上中下。

      和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方面。

       enum Gender {Male,Female,Unkown };//声明枚举

       enum QQStatus {online,offline,hiden} //语法

       Gender g = Gender.Female;

       QQStatus status = QQStatus.online;

示例: namespace 枚举的学习

 {

    enum Gender {Male,Female,Unkown };//声明枚举

    enum QQStatus {online,offline,hiden}

    enum Direction {east,south,west,north }

    class Program

    {

        static void Main(string[] args)

        {

           Gender g = Gender.Female;//声明枚举就限定了值,一定就是这三个其中的一个值了

         

            QQStatus status = QQStatus.online;

            Direction str = Direction.east;

        }

    }

  }

return;与break;的区别

return;后,直接退出程序。break;只是终止本次循环.


后续...


        

 



              




0 0
原创粉丝点击