C#语法快速热身
选择结构(与java结构语法的用法完全一样)
If结构
if(条件)
{
代码块
}
If-else选择结构
多重if
If-else if -else
嵌套if
If(条件)
{
If(条件)
{
}
}
Else
{
}
Switch(条件)
{
Case 常量表达式1:
语句
Break;
Case 常量表达式n:
语句
Break;
Default:
语句
Break;
}
数组与循环
一维数组
语法:数组类型[ ] 数组名; -------int[ ] arry;
1) 数组类型[ ] 数组名 = new 数组类型[数组长度];
2) 数组类型[ ] 数组名 = new 数组类型[ ]{值1,值n};
3) 数组类型[ ] 数组名 = {值1,值n};
获取数组长度使用:数组名.Length(同java中一样下标从0开始,C#中叫“索引”)
XXXXXX-----Int [] srry = new int[5]{0,1,2};// 声明并初始化一维数组
Java中:错误
Int[ ] num = new int[3]{1,2,3};
1) 数组类型[ ] 数组名 = new 数组类型[数组长度];
2) 数组类型[ ] 数组名 = new 数组类型[数组长度]{值1,值n};
3) 数组类型[ ] 数组名 = {值1,值n};
C#
Int[ ] num = new int[3]{1,2,3};
对象数组
讲所有的信息都保存到某个对象中
// 创建Student对象数组,定义3个人
Student[] stu = new Student[3];
// 实例化
stu[0] = new Student();
stu[0].name = "狗蛋";
stu[0].score = 0;
stu[1] = new Student();
stu[1].name = "张三";
stu[1].score = 0.1;
stu[2] = new Student();
stu[2].name = "李四";
stu[2].score = 100;
Console.WriteLine("学员的信息为:");
foreach (Student item in stu)
{
item.showInfo();
}
Console.ReadKey();
学员类
public string name;
public double score;
public void showInfo()
{
Console.WriteLine("姓名:" + name + "\t成绩 : " + score);
}
循环结构
Java中的循环while------do-while------for----foreach(for)
C#中的循环
While(条件){代码块}
注:先判断条件是否成立,在进行循环
Do-while(条件){代码块}
注:先循环,在判断是否成立
For(表达式1; 表达式2; 表达式3){代码块}
注:1---2---代码块---3
Foreach(元素类型 元素的变量名 in 数组){代码块}
对比java中的for()
Int arry[] = {1,3,2};
System.out.println(“-------------------à”);
For(int a :arry){
Syso(a);
}
++I && i++
Foreach不能改变数组中的元素
数组名++
Foreach遍历----》失败
Console.WriteLine("请输入字符串:");
string strings = Console.ReadLine();
foreach (var item in strings)
{
Console.WriteLine(item);
}
Console.ReadKey();
跳转语句:
Break:跳出整个循环,不执行
Continue:跳出本次循环,继续执行下一次,直到循环结束
冒泡排序
越小的值冒泡越高
框架
For(I = 0;i<N-1;i++)
{
For(j = 0; j<N-1-I;j++)
{
交换的步骤
}
}
冒泡排序口诀(升序)
N个数来排队
两两相比小靠前
外层循环N-1
内层循环N-1-i
// 长度为5的int类型数组
int[] score = new int[5];
int i, j;// 循环变量 i比较的轮数 j比较的次数
int temp;// 临时变量
// 读入成绩
Console.WriteLine("输入5个人的成绩:");
for (i = 0; i < 5; i++)
{
Console.WriteLine("请输入第{0}位人的成绩:", i + 1);
// 类型转换
score[i] = int.Parse(Console.ReadLine());
}
// 开始排序
// 索引 0 1 2 3 4
// 值 2 3 4 5 6
// 第一遍i == 0
// 第二轮i == 1
// 第三轮i == 2
// 第四轮i == 3
for (i = 0; i < score.Length - 1; i++)// 外层循环终止条件:数组长度-1
{
// 内层循环终止条件:数组长度 - 1 - i
// 索引 0 1 2 3 4
// 值 2 3 4 5 6
// j < 4
// j < 3
// j < 2
// j < 1
for (j = 0; j < score.Length - 1 - i; j++)
{
// 判断
if (score[j] > score[j + 1])
{
// 元素交换
temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
Console.WriteLine("排序后的成绩:");
for (i = 0; i < 5; i++)
{
Console.WriteLine("{0}\t", score[i]);
}
Console.ReadLine();
小到大、大到小
// 定义一个数组
int[] nums = new int[]{1,2,3,4,5,6,7,8,9};
int temp = 0;
// 从小到大
for (int i = 0; i < nums.Length - 1; i++)
{
for (int j = 0; j < nums.Length-1-i; j++)
{
if (nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
foreach (var item in nums)
{
Console.Write(item + " ");
}
Console.WriteLine(" ");
// 从大到小
for (int i = 0; i < nums.Length - 1; i++)
{
for (int j = 0; j < nums.Length - 1 - i; j++)
{
if (nums[j] < nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
foreach (var item in nums)
{
Console.Write(item + " ");
}
Var可以理解为匿名类型,认为他是一个变量的占位符,一个数组的类型
特点:
1)必须在定义是初始化(var s = “abc”; 不能:var s; s = “aaaa”)
2)一旦初始化完成,就不能再给变量赋值与初始化
3)var要求的是局部变量
4)var和Object不同,他在效率上和使用强制类型方式定义变量一样
// 声明并赋初始值
var name = "张三";
var age = 10;
var sex = true;
// 获取变量的数据类型
Type t_Name = name.GetType();// string
Type t_Age = age.GetType(); // int
Type t_Sex = sex.GetType(); // bool
// 打印结果
Console.WriteLine("变量name的类型是{0}\n,变量age的类型是{1}\n,变量sex的类型是{2}", t_Name.ToString(), t_Age.ToString(), t_Sex.ToString());
// 不自动关闭,等待用户输入
Console.ReadLine();