C#的初学知识点
初学C#
初见Hello,World
第一句源代码:Console.WriteLine("Hello,World");;
认识.Net;
编译工具:Visual Studio;
主函数:Public static void main(string[] args);
输出语句:Console.WriteLine("Hello,world");
变量和数据类型
数据类型:常见的C#数据类型:char.string.int.double
变量:变量的语法:数据类型+空格+变量名+“;”;变量的赋值:变量名+“=”+数据+“;”
变量的命名:语法:数据类型+空格+名称
变量的使用技巧:变量的三要素:数据类型、变量名、变量值
数据的运算:double类型和int类型运算,返回类型为double
字符串运算:字符串运算的方式是拼接;拼接符号:“+”
输入语句:内容:Console.ReadLine();
类型转换:任何类型转换到string: 待转换的数据.ToString();
数字类型:整数用int,实数用double
11转义符“\”:··以反斜线"\"开头,后跟一个或几个字符
代码注释:单行注释,多行注释和文档注释
软件中的错误及调试:编译错误,运行错误和逻辑错误
运算符和表达式
认识运算符:一目运算符、二目运算符、三目运算符
小括号:类型转换、改变运算顺序、函数调用
算术运算符:
变量名++(--):1.计算返回结果,与变量相同;2.将变量的值增加1
++(--)变量名:1.计算返回结果,变量值加1;2.将变量的值增加1
赋值运算符: =;+=;-=;/=;%=
逻辑运算符:true和false
三目运算符:判断条件?操作数1:操作数2
表达式:int a=1+2
运算符优先级:优先级越高的运算符,会优先得到执行
健康计算器:
while(true) { //完成所有的提示工作并存入输入的变量; Console.WriteLine("请输入你的性别(男或女):"); string input = Console.ReadLine(); if (input == "男" || input == "女") { Console.WriteLine("请输入你的身高(厘米):"); double height = double.Parse(Console.ReadLine()); Console.WriteLine("请输入你的体重(千克):"); double weight = double.Parse(Console.ReadLine()); //计算标准体重 double standarWeigtht = input == "男" ? (height - 80) * 0.7 : (height - 70) * 0.6; if (weight < standarWeigtht * 0.9) { Console.WriteLine("标准体重的范围是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之间~"); Console.WriteLine("很遗憾!您的体重偏瘦,请注意补充营养!"); } else if (weight > 1.1 * standarWeigtht) { Console.WriteLine("标准体重的范围是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之间~"); Console.WriteLine("很遗憾!您的体重偏胖,请注意多多锻炼!"); } else { Console.WriteLine("标准体重的范围是:" + 0.9 * standarWeigtht + "-----" + 1.1 * standarWeigtht + "之间~"); Console.WriteLine("恭喜您!您的身材很健康,请继续保持~"); } Console.ReadLine(); break; } else { Console.WriteLine("别开玩笑好嘛!请重新输入“男”或者“女”t"); } } }
流程控制
流程图:功能分析和代码书写分离;更加专注,便与解决复杂问题
if判断:代码格式:if(条件1){代码1} else if (条件2) {代码2} else {代码N}
变量作用域:在大括号内,该变量有效,大括号外无效
收益计算器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { /* int sum = 0; for (int i = 1; i <= 100;i++ ) { sum += i; } Console.WriteLine(sum); */ /* Console.WriteLine("请输入一个数:"); int input = int.Parse(Console.ReadLine()); switch(input) { case 1: Console.WriteLine("星期一"); break; case 2: Console.WriteLine("星期二"); break; case 3: Console.WriteLine("星期三"); break; case 4: Console.WriteLine("星期四"); break; case 5: Console.WriteLine("星期五"); break; case 6: Console.WriteLine("星期六"); break; case 7: Console.WriteLine("星期日"); break; default: Console.WriteLine("错误显示"); break; } */ Console.WriteLine("请输入您的存款金额(万):"); double input = double.Parse(Console.ReadLine()); Console.WriteLine("请输入您要存款的时间(年):"); int input2 = int.Parse(Console.ReadLine()); if (input2 <= 0) { Console.WriteLine("请重新输入时间:"); } if (input2 == 1) { if (input <= 0) { Console.WriteLine("请重新输入金额!"); } else if (input > 0 && input < 50) { double money1 = input * 0.04 * 1; Console.WriteLine("恭喜你,存款成功,1年后到期," + "您的利息为:" + money1 + "(万元)"); } else { double money2 = 1.1 * input * 0.04 * 1; Console.WriteLine("恭喜你,存款成功,1年后到期," + "您的利息为:" + money2 + "(万元)"); } } if (input2 >= 2 && input2 <= 5) { int time = (int)input2; if (input <= 0) { Console.WriteLine("请重新输入金额!"); } else if (input > 0 && input < 50) { double money1 = input * 0.048 * time; Console.WriteLine("恭喜你,存款成功," + input + "年后到期," + "您的利息为:" + money1 + "(万元)"); } else { double money2 = 1.1 * input * 0.048 * time; Console.WriteLine("恭喜你,存款成功," + input + "年后到期," + "您的利息为:" + money2 + "(万元)"); } } if (input2 > 5) { int time = (int)input2; if (input <= 0) { Console.WriteLine("请重新输入金额!"); } else if (input > 0 && input < 50) { double money1 = input * 0.052 * time; Console.WriteLine("恭喜你,存款成功," + input + "年后到期," + "您的利息为:" + money1 + "(万元)"); } else { double money2 = 1.1 * input * 0.052 * time; Console.WriteLine("恭喜你,存款成功," + input + "年后到期," + "您的利息为:" + money2 + "(万元)"); } } Console.ReadLine(); } } }
Switch选择:代码格式:switch() {case 1:break; case 2:break;}
While循环:代码格式:while(循环条件){循环体} //循环体可以是任意功能,任意数量的代码
do While循环:先执行一次循环体
for循环:代码格式:for(表达1;表达式2;表达式3) { 循环体}
查找问题:简单查找:在样本中,依次寻找目标数据
数组与集合
数组:数据类型 【】 变量名 =new 数据类型【长度】
数组的定长性:长度固定不变
数组的遍历:从数组的第一项开始,依次取完数组的所有项
交换排序:
for (int i = 0; i < arr.Length; i++) { for (int j = i + 1; j < arr.Length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } }
数组分析器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("请输入数组的长度:"); int len = int.Parse(Console.ReadLine()); int[] arr = new int[len]; for (int i = 0; i < arr.Length; i++) { Console.WriteLine("请输入第" + (i + 1) + "项的值"); arr[i] = int.Parse(Console.ReadLine()); } Console.WriteLine("数组所有项的值为:"); for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } Console.WriteLine("\n"); Console.WriteLine("数组从小到大排序后是:"); for (int i = 0; i < arr.Length; i++) { for (int j = i + 1; j < arr.Length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } //求是否为奇数 Console.WriteLine("\n"); Console.WriteLine("数组里的奇数有:"); for (int i = 0; i < arr.Length; i++) { if (arr[i] % 2 != 0) { Console.Write(arr[i]); if (i < arr.Length) { Console.Write(","); } } } Console.WriteLine("\n"); Console.WriteLine("数组里的质数有"); for (int i = 0; i < arr.Length; i++) { int n = arr[i]; bool isFind = false; for (int j = 2; j < n; j++) { if (n % j == 0) { isFind = true; break; } } if (isFind == true) { //bushizhishu } else { Console.Write(n); if (i < arr.Length) { Console.Write(","); } } } Console.ReadLine(); } } }
集合:不定长,占用内存多,遍历速度慢
数组能实现的所有功能,集合都能实现
foreach循环:只能用于遍历数组或集合
集合管理器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 集合管理器 { class Program { static void Main(string[] args) { List<int> numbers = new List<int>(); while (true) { Console.WriteLine("集合中现有内容如下:"); Console.WriteLine("=============================================="); //显示集合 if (numbers.Count == 0) { Console.WriteLine("集合中没有元素"); } else //集合的遍历 { foreach (int item in numbers) { Console.Write(item+"\t"); } Console.WriteLine();//循环结束后让光标换行 } Console.WriteLine("=============================================="); Console.WriteLine("1.添加数据"); Console.WriteLine("2.删除数据"); Console.WriteLine("3.修改数据"); Console.WriteLine("4.升序排序"); Console.WriteLine("0.退出程序"); Console.WriteLine("请选择(0-4):"); int num = int.Parse(Console.ReadLine()); if(num==0) { break; } else if(num==1) { Console.WriteLine("请输入要添加的数字:"); //添加数据 int input=int.Parse(Console.ReadLine()); numbers.Add(input); } else if(num==2) { //删除数据 Console.WriteLine("请输入要删除的元素(相同元素只会删除第一个):"); int input=int.Parse(Console.ReadLine()); numbers.Remove(input); } else if(num==3) { //修改数据 if(numbers.Count==0) { Console.Write("集合中没有任何数据可以修,按回车键继续。。。"); Console.ReadLine(); } else{ int maxIndex=numbers.Count-1; Console.WriteLine("请输入你要修改的元素下标(0-"+maxIndex+"):"); int input1=int.Parse(Console.ReadLine()); if(input1<0||input1>maxIndex) { Console.WriteLine("输入错误,下标超出范围,按回车键继续..."); Console.ReadLine(); } else { Console.WriteLine("请输入新的数据:"); int input2=int.Parse(Console.ReadLine()); numbers[input1]=input2; } } } else if(num==4) { //升序排序 for (int i = 0; i<numbers.Count-1; i++) { for (int j = i+1; j < numbers.Count;j++ ) { if(numbers[i]>numbers[j]) { int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } } } else { Console.WriteLine("请重新选择!"); } Console.Clear();//清屏 } } } }
函数
认识函数:具有独立功能,并能通过名称重复使用的代码
作用域:一个变量,仅在他所定义的大括号中有效
标识符:变量名,函数名,类名,接口名,委托名,其他
声明带参数的函数:声明带参数的函数:static void 函数名(参数列表){//注释内容}
调用带参数的函数:函数编写时,参数为形参;函数调用 时,
参数为实参;实参的数量和类型必须和形参完全对应
声明带返回值的函数:static 返回类型 函数名(形参列表){//函数体}
如果一个函数不需要返回,那么它的返回类型就会void
当代码运行到return语句时,立即结束函数
返回return关键字后面的值,变量或表达式的结果
调用带返回值的函数:函数名(实参列表)
返回类型与函数声明的返回类型一致
函数签名:是一个函数的函数名、参数列表、返回类型的统称
根据它实现函数调用;根据它实现函数体
文档注释:符号:///;通常写到函数体外,用于描述函数体外的代码
函数重载(overload):是指多个函数可以使用同一个函数名,只要他们的参数列表不同
函数的相互调用:在任意一个函数中,都可以调用其他的函数
只要代码运行到调用函数的语句,就回去执行调用的函数体
递归函数:是指一个函数,直接或者间接的调用自身
递归必须有终止条件,否则,将会出现无限递归