笔记与心得:黑马程序员C#40课基础知识集合(二)
11-2、习题04周天小时分秒的转化习题(原视频没有声音)
try { 有可能出现的错误的代码卸载这里 } catch { 出错后的处理 }上面的程序如何执行“
如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容
如果try中的代码一旦出错,程序立即跳入catch中去执行代码,那么ray中的出错代码后面的内容
//第一题 //让学生输入其姓名和语文数学\英语,编程求总分和平均分 //并在屏幕上显示:XX你的总分为xx分,平均分为XX分 try { Console.WriteLine("请输入您的姓名:"); string name = Console.ReadLine(); Console.WriteLine("请输入您的语文成绩:"); int chinese = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入您的数学成绩:"); int math = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入您的英语成绩"); int english = Convert.ToInt32(Console.ReadLine()); int point = chinese + math + english; int average = Convert.ToInt32((chinese + math + english) / 3); Console.WriteLine("您的姓名是{0},您的总分是{1},您的平均分是{2}", name, point, average); } catch { Console.WriteLine("您刚才输入的数据有误导致程序出错,请重新运行程序!"); } Console.ReadKey(); //第二题 //编程实现计算几天(如46天)是几周零几天. 46/7...4 Console.WriteLine("请输入你要计算的天数?"); int days = Convert.ToInt32(Console.ReadLine()); int week = days / 7; int mod = days % 7; Console.WriteLine("{0}中共有{1}周{2}天",days,week,mod); Console.ReadKey(); //第三题 //编程实现计算几天(如46天)是几月几周零几天. Console.WriteLine("请输入你要计算的天数?"); int days = Convert.ToInt32(Console.ReadLine()); int mouth = days / 30; int week = (days-mouth*30) / 7; int mod = (days-mouth/7) % 7; Console.WriteLine("{0}中共有{1}月{2}周{3}天", days,mouth, week, mod); Console.ReadKey(); //第四题 //编程实现107653秒是几天几小时几分钟几秒钟? int seconds = Convert.ToInt32(Console.ReadLine()); int day = seconds / (3600 * 24); int mod = seconds % (3600 * 24); //除去上面的天数还剩多少秒 int hour = mod / 3600; //看看剩余的秒数中海油多受啊3600秒 int min = mod / 60; //看看剩余的秒数中除去上面算的小时,还剩余多少时间 int second = mod % 60; Console.WriteLine("{0}秒中共包含{1}天{2}小时{3}分钟{4}秒",seconds,day,hour,min,second); Console.ReadKey();12、自加自减复合赋值-关系表达式
++ 自加一 有前加和后加
-- 自减一 有前减和后减int age = 18; age = age + 1; age++; age--; Console.WriteLine("age={0}",age); Console.ReadKey(); int age = 18; int sum = age++ - 10; Console.WriteLine("age={0}", age); Console.WriteLine("sum={0}", sum); Console.ReadKey(); //输出:age19 sum8上面代码中age是后加,所以在进行语句运算时,age++取原值参与运算,所以sum=8
int age = 18; int sum = ++age - 10; Console.WriteLine("age={0}", age); Console.WriteLine("sum={0}", sum); Console.ReadKey(); //输出:age19 sum9上面代码中age是前加,所以在进行语句运算时,++age取加一后的新值参与运算,所以sum=9
int age = 8; int sum = age++ - 10; 相当于: int age = 18; int sum = age - 10; age = age + 1; int age = 8; int age = ++age - 10; 相当于: int age = 18; age = age + 1; int sum = age -10
c#中一元二次运算符高于二元二次匀速符
int var1; int var2 = 5; int var3 = 6; var1=var2++ * --var3; Console.WriteLine("var1={0},var2={1},var3={2}",var1,var2,var3); Console.ReadKey(); //输出var1=25,var2=6,var3=5.+=
例如:age=age+3 = age+=3;
;理解成在age的原值上加3
-=
例如:age=age-3 = age-=3;
;理解成在age的原值上减3
*=
/=
%=
能够改变变量值的:
++/--
=
关系运算符
在c#中,有6个关系运算符,用于比较两个事物之间的关系。
>
<
== 比较相等
!= 比较不相等
>=
<=
关于表达式:由关系运算符链接起来的式子
布尔(bool)类型
真:ture
假:false
关系表达式的运算结果为bool类型,bool类型只有两个值,一个是ture,一个是false。
如果关系运算表达式成立,则这个表达式的值为ture,否则为false
int zsage = 20; int lsage = 18; bool isRight = zsage < lsage; Console.WriteLine(isRight);
13、逻辑表达式
int dxZL = 1500; int lsZL = 1; bool isRight = dxZL > lsZL; Console.WriteLine(isRight); Console.ReadKey();字符串类型不能比较大小
string zsName="zhangsan"; string lsName = "lisi"; bool isRight = zsName != lsName; Console.WriteLine(isRight); Console.ReadKey();逻辑运算符: && || !
逻辑与运算:&&
bool isRight = 表达式1 && 表达式2
逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式
整个逻辑与运算的结束也是bool类型
表达式1 表达式2 逻辑与结果
ture ture ture
false false false
false ture false
ture false false
当两个表达式全为ture时,结果才为ture
int age = 20; int weight = 120; bool result = age >= 18 && weight >= 100; Console.WriteLine(result);输出的结果为Ture
int age = 10; int weight = 90; bool result = age >= 18 && weight >= 100; Console.WriteLine(result);输出的结果为False
逻辑与运算:||
bool isRight = 表达式1 || 表达式2
逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式
整个逻辑与运算的结束也是bool类型
表达式1 表达式2 逻辑与结果
ture ture ture
false false ture
false ture ture
ture false false
只要有一个为ture,其结果都为ture
//让用户输入张三的身高和体重 //火车站规定,一个人的身高>=120厘米或者体重>=50kg就必须买票 //需要买票输出ture,不需要输出false Console.WriteLine("请输入您的身高(cm):"); int high = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入您的体重(kg):"); int weight = Convert.ToInt32(Console.ReadLine()); bool result = high >= 120 || weight >= 50; Console.WriteLine(result);
逻辑非:!
这是一个一元运算符.用法:
!(布尔类型的表达式)
作用:
如果:
布尔类型的表达式的表达式为ture,加!号后,其整个式子的结果为false.
布尔类型的表达式的表达式为false,加!号后,其整个式子的结果为ture.
Console.WriteLine(!result);输出结果想反,真变假,假变真
表达式 !表达式
True False
False Ture
16、复习-if作业讲解
Console.WriteLine("请输入您的年龄"); int age = Convert.ToInt32(Console.ReadLine()); if (age >= 18) { Console.WriteLine("你已成年!"); }如果张三的语文成绩大于90并且音乐成绩大于80,或者语文成绩等于100并且音乐成绩大于70,则奖励100元
Console.WriteLine("请输入你的语文成绩?"); int chinese = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入你的音乐成绩"); int music = Convert.ToInt32(Console.ReadLine()); if ((chinese >= 90) && (music >= 80) || (chinese == 100) && (music >= 70)) { Console.WriteLine("奖励一百元!"); }让用户输入用户名和密码,如果用户名为admin,密码为myPass,则提示登陆成功
Console.WriteLine("请输入您的用户名"); string userName = Console.ReadLine(); Console.WriteLine("请输入您的密码"); string myPass = Console.ReadLine(); if (userName == "admin" && myPass == "myPass") { Console.WriteLine("登陆成功"); }
17、if-else
int score = 95; if (score >= 90) { Console.WriteLine("奖励100元"); } if (score <= 90) { Console.WriteLine("不准出去玩,写总结去"); } Console.ReadKey();if-else 结构
语法: if(条件) {语句块1} else {语句快2}执行过程:
如果条件为ture,则执行if带的语块1,并且跳过else带的语句块2
如果条件为false.则跳过if带的语句块1.执行else带的语句块2
int score = 95; if (score >= 90) { Console.WriteLine("奖励100元"); } else { Console.WriteLine("不准出去玩,写总结去"); }
19、switch-case
Console.WriteLine("你现在看的电影肯能涉及到血腥暴力,请输入你的年龄:"); int age = Convert.ToInt32(Console.ReadLine()); if (age >= 18) { Console.WriteLine("你可以观看"); } else if (age >= 10) { Console.WriteLine("你确定要管看吗?请输入yes观看,其他则退出"); string input = Console.ReadLine(); if (input == "yes") { Console.WriteLine("请观看"); } else { Console.WriteLine("你选择了退出!"); } } else { Console.WriteLine("年龄太小不允许观看"); } Console.ReadKey()switch(语法)
switch (语句块) { case 值1:语句块1 break; case 值2:语句块2 break; default:语句块3 break; }例题
Console.WriteLine("请输入你对力斯得评定等级(A-E)"); string input = Console.ReadLine(); decimal salary = 5000; bool flag = false; if (input == "A") { //salary=salary+500 salary += 500; } else if (input == "B") { salary += 200; } else if (input == "C") { } else if (input == "D") { salary -= 200; } else if (input == "E") { salary -= 500; } else { Console.WriteLine("输入有误,只能输入大写ABCDE"); flag = true; } if (flag == false) { Console.WriteLine("李四的工资为:" + salary); } //用switch-case实现上面的功能执行过程:首先计算表达式,然后根据计算结果与匹配case后面的值.如果有匹配项,则执行匹配后面的语句,直到break语句跳出switch-case,如果所有的case值都不匹配,那么有defanlt则执行default后面的语句,直到break结束,如果没有default.则跳出switch-case,什么都不执行.
default:
//注意,匹配时和位置没有关系,只和值有关系. Console.WriteLine("请输入你对李四的评定等级(A-E)"); string input = Console.ReadLine(); decimal salary = 5000; bool flag = false; switch (input) { case "A": salary += 500; break; case "B": salary += 200; break; case "C": break; case "D": salary -= 200; break; case "E": salary -= 500; break; default://注意,匹配时和位置没有关系,只和值有关 系. Console.WriteLine("你输入的有问题!"); flag = true; break; } if (flag == false) { Console.WriteLine("李四的工资为:" + salary); } Console.ReadKey();
20、switch-case作业
if-else of:可以处理范围
1.请用户输入年份,输入月份,输出该月的天数
Console.WriteLine("请输入年份"); int year = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入月份"); int month = Convert.ToInt32(Console.ReadLine()); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: Console.WriteLine("31天"); break; case 2: if (year % 4 == 0 || year % 400 == 0 && year % 100 != 0) { Console.WriteLine("29天"); } else { Console.WriteLine("28天"); } break; default: Console.WriteLine("30天"); break; } Console.ReadKey();
2.对学员结业考试的成绩测评(改成Switch来做)
成绩>=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 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();