一、if结构的基本语法:
if(条件)
语句1;
执行过程:首先判断条件的结果,如果条件为ture,则这行语句1,如果条件为false,则跳过语句1。执行后面的语句。
注意:
1)if后面的括号中的条件,要能计算成一个bool类型的值。
2)默认情况下,if语句只能带1句话,即和if语句有关系的语句只有语句1.
if带多句话可以写成:
if(条件)
{
语句1;
语句2;
。。。。。。。。。
}
我们在写程序的时,哪怕if语句只带一句话,也要写在大括号中。
二、if-else结构:
语法:
if(条件)
{
语句1;
}
else
{
语句块2;
}
执行过程:
如果条件为ture,则执行if带的语句块1,并且跳过else带的语句2
如果条件为false,则跳过if带的语句块1,执行else带的语句块2
上面两个语句块,根据条件结束为ture或False,总要执行一个。
三、if-else if
在if-else if语句中,只有当上一个条件不成立时,才会进入下一个if语句并进行if语句后面的条件判断。
一旦有一个if后面的条件为ture,则执行此if所带的语句(块),语句(块)执行完成后,程序跳出if-else if结构。
如果所有的if条件都不成立,则执行最后的else所带的语句,如果最后没有else语句,则什么都不执行。
练习一
练习二
练习三
四、switch-case语法:
switch(表达式/变量)
{
case 值1:语句块1;
break;
case 值2:语句块2;
break;
default: 语句块3;
break;
}
执行过程:
首先计算表达式,然后根据计算的结果与匹配case后面的值,如果有匹配项,则执行匹配项后面的语句,
直到break语句跳出 switch-case,如果所有的case值都不匹配,那么default则执行 default后面的语句,直到 break结束。
如果没有default,则跳出switch-case,什么都不执行。
switch与if的区别
相同点:都可以实现多分枝结构
不同点:
·switch:一般只能用于等值比较
·if-else if 可以处理范围
五,while循环的语法
while(条件) //条件为循环条件
{
循环体(要循环执行的N条程序)
}
执行过程
1 先判断循环条件,如果条件为true则转向2,如果条件为false则转向3
2 执行循环体,循环体执行完后转向1
3 跳出循环体,循环结束
在循环体中,一定要有那么一句话,改变循环条件中的某个变量的值,使循环条件终有那么一天为 false.
While循环特点:先判断,再执行
class Program { static void Main(string[] args) { //习题一 int i = 0; while (i < 100) { Console.WriteLine("{0}.\t欢迎您来到传智播客学习!\t",i+1); i++; } Console.ReadKey(); } }
class Program { static void Main(string[] args) { //习题二 Console.WriteLine("请输入你们班级有多少人:"); int count = Convert.ToInt32(Console.ReadLine()); int score = 0; int sum = 0; int i=0; while (i< count) { Console.WriteLine("请输入第{0}个学生的成绩",i+1); score = Convert.ToInt32(Console.ReadLine()); sum += score; i++; } Console.WriteLine("本班级有{0}人,班级总成绩为{1},平均成绩为{2}",count, sum,sum/count); Console.ReadKey(); } }
class Program { static void Main(string[] args) { //习题三 Console.WriteLine("这道题你会做了吗?(会Y/不会N)"); string select = Console.ReadLine(); int i = 0; while (select=="N"&&i<10) { Console.WriteLine("这道题你会做了吗?(会Y/不会N)"); select = Console.ReadLine(); i++; } Console.WriteLine("可以放学!"); Console.ReadKey(); } }
class Program { static void Main(string[] args) { //习题四 double count = 8000; int year = 2006; while (count < 200000) { count += count * 0.25; year++; } Console.WriteLine("到{0}年,培训学员将达到20万",year); Console.ReadKey(); } }
六、do-while
语法:
do
{
循环体;
}while(条件);
执行过程:
1. 执行循环体,执行完循环体转向2
2. 判断条件是否成立,如果条件为true,则转向1,如果条件为false,则转向3.
3. 跳出循环,循环结束。
假如循环条件一开始就不成立,对于while循环,一次都不会执行。对于do-while循环体会执行一次。
所以,do-while的循环体一般至少会被执行一次。
区别:
while先判断,后执行。
do-while先执行,后判断
//练习一 int i = 1; int sum = 0; do { sum+=i; i++; }while(i<=100); Console.WriteLine("1到100之间的整数和为{0}",sum); Console.ReadKey();
//练习二 string username; string password; do { Console.WriteLine("请输入用户名和密码:"); username = Console.ReadLine(); password = Console.ReadLine(); if (username != "admin" || password != "888888") { Console.WriteLine("你输入的用户名或密码有误!请重新输入!"); } } while (username != "admin" || password != "888888"); Console.WriteLine("登陆成功!"); Console.ReadKey();
//习题三 string name; do { Console.WriteLine("请用户输入学生的姓名:"); name = Console.ReadLine(); } while (name != "q"); Console.WriteLine("程序结束!") Console.ReadKey();
//习题四 int number; bool flag = true; do { Console.WriteLine("请用户输入一个数字:"); try { number = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("{0}的二倍是{1}", number, number * 2); flag = true; } catch { flag = false; } } while (flag);
//第五题 string input=""; int number; int max=0; bool flag = true; do { try { Console.WriteLine("请输入一个数字:(或end结束)"); input = Console.ReadLine(); number = Convert.ToInt32(input); if (number > max) { max = number; } } catch { if (input != "end") { Console.WriteLine("你输入有误!程序结束!"); input = "end"; flag = false; } } }while(input!="end"); if(flag) { Console.WriteLine("你输入的最大值是{0}", max); } Console.ReadKey();
class Program { static void Main(string[] args) { //习题六 int i=0; string answer; do { Console.WriteLine("张三表演第{0}次舞蹈",i+1); Console.WriteLine("老师你满意吗?(Y/N)"); answer=Console.ReadLine(); i++; }while(answer=="N"); Console.WriteLine("不错!可以回家了!"); Console.ReadKey(); } }
七、for 循环语法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
for循环一般用于已知循环次数的循环
一般情况下
表达式1 用于定义循环变量和对循环变量赋初值。
表达式2 就是循环条件
表达式3 用于改变循环标量的值
执行过程:
1) 计算表达式1,转向第步
2) 计算表达式2(表达式2就是循环条件),如果表达式2的值为true,转向第3步,如果表达式2的值为false,转向第5步
3) 执行循环体,转向第4步
4) 执行表达式3,转向第2步
5) 循环结束
//问题一 int sum = 0; for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { sum = sum + i; } } Console.WriteLine("1-100的偶数和为{0}", sum); Console.ReadKey();
//问题二 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); } Console.ReadKey(); }
//问题三 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { Console.Write(" {0}*{1}={2:00} ", i, j, i * j); } Console.WriteLine(); }
//问题三 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { Console.Write(" {0}*{1}={2:00} ", i, j, i * j); } Console.WriteLine(); } Console.ReadKey();
break;
1) 可以用于switch-case判断中,用于跳出switch
2) 用在循环中,用于立即跳出(终止)循环.
注意:用于循环中时;跳出的是break所在的循环
class Program { static void Main(string[] args) { int age = 0; int sum = 0; bool flag = false; for (int i = 0; i < 5; i++) { Console.WriteLine("请输入第{0}个人的年龄",i+1); try { age = Convert.ToInt32(Console.ReadLine()); if (age < 0 || age >= 200) { Console.WriteLine("你输入的年龄不合法!程序终止!"); break; } sum += age; flag = true; } catch { Console.WriteLine("你输入的数据有误!程序终止!"); break; flag = false; } } while (flag) { Console.WriteLine("你输入的5个人的平均年龄为{0}", sum / 5); } } }
class Program { static void Main(string[] args) { string username ; string password ; while (true) { Console.WriteLine("请输入的用户名和密码:"); username = Console.ReadLine(); password = Console.ReadLine(); if(username=="admin"&&password=="888888") { Console.WriteLine("登陆成功!"); break; } Console.WriteLine("你输入的用户名或密码有误!请重新输入!"); } } }
class Program { static void Main(string[] args) { int i = 0; int sum = 0; while (i <=99) { i++; if (i % 7 == 0) { continue; } sum += i; } Console.WriteLine(sum); } }
continue;
用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不在执行循环体中continue下面的语句了),
直接进行下一次循环(对于do-while/while直接进行下一次循环条件的判断,如果条件成立,则再次进入循环,
对于for循环,先执行表达式3,再判断循环条件是否成立),
class Program { static void Main(string[] args) { int i = 0; int sum = 0; while (i <=99) { i++; if (i % 7 == 0) { continue; } sum += i; } Console.WriteLine(sum); } }
枚举/常量/结构
常量:
语法:
const 类型 变量名 = 常量值
在定义时赋值,在其他地方不允许赋值,
枚举:
让我们定义一种类型并且在定义这种类型时我们要指定这个类型的所有值;
语法:
enum 自己起的类型名称 {类型的值1,值2,值3,…};
枚举的定义,一般和类定义在同一个级别,这样,在同一个命名空间下的所有类都可以使用这个枚举。
枚举的作用:
1) 限制用户不能随意赋值,只能在定义枚举时列举的值中选择.
2)不需要死记每一个值是什么,只需要选择相应的值
注意:定义枚举时,值不能为int类型
枚举类型的变量都可以强制转换成一个int类型
(int)变量名
把一个字符串转换成枚举类型:
自己定义的枚举类型=自枚
变量 = (自枚)(Enum.Parse(typeof(自枚),”待转换的字符串”));
namespace _01 { enum Gender { 男,女} class Program { static void Main(string[] args) { Gender sex; sex = Gender.男; Console.WriteLine("请输入你的性别:"); try { string s = Console.ReadLine(); sex=(Gender)(Enum.Parse(typeof(Gender),s)); Console.WriteLine("你的性别为"+sex); } catch { Console.WriteLine("你输入的性别有误!"); } } } }
为什么要用结构:
1) 比如我们上课讲的为了存储一个人的信息,要声明一组变量,当我们要存储n个人的信息时,就要声明n组变量,太麻烦了。
2) 存储一个人信息的这几个变量之间没有关系,容易混淆。
语法:
访问修饰符 struct 结构名
{
定义结构成员
}
定义好一个机构后,就可以直接声明相应的变量.
声明好变量后,通过变量名.成员名来访问结构的成员
namespace _02结构 { public enum Gender { 男, 女 } public struct Person //定义一个叫Penson的结构 { public string name;//结构的成员 public Gender sex;//结构的成员 public int age;//结构的成员 } class Program { static void Main(string[] args) { Person onePerson; onePerson.name="张三"; onePerson.age = 20; onePerson.sex = Gender.男; Console.WriteLine("我叫{0},今年{1}岁,我是{2}性", onePerson.name, onePerson.age, onePerson.sex); Person secPerson; secPerson.name = "李四"; secPerson.age = 21; secPerson.sex = Gender.男; Console.WriteLine("我叫{0},今年{1}岁,我是{2}性", secPerson.name, secPerson.age, secPerson.sex); Console.ReadKey(); } } }
可访问性不一致:
enum Gender {男,女}
改为:public enum Gender {男,女}
enum 的默认访问权限可能是Private,虽然还有些困惑,但加上public没错.
数组:
可以帮我们一次声明多个同类型的变量。这些变量在内存中是连续储存的。
数组声明语法:
数据类型[]数组名=new数据类型[数组长度];
int [] score = new int [5];
上句话就是声明了一个数组长度为5,数组名叫score的数组.
通俗点说:就是声明了一个数组,里面包含5个int 类型的变量
数组名叫 score 里面5个int 类型的变量叫数组的元素,排列顺序为 0,1,2,3,4
如何访问数组: 通过下标来访问数组 (也叫索引器)
比如我们要想第0个元素赋予一个3,可以这样写,
score[0] = 3;
int类型数组一旦声明里面的每一个元素被初始化成0;
通过 数组名.Length 可以获得数组长度
Console.Clear(); 清屏
int sum = 0; int max; int []score=new int [10];//声明一个有10个元素的数组 for(int i=0;i<score.Length;i++) { Console.WriteLine("请输入第{0}个学生的成绩:",i+1); score[i]=Convert.ToInt32(Console.ReadLine()); //sum += score[i]; } Console.Clear(); //通过一个循环来求一个数组中所有元素的和 for (int i = 0; i < score.Length; i++) { sum += score[i]; } Console.WriteLine("{0}个学生的平均成绩为{1}",score.Length,sum/score.Length); //输出数组每个元素的值 for (int i = 0; i < score.Length; i++) { Console.WriteLine("第{0}个学生的成绩为{1}",i+1,score[i]); } //求10个学生成绩的最高分 max = score[0]; for (int i = 0; i < score.Length; i++) { if (score[i] > max) { max = score[i]; } } Console.WriteLine("10个学生成绩的最高分为{0}",max); Console.ReadKey();
//练习一 int[] nums = new[] { 12, 15, 21, 26, 64, 25, 89, 46, 75 }; int max = nums[0]; for (int i = 0; i < nums.Length; i++) { if (nums[i] > max) { max = nums[i]; } } Console.WriteLine("这个数组的最大数为{0}", max); Console.ReadKey();
//练习二 int[] nums = new[] { 12, 15, 21, 26, 64, 25, 89, 46, 75 }; int sum = 0; for (int i = 0; i < nums.Length; i++) { sum += nums[i]; } Console.WriteLine("这个数组的元素和为{0}", sum); Console.ReadKey();
//练习三 string[] names = { "梅西", "卡卡", "郑大世" }; string str=""; for (int i = 0; i < names.Length; i++) { //if (i == names.Length - 1) //{ // str = str + names[i] ; //} //else //{ // str = str + names[i] + "|"; //} if (i == names.Length - 1) { break; } str = str + names[i] + "|"; } Console.WriteLine(str);
//练习四 int[] nums = new[] {-23,0,-52, 12, 15, 21, 26, 64, 25, 89, 46, 75 }; for (int i = 0; i < nums.Length; i++) { if (nums[i] > 0) { Console.WriteLine("该元素为正数,故加一为{0}", nums[i] + 1); } else { if (nums[i] < 0) { Console.WriteLine("该元素为负数,故减一为{0}", nums[i] - 1); } else { Console.WriteLine("该元素为0,故不变",nums[i]); } } } Console.ReadKey();
//练习五 string who; string[] nums = { "3", "a", "haha", "8" }; for (int i = 0; i < nums.Length / 2; i++) { who = nums[i]; nums[i] = nums[nums.Length - 1 - i]; nums[nums.Length - 1 - i] = who; } for (int i = 0; i < nums.Length; i++) { Console.WriteLine(nums[i]); } Console.ReadKey();
转载于:https://blog.51cto.com/369728544/1223677