一步一步跟着杨中科.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