1. 我们在使用while循环或者do-while循环的时候,
经常会忘记给循环变量自增,为了解决这个问题,我们有了更为简单的一种循环,
叫做for循环,for循环专门处理已知循环次数的循环。
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1:一般为声明一个循环变量,用来记录循环的次数
表达式2:一般为循环条件
表达式3:一般为能够改变循环条件的代码
执行过程:在第一次循环的时候,首先执行表达式1,再执行表达式2,然后跳过表达式3.直接执行循环体,
执行完循环体之后,执行表达式3,执行表达式2,循环体,表达式3,表达式2,循环体。。。。。
直到表达式2不成立之后,跳出for循环。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo01 { class Program { static void Main(string[] args) { int sum = 0; for (int i = 1; i <= 100; i += 2) { sum += i; } Console.WriteLine(sum); Console.ReadKey(); } } } Demo01 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo02 { class Program { static void Main(string[] args) { //1-10 for (int i = 1; i <=10 ; i++) { Console.WriteLine(i); } Console.ReadKey(); } } } Demo02 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo03 { class Program { static void Main(string[] args) { //10-1 for (int i = 10; i >= 1; i--) { Console.WriteLine(i); } Console.ReadKey(); } } } Demo03 |
倒序for循环快捷键: forr+tab*2
mini-ex: 找出100-999间的水仙花数
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex01 { class Program { static void Main(string[] args) { //水仙花数:100-999 //这个百位数字 百位的立方+十位的立方+个位的立方==当前这个百位数字 //153 1+125+27 153 i //百位:153/100 //十位:153%100/10 //个位:153%10 for (int i = 100; i < 1000; i++) { int bai = i/100; int shi = i%100/10; int ge = i%10; if (bai*bai*bai + shi*shi*shi + ge*ge*ge == i) { Console.WriteLine(i); } } Console.ReadLine(); } } } ex01 |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _04_for循环的嵌套 { class Program { static void Main(string[] args) { // int count = 0; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { //count++; Console.WriteLine("外面循环了{0}次,里面循环了{1}次",i,j); } } Console.ReadKey(); } } } 双层循环 |
ex: 输出九九乘法表
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex02 { class Program { static void Main(string[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { Console.Write("{0}*{1}={2}\t",j,i,i*j); } Console.WriteLine(); } Console.Read(); } } } |
ex02 |
ex03:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex03 { class Program { static void Main(string[] args) { Console.WriteLine("Please input a number:"); int inputNumber = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i <= inputNumber; i++) { Console.WriteLine("{0}+{1}={2}", i, inputNumber-i,inputNumber); } Console.ReadLine(); } } } ex03 |
2. break只能够跳出当前循环,而不能跳出所有循环。
3. int.TryParse();
尝试着将一个字符串转换成int类型,如果转换成功的话,返回一个true,并且将转换成功后的值
赋值给一个int类型的参数,如果转换失败的话,返回一个false,并且给这个int类型的参数赋值为0
ex:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex04 { class Program { static void Main(string[] args) { int inputAge = 0; int sumAge = 0; for (int i = 0; i < 5; i++) { Console.WriteLine("Please enter your age:"); inputAge = Convert.ToInt32(Console.ReadLine()); if (inputAge < 0 || inputAge > 100) { break; } sumAge += inputAge; } Console.WriteLine("Average age is {0}", sumAge/5); Console.Read(); } } } ex04 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex05 { class Program { static void Main(string[] args) { while (true) { Console.WriteLine("Please enter your username:"); string username = Console.ReadLine(); Console.WriteLine("Please enter your password:"); string password = Console.ReadLine(); if (username == "admin" && password == "88888") { Console.WriteLine("Success Login"); break; } else { continue; } } Console.ReadLine(); } } } ex05 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex06 { class Program { static void Main(string[] args) { int i = 1; int sum = 0; while (true) { sum += i; if (sum > 20) { break; } i++; } Console.WriteLine(i); Console.ReadLine(); } } } ex06 |
4. continue
在循环中,如果遇到break,则跳出当前循环。
如果遇到continue,则立即停止本次循环,回到循环条件进行判断,如果循环条件成立,则继续执行循环。
如果不成立,则跳出循环。
单独把continue放到循环中没有意义,一般也跟着if语句配合着使用。
mini-ex:
//练习1:用 while continue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex07 { class Program { static void Main(string[] args) { //练习1:用 while continue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。 int i = 0; int sum = 0; while (i<=100) { i++; if (i % 7 == 0) { continue; } sum += i; } Console.WriteLine(sum); Console.ReadLine(); } } } ex07 |
mini-ex:
//打印1-100之间所有的质数
//质数:只能被1和自身整除的数字 叫做质数
//判断一个整数是否是质数:让这个整数从2开始除,除到自己的前一位
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ex08 { class Program { static void Main(string[] args) { for (int i = 2; i <= 100; i++) { bool flag = true; for (int j = 2; j < i; j++) { if (i % j == 0) { flag = false; break; } } if (flag) { Console.WriteLine(i); } } Console.ReadLine(); } } } ex08 |
5. 三元表达式
表达式1?表达式2:表达式3;
表达式1一般为一个关系表达式,如果关系表达式1的结果为true,那么表达式2的值就是整个三元表达式的值,
否则,表达式3就是整个三元表达式的值。
要求:表达式2和表达式3的结果类型必须一致,并且也要和整个三元表达式的结果类型一致,
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _12产生随机数 { class Program { static void Main(string[] args) { //随机数 没有规律的数字 //产生随机数: //1、创建一个能够产生随机数的对象 while (true) { Random r = new Random(); int rNumber = r.Next(1, 10); Console.WriteLine(rNumber); Console.ReadKey(); } } } } |
6. 常量
语法:
const 常量类型 常量名称=值;
7. 枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
........
}
public:访问修饰符。访问的权限,公开的,公共的,谁都能访问。
enum:表示声明枚举的关键字
枚举名:必须要Pascal命名规范。每个单词的首字母都要大写。
枚举类型和int类型互相兼容,所以两种类型可以通过强制类型转换的语法互相转换。枚举类型的值默认是从0开始的。
不管是将字符串类型的数字转换成枚举类型还是将int类型转换成枚举类型,结果都不会抛异常。但是,如果要转换的字符串,
在枚举中,并没有所对应的值,这个时候会抛异常。
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _15枚举 { public enum Gender { 男, 女 } public enum Sesons { 春, 夏, 秋, 冬 } class Program { static void Main(string[] args) { //int number=10; Gender gender = Gender.女; Sesons seson = Sesons.春; } } } |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo04 { public enum QQState { OnLine = 1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { //枚举类型和int类型互相兼容 int n1 = (int)QQState.OnLine; Console.WriteLine(n1); Console.WriteLine((int)QQState.OffLine); Console.WriteLine((int)QQState.Leave); Console.WriteLine((int)QQState.Busy); Console.WriteLine((int)QQState.QMe); Console.ReadKey(); } } } |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo04 { public enum QQState { OnLine = 1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { int n1 = 10; QQState s1 = (QQState)n1; Console.WriteLine(s1); Console.ReadKey(); } } } |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo04 { public enum QQState { OnLine = 1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { QQState s = QQState.OnLine; Console.WriteLine(s.ToString()); Console.ReadKey(); } } } |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo04 { public enum QQState { OnLine = 1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { QQState s1 = (QQState)Enum.Parse(typeof(QQState), "1"); Console.WriteLine(s1); Console.ReadKey(); } } } |
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo04 { public enum QQState { OnLine = 1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { Console.WriteLine("请选择您的qq在线状态 1--OnLine,2--OffLine 3--Leave 4--Busy 5--QMe "); string input = Console.ReadLine();//1-5 switch (input) { case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您选择在线状态是{0}", s1); break; case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您选择在线状态是{0}", s2); break; case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您选择在线状态是{0}", s3); break; case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您选择在线状态是{0}", s4); break; case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您选择在线状态是{0}", s5); break; } Console.ReadKey(); } } } |
8. 结构:一次性声明多个不同类型的变量
语法:
[public] struct 结构名
{
结构成员;
}
字段跟变量有一个本质的区别:字段可以存储多个值,而变量只能存储一个值。
demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _18结构类型 { public struct Person { public string _name; public int _age; public Gender _gender; } public enum Gender { 男, 女 } class Program { static void Main(string[] args) { //首先声明一个结构类型的变量 Person zsPerson; zsPerson._name = "张三"; zsPerson._age = 19; zsPerson._gender = Gender.男; Person lsPerson; lsPerson._name = "李四"; lsPerson._age = 20; lsPerson._gender = Gender.女; ////大学管理系统 姓名 性别 年龄 //string name1 = "张三"; //char gender1 = ‘男‘; //int age1 = 15; } } } |
mini-ex:
定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue
声明一个 MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.
codes:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex09 { struct MyColor { public int _red; public int _green; public int _blue; } class Program { static void Main(string[] args) { MyColor color; color._red = 255; color._green = 0; color._blue = 0; } } } ex09 |
mini-ex:
定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型
声明两个Person类型的变量,分别表示 张三 男 18岁/ 小兰 女 16岁
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex10 { struct Person { public string _name; public int _age; public Gender _gender; } public enum Gender { Male, Female } class Program { static void Main(string[] args) { Person p1; p1._name = "张三"; p1._age = 18; p1._gender = Gender.Male; Person p2; p2._name = "小兰"; p2._age = 16; p2._gender = Gender.Female; } } } ex10 |
9. 数组
数组类型[] 数组名=new 数组类型[数组长度];
注意:数组的长度一旦声明了,就不能再被改变了。
数组的4种声明方式:
int[] nums = new int[10];这种声明数组的方式只是确定了数组的类型和长度,并没有赋值 |
int[] nums = { 1, 2, 3, 4, 5 };这种声明数组的方式在声明的时候 就给数组赋值了 |
int[] nums = new int[4] { 1, 2, 3, 4 }; |
int[] nums = new int[] { 1, 2, 3, 4 }; |