一、if
顺序结构: 程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行
分支结构:if if-else
选择结构: if else -if switch-case
循环结构:while do -while for foreach
1. if语句:
语法:
if (判断条件) {
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行到 if 处,首先判断if所带的小括号中的判断条件,
如果条件成立,也就是返回 true,则执行if 所带的大括号中的代码,
如果判断条件不成立,也就是返回一个 false。则跳过if结构,继续向下执行。
if结构的特点: 先判断,再执行,有可能一行代码都不执行。用于一种情况的判断
2.if-else
语法:
if (判断条件){
执行的代码;}
else]{
执行的代码
}
执行过程 :程序执行到 if 处,首先判断 if 所带的小括号中的判断条件是否成立,如果成立,也就是返回一个true,则执行 if 所带的大括号中的代码,
执行完成后,跳出 if-else结构。
如果 if 所带的小括号中的判断条件不成立,也就是返回一个false,
则跳过 if 语句,执行 else 所带的大括号中的语句,执行完成后,跳出 if-else 结构。
if-else特点:先判断,再执行,最少都要执行一条代码。用于两种情况的判断
3.if else-if
作用: 用来处理多条件的区间性的判断。
语法:
if( 判断条件 ){
要执行的代码;
}
else if( 判断条件 ){
要执行的代码;
}
else if(判断条件){
要执行的代码;
}
.........
else{
要执行的代码;
}
执行过程: 程序首先判断第一个 if 所带的小括号中的判断条件,如果条件成立,也就是返回一个true,则执行该if 所带的大括号中的代码,执行完成后,立即跳出if else-if结构。
如果第一个if 所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if 的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续向下判断,
如果每个if 所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else.
如果有else的话,则执行else中所带的代码,如果没有else,则整个if-else if神马都不做。
else以省略。
//练习2∶提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是88888”
//则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,
// 如里用户名是admin则提示密码错谋.
Console.WriteLine("请输入用户名");
String name = Console.ReadLine();
Console.WriteLine("请输入密码");
String password = Console.ReadLine();
if (name == "admin" && password == "888888")
{
Console.WriteLine("登录成功");
}else if (name == "admin")
{
Console.WriteLine("密码错误");
}else if (password == "888888")
{
Console.WriteLine("用户名不存在");
}
else
{
Console.WriteLine("用户都密码错误");
}
Console.ReadKey();
二、异常
异常捕获
我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些。在你的代码中应该经常性的使用try-catch来进行异常捕获。
哪行代码有可能出现异常,你就踹它一脚。
语法:
try{
可能会出现异常的代码;}
catch{
出现异常后要执行的代码;}
执行过程: 如果try中的代码没有出现异常,那么catch中的代码不会执行。
如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,而是直接跳到catch中执行代码。
//语法上没有错误,在程序运行的过程当中,由于某些原因程序出现了错误,不能再正常的运行。
bool flag= true;
int number = 0;
Console.WriteLine("请输入一个数字");
try
{
number = Convert.ToInt32(Console.ReadLine());//赋值
}
//try和catch之间不能有其他的代码
catch
{
flag = false;
Console.WriteLine("输入的内容有问题");
}
//我们如果要执行下面这行代码,需要满足某些条件。
// 让代码满足某些条件去执行的话,使用bool类型
if (flag)
{
Console.WriteLine(number * 2);
}
Console.ReadKey();
三、switch-case
用来处理多条件的定值的判断。
语法:
switch (变量或者表达式的值)
case 值1 :要执行的代码;
break;
case 值2 : 要执行的代码;
break;
case 值3 : 要执行的代码;
break;
.... ....
default : 要执行的代码;
break;
执行过程: 程序执行到switch处,首先将括号中变量或者表达式的值计算出来,然后拿着这个值依次跟每个case后面所带的值进行匹配,一旦匹配成功,则执行该case所带的代码,执行完成后,遇到break。跳出switch-case结构。
如果,跟每个case所带的值都不匹配。就看当前这个switch-case结构中是否存在
default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构什么都不做。
//成绩>=90 : A
//90>成绩>=80 :B
//80>成绩>=70 : c
//70>成绩>=60 : D
//成绩 < 60: E
Console.WriteLine("请输入一个分数:");
int score = Convert.ToInt32(Console.ReadLine());
switch(score/10){
case 10:
case 9:
Console.WriteLine("A");
break;
case 8:
Console.WriteLine("B");
break;
case 7:
Console.WriteLine("C");
break;
case 6:
Console.WriteLine("D");
break;
default :
Console.WriteLine("E");
break;
}
Console.ReadKey();
请用户输年份,再输入月份,输出该月的天数.(结合之前如何判断闰年来做)
Console.WriteLine("请输入一个年份");
try
{
int year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入一个月份");
try
{
int month = Convert.ToInt32(Console.ReadLine());
if (month >= 1 && month <= 12)
{
int day = 0;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 2:
//由于2月有平年和闰年的不同所以首先要判断—下当年是不是闰年
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
day = 29;
}
else
{
day = 28;
}
break;
//4.6 9 11
default: day = 30; break;
}
Console.WriteLine("{0}年{1}月有{2}天", year, month, day);
}//if的判断
else
{
Console.WriteLine("输入月份错误");
}
}//try月份的括号
catch//try月份的匹配
{
Console.WriteLine("输入月份错误");
}
}//try年份的括号
catch//跟年份的try配对
{
Console.WriteLine("输入错误,程序退出");
}
Console.ReadKey();
四、循环
1.while循环:
while(循环条件){
循环体;
}
执行过程: 程序运行到while处,首先判断while所带的小括号内的循环条件是否成立,如果成立的话,也就是返回一个true,则执行循环体,执行完一遍循环体后,再次回到循环条件进行判断,如果依然成立,则继续执行循环体,如果不成立,则跳出while循环。在while循环当中,一般总会有那么一行代码,能够改变循环条件,使之终有一天不再成立,如果没有那么一行代码能够改变循环条件,也就是循环条件永远都成立,我们称之这种循环叫做死循环。
最简单的最常用的死循环:
while (true){
}
2.break
1)、可以跳出switch-case结构。2)、可以跳出当前循环。
break一般不单独的使用,而是跟着if判断一起使用,表示,当满足某些条件的时候,就不再循环了。
练习题
输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
Console.WriteLine("请输入班级人数");
try
{
int number = Convert.ToInt32(Console.ReadLine());
double score = 0;//分数
double sum = 0;//和
bool flag = true;
int i = 1;
while (i <= number)
{
Console.WriteLine("请输入第{0}同学的成绩",i);
try
{
score = Convert.ToDouble(Console.ReadLine());
sum += score;
i++;
}
catch
{
Console.WriteLine("成绩输入错误,退出程序");
flag = false;
break;
}
}
if (flag)
{
Console.WriteLine("班级总人数{0},总成绩为{1},平均成绩为{2:00}", number, sum, sum / number);
}
}//班级人树括号
catch//班级人数匹配w
{
Console.WriteLine("人数输入错误,退出程序");
}
Console.ReadKey();
//老师问学生,这道题你会做了吗?如果学生答"会了(y)"",
//则可以放学.如果学生不会做(n) ,则老师再讲—遍,再问学生是否会做了......
//直到学生会为止,才可以放学.
//直到学生会或老师给他讲了10遍还不会,都要放学
String str="";
int i = 1;
while( i<=10 && str != "y"){
Console.WriteLine("这是我第{0}讲这道题,你会做了吗?y/n",i);
str = Console.ReadLine();
if (str == "y")
{
Console.WriteLine("你可以放学了");
break;
}
i++;
}
Console.ReadKey();
//2006年培养学员80000人,每年增长25%,
// 请问按此增长速度,到哪一年培训学员人数将达到20万人?
int year = 2006;
double number = 80000;
while (number < 200000)
{
number += number * 0.25;
year++;
}
Console.WriteLine("第{0}年增长到了200000",year);
Console.ReadKey();
五.do-while
语法:do{
循环体;
} while (循环条件) ;
执行过程: 程序首先会执行do中的循环体,执行完成后,去判断do-while循环的循环条件,如果成立,则继续执行do中的循环体,如果不成立,则跳出do-while循环。
特点:先循环,再判断,最少执行一遍循环体。
//明天小兰就要登台演出了,老师说再把明天的演出的歌曲唱一遍,
//如果满意,小兰就可以回家了.否则就需要再练习一遍,直到老师满意为止.(y / n)
String answer;
do
{
Console.WriteLine("老师,我的唱的还满意嘛?y/n");
answer = Console.ReadLine();
} while (answer=="n");
Console.WriteLine("你可以放假回家了");
Console.ReadKey();