C#基础_选择结构和循环结构、三元运算符(五)
关系运算符 > >= < <= != ==
对数值的运算 ,结果返回的是 bool值
逻辑运算符 && || !
&& :逻辑与,前后都为TRUE 结果为TRUE
|| : 逻辑或,有一个为TRUE,结果为TRUE
! : 逻辑非,取反,TRUE取反是FALSE
三元运算符:
数据类型 变量名 = 表达式 ? 表达式1:表达式2;
三元运算过程: 如果表达式结果为TRUE,表达式1的结果赋值给变量,
如果表达式结果为FALSE,表达式2的结果赋值给变量
表达式:结果是bool值,可以是bool值,或者是关系表达式或是逻辑运算表达式
表达式2和表达式1的结果的数据类型要和变量的数据类型一致
int num = true ? num1: num2;
选择结构 if
If(判断条件)
{
执行语句;
}
else if(判断条件)
{执行语句;}
else
{执行语句}
判断条件:
1. bool值,关系表达式或者逻辑表达式得到的的结果是bool值
2. 只能在if后才能加判断条件
互斥性:
if ---else if ---else 只能执行其中一个执行语句,如果满足前边的条件,后边的就不再判断
两个练习题:
1 // 如果小明的(chinese music) 2 // 1. 语文成绩大于90并且音乐成绩大于80 3 // 2.语文成绩等于100并且音乐成绩大于70,则奖励100元. 4 int chinese1 = Convert.ToInt32(Console.ReadLine()); 5 int music = Convert.ToInt32(Console.ReadLine()); 6 mb = (chinese1 > 90 && music > 80) || (chinese1 == 100 && music > 70); 7 if (mb) 8 { 9 Console.WriteLine("得到100元奖励。"); 10 } 11 12 //让用户输入用户名和密码,如果用户名为admin,密码为mypass,则提示登录成功. 13 string user = Console.ReadLine(); 14 string password = Console.ReadLine(); 15 if (user == "admin" && password == "mypass") 16 { 17 Console.WriteLine("登录成功"); 18 }
Switch – case
语法结构:
Int num = 1 ;
Switch(num)
{
case 1:
执行语句;
break;
case 2:
执行语句;
break;
……..
default:
break;
}
1.Switch case针对的是单个值的比较,如果比较范围if更加方便
2.从上向下逐个比较,如果都不满足就执行默认default
3.Case穿透:如果满足case 1:条件,但是在case 1下没有break,那么在执行完case 1,不能结束结构,继续向下执行case 2,直到遇到break结束结构,可以应用于几个值执行相同的的执行语句
1 /* 2 * 李四的年终工作评定,如果定为A级,则工资涨500元,如果定为B级, 3 * 则工资涨200元,如果定为C级,工资不变,如果定为D级工资降200元, 4 * 如果定为E级工资降500元.设李四的原工资为5000,请用户输入李四 5 * 的评级,然后显示李四来年的工资. 6 */ 7 double salary = 5000; 8 Console.WriteLine("请输入李四的工作评定等级:"); 9 string level = Console.ReadLine(); 10 switch (level) 11 { 12 case "A": 13 salary += 200; 14 Console.WriteLine(salary); 15 break; 16 case "B": 17 salary += 500; 18 Console.WriteLine(salary); 19 break; 20 case "C": 21 salary += 1000; 22 Console.WriteLine(salary); 23 break; 24 25 default: 26 break; 27 }
循环结构for
对特定条件进行判断,满足则执行循环体,用于将某个语句或语句块重复执行预定次数。
语法:
for(初始化;条件;增减变量)
{
循环体
}
1.初始化:int I = 0; i是计次变量,用来记录循环多少次的
2.判断条件: 判断循环是否继续执行,TRUE继续,FALSE结束循环结构
3.增减变量:用来控制变量变化,控制循环执行次数的
4.循环体:循环每次要执行的语句
1 //练习1.求出100-999之间的水仙花数 2 //水仙花数: 这个三个位上的数的立方和等于这个数本身 3 for (int i = 100; i < 1000; i++) 4 { 5 //分别求出三位上的数 6 int bai = i / 100; 7 int shi = (i % 100) / 10; 8 int ge = i % 10; 9 int num = bai * bai * bai + shi * shi * shi + ge * ge * ge; 10 if (num == i) 11 { 12 Console.WriteLine(i + "是水仙花数"); 13 } 14 }
1 // 1~100之间的整数相加,得到累加值大于20的当前数(比如:1+2+3+4+5+6=21)结果6 2 sum = 0; 3 4 for (int i = 1; i < 100; i++) 5 { 6 sum += i; 7 if (sum > 20) 8 { 9 10 Console.WriteLine("累加值大于20的当前数{0}", i); 11 break; 12 } 13 }
循环结构while
条件表达式为true,则执行循环体,用于次数不确定的情形。
语法:
while(循环条件)
{
循环体
}
1.循环条件:判断循环是否执行,TRUE继续,FALSE结束
2.循环体:执行语句 和 控制变量语句
3.在变量外部声明变量 int I = 0;也是计次和for相似
while (false) //循环条件
{
//循环体
}
//当满足循环条件,执行循环体,循环条件为true,就是死循环
1 /* 2 练习1: 求1到100的和 3 *练习2: 100内偶数的和 4 */ 5 int i = 1; 6 int sum = 0; 7 while (i>=1) 8 { 9 sum = sum + i; 10 i++; 11 }
1 //练习1:循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 2 int sum = 0; 3 for (int i = 0; i < 5; i++) 4 { 5 Console.WriteLine("输入第{0}个人的年龄", i); 6 bool b = true; 7 try 8 { 9 10 int age = Convert.ToInt32(Console.ReadLine()); 11 if (age >= 0 && age <= 100) 12 { 13 sum += age; 14 } 15 else 16 { 17 //给一个提示 结束程序 18 Console.WriteLine("输入年龄不在范围内,程序结束"); 19 b = false; 20 break; 21 } 22 23 } 24 catch 25 { 26 Console.WriteLine("输入年龄不正确有误,程序结束"); 27 b = false; 28 break; 29 30 } 31 if (b) 32 { 33 Console.WriteLine("5个人的年龄平均年龄{0}", sum / 5); 34 } 35 36 } 37 38 39 // 1~100之间的整数相加,得到累加值大于20的当前数(比如:1+2+3+4+5+6=21)结果6 40 sum = 0; 41 42 for (int i = 1; i < 100; i++) 43 { 44 sum += i; 45 if (sum > 20) 46 { 47 48 Console.WriteLine("累加值大于20的当前数{0}", i); 49 break; 50 } 51 }
1 //练习2:在while中用break实现要求用户一直输入用户名和密码,只要不是admin、88888就一直提示要求重新输入, 如果正确则提登录成功. 2 3 while (true) 4 { 5 Console.WriteLine("请输入用户名 :"); 6 7 string s = Console.ReadLine(); 8 Console.WriteLine("请输入密码 :"); 9 10 string ss = Console.ReadLine(); 11 if (s == "admin" && ss == "88888") 12 { 13 //如果成立 14 15 Console.WriteLine("登录成功,结束程序"); 16 break; 17 } 18 else 19 { 20 Console.WriteLine("用户名或者密码错误,重新输入"); 21 } 22 } 23 24 int n = 0; 25 for (; ; Console.WriteLine("请++++++++++++++++++++"), Console.WriteLine("请++++++++++++++++++++"), Console.WriteLine("请++++++++++++++++++++")) 26 { 27 Console.WriteLine("请输入用户名 :"); 28 29 string s = Console.ReadLine(); 30 Console.WriteLine("请输入密码 :"); 31 32 string ss = Console.ReadLine(); 33 if (s == "admin" && ss == "88888") 34 { 35 //如果成立 36 37 Console.WriteLine("登录成功,结束程序"); 38 break; 39 } 40 else 41 { 42 Console.WriteLine("用户名或者密码错误,重新输入"); 43 } 44 }
循环结构 do---while
执行语句块中的语句,直到条件表达式为false。
与while语句区别:
-- while语句先判断条件,满足时执行循环体。
-- do while语句先执行循环体,满足条件再次执行。
语法:
do
{
循环体
} while(条件);
1.一定会执行一次方法体,例如在银行取钱一样,需要先操作在进行判断是否密码正确
1 /*明天小兰就要登台演出了,老师说再把明天的演出的歌曲唱一遍, 2 * 如果满意,小兰就可以回家了.否则就需要再练习一遍, 3 * 直到老师满意为止.(y/n) 4 */ 5 Console.WriteLine("是否老师满意:yes/no"); 6 string answer; 7 do 8 { 9 Console.WriteLine("小兰唱一遍,询问老师是否满意"); 10 answer = Console.ReadLine(); 11 } while (answer=="no"); 12 13 14 do 15 { 16 //循环语句 17 } while (false );//循环条件 18 //先执行do中循环体,再判断dowhile 中的循环条件,如果成立执行循环体,不成立结束