笔记与心得:黑马程序员C#40课基础知识集合(三)
----------------------以下为我在黑马程序员学习期间整理的笔记和心得,期待与您交流! ----------------------
21、while
2013-09-07 00:59:49
while循环的语法:while(条件) //条件叫:循环条件
{
要循环执行的N条程序; //循环体
}
执行过程:1.先判断循环条件,如果条件为ture,则转向2,如果条件为false,则转向3
2.执行循环体,循环体执行完后,转向1
3.跳出循环,循环结束
int i = 0;
while (i < 5)
{
Console.WriteLine("下次考试一定要细心!");
i++;
}
Console.ReadKey();
22、复习-作业讲解
2013-09-07 01:31:20
1.打印100次"欢迎来到传播智客学习." int i = 0;
while (i < 100)
{
Console.WriteLine("欢迎来到传播智客学习!");
i++;
}
Console.ReadKey();
2.输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
Console.WriteLine("请输入你们班有多少人?");
int count=Convert.ToInt32(Console.ReadLine());
int score=0;//存用户输入的分数
int i=0;
int sum = 0;//用于存总成绩
while (i<count)
{
Console.WriteLine("请输入第{0}个学生的成绩",i+1);
score = Convert.ToInt32(Console.ReadLine());
sum = sum + score; //sum+=score;
i++;
}
Console.WriteLine("本班共有{0}人,总成绩为{1}分,平均成绩为{2}分",count,sum,sum/count);
Console.ReadKey();
3.老师问学生,这道题你会做了吗?如果学生答"会了(y)",则可以放学,如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......-知道学生会了为止,才可以放学.
-直到学生会或老师给他讲了10遍还不会,都要放学
Console.WriteLine("这道题你会做了吗?(y/n)");
string answer=Console.ReadLine();
int i = 0;
int b = 0;
while(answer != "y" &&
answer != "n"&&b<1)
{
Console.WriteLine("输入错误!请重新输入!这道题你会做了吗?(y/n)");
answer = Console.ReadLine();
b++;
}
while(answer=="n" && i<10)
{
Console.WriteLine("老师讲一遍题!");
i++;
Console.WriteLine("这道题你会做了吗?(y/n)");
answer = Console.ReadLine();
}
Console.WriteLine("你可以放学了!");
Console.ReadKey();
4.2006年培养了学院8万人,每年增长25%,请问按此增长速度,到哪一年培训学员的人数将达到20万人?
int year = 2006;
double stu = 80000;
while(stu<=200000)
{
stu = stu * 1.25; //计算人数增加25%的值
year++;
}
Console.WriteLine("到{0}年后人数达到20万",year);
Console.ReadKey();
23、do-while
语法:
1.执行循环体,执行完循环体转向2
2.判断条件是否成立,如果条件为ture,则转向1.如果条件为false,则转向3
3.跳出循环,循环结束
假如循环提交一开始就不成立,对于while循环,一次都不会执行,对于to-while循环体一般至少会执行一次
while:先判断,后执行
do-while:先执行,后判断
检测异常
如果try中的代码出现异常,则程序立即跳到catch中
单步运行
观察变量
26、for
语法:
第1步 计算表达式1,转向第2步
第2步 计算表达式2(循环条件),如果表达式2的值为ture转向第3步.如果表达式2的值为false,转向第步
第3步 执行循环体,转向第4步
第4步 执行表达式3,转向第2步
第5步 循环结束
表达式2:循环条件
表达式3:用于改变循环变量的值
2013-09-07 17:17:47
do while语法:
do
{循环体}
while(条件);
执行过程:1.执行循环体,执行完循环体转向2
2.判断条件是否成立,如果条件为ture,则转向1.如果条件为false,则转向3
3.跳出循环,循环结束
假如循环提交一开始就不成立,对于while循环,一次都不会执行,对于to-while循环体一般至少会执行一次
while:先判断,后执行
do-while:先执行,后判断
string answer;
do
{
Console.WriteLine("小兰表演一遍舞蹈!");
Console.WriteLine("老师你满意吗?(y/n)");
answer = Console.ReadLine();
}
while (answer == "n");
Console.WriteLine("跳得不错了,回家好好休息!");
Console.ReadKey();
检测异常
try
{
}
catch
{
}
如果try中的代码没有出异常,则不会执行catch中的代码如果try中的代码出现异常,则程序立即跳到catch中
Console.WriteLine("请输入张三的分数?");
try
{
int seore = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("in try");
}
catch
{
Console.WriteLine("in catch");
}
Console.ReadKey();
string answer;
do
{
Console.WriteLine("小兰表演一遍舞蹈!");
Console.WriteLine("老师你满意吗?(y/n)");
answer = Console.ReadLine();
while (answer != "y" || answer != "n")
{
Console.WriteLine("输入错误");
}
}
while (answer == "n");
Console.WriteLine("跳得不错了,回家好好休息!");
Console.ReadKey();
24、p61练习
2013-09-08 00:29:38
1.计算1到100之间的整数的和; int sum = 0;
int i = 1;
while (i <= 100)
{
sum = sum + i;
i++;
}
2.要求用户输入用户名和密码,只要不是admin/888888,就一直提示用户名或密码错误,请重新输入 string userNmae;
string password;
bool flag=false;
do
{
Console.WriteLine("请输入用户名?");
userNmae = Console.ReadLine();
Console.WriteLine("请输入密码");
password = Console.ReadLine();
if (userNmae != "admin" || password != "88888")
{
Console.WriteLine("用户名或密码错误,请重新输入!");
flag = true;
}
} while (flag);
Console.WriteLine("登陆成功!");
3.不断要求用户输入学生姓名,输入q结束 string input;
do
{
Console.WriteLine("请输入用户姓名?");
input = Console.ReadLine();
} while (input != "q");
Console.WriteLine("程序结束.");
4.不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序结束 int input;
bool flag = false;
{
try
{
Console.WriteLine("请输入一个数字");
input = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0}的两倍是{1}", input, input * 2);
flag = true;
}
catch
{
flag = false;
}
}while(flag)
string input;
int number;
Console.WriteLine("请出入一个数字(q结束)");
input = Console.ReadLine();
while (input != "q")
{
number=Convert.ToInt32(input);
Console.WriteLine("{0}的两倍是{1}",number,number*2);
Console.WriteLine("请出入一个数字(q结束)");
input = Console.ReadLine();
}
5.不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值 int max = 0;
string input="";
int number;
do
{
try
{
Console.WriteLine("请输入一个数?");
input = Console.ReadLine();
number=Convert.ToInt32(input);
if(number>max)
{
max = number;
}
}
catch
{
if (input!="end")
{
Console.WriteLine("输入了非法数据!");
input = "end";
}
}
}while(input!="end");
Console.WriteLine("你输入的最大值是"+max);
Console.ReadKey();
25、调试
2013-09-08 16:52:05
设置断点单步运行
观察变量
26、for
2013-09-08 17:13:23
For循环语法:
for(表达式1;表达式2;表达式3;)
{
循环体
}
执行过程:第1步 计算表达式1,转向第2步
第2步 计算表达式2(循环条件),如果表达式2的值为ture转向第3步.如果表达式2的值为false,转向第步
第3步 执行循环体,转向第4步
第4步 执行表达式3,转向第2步
第5步 循环结束
int i = 0; //相当于表达式1
while (i < 100) //循环条件,相当于表达式2
{
Console.WriteLine("下次我一定细心!");
i++;//相当于表达式3
}
一般情况下,表达式1用于定义循环变量和对循环变量赋初值表达式2:循环条件
表达式3:用于改变循环变量的值
for (int i = 0; i < 100; i++)
{
Console.WriteLine("下次我一定要细心!"+i);
}
1.求1-100间的所有偶数和? int sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0)
{
sum = sum + i;
}
}
Console.WriteLine("1-100的所有偶数" + sum);
Console.ReadKey();
2.找出100-999间的水仙花数?
for (int i = 100; i <= 999; i++)
{
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai)
{
Console.WriteLine(i);
}
}
*死循环
for (; ; )
{
Console.WriteLine("死循环!");
}
27、复习习题讲解
0+6=6
1+5=6
2+4=6
3+3=6
4+2=6
5+1=6
6+0=6
1.可以用于switch-case判断中,用于跳出switch
2.用在循环中,用于立即跳出(终止)循环
注意:用于循环中,跳出的是break所在的循环
continue
用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中的continue下面的语句),直接进行下一次循环.(do-while/while直接进行下一次循环条件的判断.如果条件成立.则再次进入循环.对于for循环,先执行表达式三,再判断循环条件是否成立!)
//练习一:用while continue实现计算1到100之间的除了能被7整除之外所有整数的和.
表1?表2:表3
执行过程:首先计算表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值作为整个表达式的值,如果表1的值为false,则表达式3的值做为整个表达式的值.
表达式2和表达式3的类型一定要相同(相兼)
分支结构:语句在满足条件下执行
if,if-else,switch-case,表1?表2:表3
循环结构:语句在满足条件下循环执行多次
while,do-while,for
跳转语句
brak,continue,goto
goto语法
goto 标签
标签:
1.比如我们上课讲的为了存储一个人的信息,要声明一组变量,当我们要存储N个人的信息时,就要申明n组变量,麻烦
2.存储一个人信息的这几个变量间没有关系,容易记乱语法:
访问修饰符 struct 结构名
2013-09-09 14:06:26
1.输出九九乘法表(长方形) for(int i = 1;i<=9;i++)
{
for (int a = 1; a <=9; a++)
{
Console.Write("{0}X{1}={2:00} ",i,a,i*a);
}
Console.WriteLine();
}
2.输出九九乘法表(三角形)
for(int i = 1;i<=9;i++)
{
for (int a = 1; a <=i; a++)
{
Console.Write("{0}X{1}={2:00} ",i,a,i*a);
}
Console.WriteLine();
}
3.根据6可以输出一下加法表:0+6=6
1+5=6
2+4=6
3+3=6
4+2=6
5+1=6
6+0=6
Console.WriteLine("请输入一个值!");
bool flag = false;
int a = 0;
while (flag == false)
{
try
{
a = Convert.ToInt32(Console.ReadLine());
flag = true;
}
catch
{
Console.WriteLine("你刚刚输入的不是数字");
flag = false;
}
}
for (int b = 0; b <= a; b++)
{
Console.WriteLine("{0}+{1}={2}", b, a - b, a);
}
Console.ReadKey();
*判断输入的是否为数字
Console.WriteLine("请输入一个值");
bool flag = false;
int a = 0;
while (flag == false)
{
try
{
a = Convert.ToInt32(Console.ReadLine());
flag = true;
}
catch
{
Console.WriteLine("你输入的有误,请重新输入");
flag = false;
}
}
Console.WriteLine("你刚才输入的值是:{0}", a);
Console.ReadKey();
28、breakcontinue
2013-09-09 19:49:31
//练习1.循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立刻停止输入并报错
int age = 0;
int sum = 0;
for (int i = 0; i < 5; i++)
{
Console.WriteLine("请输入第{0}个人的年龄", i + 1);
try
{
age = Convert.ToInt32(Console.ReadLine());
if (age < 0 || age >= 100)
{
Console.WriteLine("年龄不合法!");
break;
}
sum = sum + age;
}
catch
{
Console.WriteLine("你输入的不是数字,程序终止!");
break;
}
}
Console.WriteLine("这五个人的平均年龄是{0}", sum / 5);
Console.ReadKey();
//练习2:在while中用break实现要求用户一直输入用户名和密码,只要不是admin/888888就一直提示要求重新输入,如果正确则提登陆成功.
string userName, passWord;
while (true)
{
Console.WriteLine("请输入用户名");
userName = Console.ReadLine();
Console.WriteLine("请输入密码");
passWord = Console.ReadLine();
if (userName == "admin" && passWord == "888888")
{
break;
}
Console.WriteLine("你输入的用户名或密码错误,请重新输入!");
}
Console.WriteLine("登陆成功");
Console.ReadKey();
//练习3:1-100之间的整数相加,得到累加值大于20的当前数 int sum=0;
int i = 0;
for (i = 1; i <= 100; i++)
{
sum += i;
if (sum>=20)
{
break;
}
}
Console.WriteLine(i);
Console.ReadKey();
break:1.可以用于switch-case判断中,用于跳出switch
2.用在循环中,用于立即跳出(终止)循环
注意:用于循环中,跳出的是break所在的循环
continue
用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中的continue下面的语句),直接进行下一次循环.(do-while/while直接进行下一次循环条件的判断.如果条件成立.则再次进入循环.对于for循环,先执行表达式三,再判断循环条件是否成立!)
//练习一:用while continue实现计算1到100之间的除了能被7整除之外所有整数的和.
int i = 0;
int sum = 0;
while (i <= 100)
{
i++;
if (i % 7 == 0)
{
sum = i + sum;
}
}
Console.WriteLine("和为{0}",sum);
Console.ReadKey();
int i = 0;
int sum = 0;
while (i<100)
{
if (i % 7 == 0)
{
i++;
continue;
}
sum = i + sum;
i++;
}
Console.WriteLine("和为{0}", sum);
Console.ReadKey();
三元表达式表1?表2:表3
执行过程:首先计算表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值作为整个表达式的值,如果表1的值为false,则表达式3的值做为整个表达式的值.
表达式2和表达式3的类型一定要相同(相兼)
int a = 10;
int b = 20;
if (a > b)
{
Console.WriteLine(a);
}
else
{
Console.WriteLine(b);
}
int max = a > b ? a : b;
Console.WriteLine(max);
Console.WriteLine(a > b ? a : b);
Console.ReadKey();
顺序结构:语句顺序执行分支结构:语句在满足条件下执行
if,if-else,switch-case,表1?表2:表3
循环结构:语句在满足条件下循环执行多次
while,do-while,for
跳转语句
brak,continue,goto
goto语法
goto 标签
标签:
goto myLabel;
Console.WriteLine("a");
Console.WriteLine("b");
myLabel:
Console.WriteLine("c");
Console.ReadKey();
29、常量枚举
语法:
const 类型 常量名 = 常量值
在定义时赋值,在其他地方不允许赋值
让我们定义一种枚举类型并且在定义这种类型时,我们要制定这个类型的所有值
语法:
enum 自己起的;类型名称{值1,值2,值3....值n};
枚举的定义,一般和类定义在同一个级别,这样,在同一个命名空间下的类就都可以使用这个枚举了
1.限制用户不能随意复赋值,只能在定义枚举时列举的值中选择
2.不需要死记每个值是什么,只需要选择相应的值
注意:定义枚举时,值不能是int类型
枚举类型的变量都可以强制转换成一个int类型
枚举的值在定义时是有一个默认编号的,编号从0开始.
(自枚)(Enum.Parse(typeof(自枚),"带转换的字符")
2013-09-10 15:43:41
常量:语法:
const 类型 常量名 = 常量值
在定义时赋值,在其他地方不允许赋值
const double PI = 3.14;
Console.ReadKey();
枚举:让我们定义一种枚举类型并且在定义这种类型时,我们要制定这个类型的所有值
语法:
enum 自己起的;类型名称{值1,值2,值3....值n};
枚举的定义,一般和类定义在同一个级别,这样,在同一个命名空间下的类就都可以使用这个枚举了
enum Gender
{
男,
女
}
枚举的作用:1.限制用户不能随意复赋值,只能在定义枚举时列举的值中选择
2.不需要死记每个值是什么,只需要选择相应的值
注意:定义枚举时,值不能是int类型
枚举类型的变量都可以强制转换成一个int类型
枚举的值在定义时是有一个默认编号的,编号从0开始.
Gender sex;
sex = Gender.男;
Console.WriteLine((int)sex);
Console.ReadKey();
如果把一个字符串转换成枚举类型:(自枚)(Enum.Parse(typeof(自枚),"带转换的字符")
30、结构
2013-09-10 22:26:28
为什么要用结构:1.比如我们上课讲的为了存储一个人的信息,要声明一组变量,当我们要存储N个人的信息时,就要申明n组变量,麻烦
2.存储一个人信息的这几个变量间没有关系,容易记乱语法:
访问修饰符 struct 结构名
{
定义结构成员
}
enum Gender
{
男,
女,
}
public struct person //定义了一个叫Person的结构
{
public string name; //结构的成员
public Gender sex; //结构的成员
public int age; //结构的成员
}
class Program
{
static void Main(string[] args)
{
person onePerson;
onePerson.name = "zhangsan";
onePerson.age = 20;
onePerson.sex = Gender.男;
Console.WriteLine("我叫{0},我今年{1},我是{2}性",onePerson.name,onePerson.age,onePerson.sex);
person secPerson;
secPerson.name = "lisi";
secPerson.age = 26;
secPerson.sex = Gender.男;
Console.WriteLine("我叫{0},我今年{1},我是{2}性",secPerson.name,secPerson.age,secPerson.sex);
Console.ReadKey();
更多精彩
