C#的初学知识点

时间:2024-10-19 12:04:32

初学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 - ) * 0.7 : (height - ) * 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 <= )
{
Console.WriteLine("请重新输入时间:");
}
if (input2 == )
{ if (input <= )
{
Console.WriteLine("请重新输入金额!");
}
else if (input > && input < )
{
double money1 = input * 0.04 * ;
Console.WriteLine("恭喜你,存款成功,1年后到期," + "您的利息为:" + money1 + "(万元)");
}
else
{
double money2 = 1.1 * input * 0.04 * ;
Console.WriteLine("恭喜你,存款成功,1年后到期," + "您的利息为:" + money2 + "(万元)");
} } if (input2 >= && input2 <= )
{
int time = (int)input2; if (input <= )
{
Console.WriteLine("请重新输入金额!");
}
else if (input > && input < )
{
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 > )
{
int time = (int)input2; if (input <= )
{
Console.WriteLine("请重新输入金额!");
}
else if (input > && input < )
{
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 = ; i < arr.Length; i++)
{
for (int j = i + ; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
} for (int i = ; 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 = ; i < arr.Length; i++)
{
Console.WriteLine("请输入第" + (i + ) + "项的值");
arr[i] = int.Parse(Console.ReadLine()); }
Console.WriteLine("数组所有项的值为:");
for (int i = ; i < arr.Length; i++)
{
Console.Write(arr[i]);
if (i < arr.Length) { Console.Write(","); }
}
Console.WriteLine("\n");
Console.WriteLine("数组从小到大排序后是:");
for (int i = ; i < arr.Length; i++)
{
for (int j = i + ; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
} for (int i = ; i < arr.Length; i++)
{
Console.Write(arr[i]);
if (i < arr.Length) { Console.Write(","); }
} //求是否为奇数
Console.WriteLine("\n");
Console.WriteLine("数组里的奇数有:");
for (int i = ; i < arr.Length; i++)
{
if (arr[i] % != )
{
Console.Write(arr[i]);
if (i < arr.Length) { Console.Write(","); }
}
} Console.WriteLine("\n");
Console.WriteLine("数组里的质数有");
for (int i = ; i < arr.Length; i++)
{
int n = arr[i];
bool isFind = false; for (int j = ; j < n; j++)
{ if (n % j == )
{
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 == )
{
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==)
{
break;
}
else if(num==)
{
Console.WriteLine("请输入要添加的数字:"); //添加数据
int input=int.Parse(Console.ReadLine());
numbers.Add(input);
}
else if(num==)
{
//删除数据
Console.WriteLine("请输入要删除的元素(相同元素只会删除第一个):");
int input=int.Parse(Console.ReadLine());
numbers.Remove(input); }
else if(num==)
{
//修改数据
if(numbers.Count==)
{
Console.Write("集合中没有任何数据可以修,按回车键继续。。。");
Console.ReadLine();
}
else{
int maxIndex=numbers.Count-;
Console.WriteLine("请输入你要修改的元素下标(0-"+maxIndex+"):");
int input1=int.Parse(Console.ReadLine());
if(input1<||input1>maxIndex)
{
Console.WriteLine("输入错误,下标超出范围,按回车键继续...");
Console.ReadLine();
}
else
{
Console.WriteLine("请输入新的数据:");
int input2=int.Parse(Console.ReadLine());
numbers[input1]=input2;
} }
}
else if(num==)
{
//升序排序
for (int i = ; i<numbers.Count-; i++)
{
for (int j = i+; 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):是指多个函数可以使用同一个函数名,只要他们的参数列表不同

函数的相互调用:在任意一个函数中,都可以调用其他的函数

只要代码运行到调用函数的语句,就回去执行调用的函数体

递归函数:是指一个函数,直接或者间接的调用自身

递归必须有终止条件,否则,将会出现无限递归