首页 > 代码库 > 01---Net基础加强
01---Net基础加强
声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。交换两个变量,使用第三个变量!
class Program { static void Main(string[] args) { int n1 = 10; int n2 = 20; int temp = n1; n1 = n2; n2 = temp; Console.WriteLine("n1:{0},n2:{1}",n1,n2); Console.ReadKey(); } }
声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。交换两个变量,不使用第三个变量!
class Program { static void Main(string[] args) { int n1 = 10; int n2 = 20; n1 = n1 + n2; n2 = n1 - n2; n1 = n1 - n2; Console.WriteLine("n1:{0},n2:{1}", n1, n2); Console.ReadKey(); } }
声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。交换两个变量,使用方法!
class Program { static void Main(string[] args) { int n1 = 10; int n2 = 20; Swap(ref n1, ref n2);//方法存根快捷键Ctrl+K+M建立方法 ref表示按引用传递 Console.WriteLine("n1:{0},n2:{1}", n1, n2); Console.ReadKey(); } static void Swap(ref int num1, ref int num2) { int temp = num1; num1 = num2; num2 = temp; } }
请用户输入一个字符串,计算字符串中的字符个数,并输出。(“你好ycz” 的字符个数为5)字符串的Length属性表示字符串中字符的个数,无论中文字符还是英文字符,一个字符就是一个字符,不是字节数。
class Program { static void Main(string[] args) { Console.WriteLine("请输入一个字符串"); string msg = Console.ReadLine(); Console.WriteLine("字符个数为:{0}", msg.Length); Console.ReadKey(); } }
定义方法来实现:计算两个数的最大值。提示:方法有几个参数?返回值是什么? ···········定义方法时一定要有参数和返回值!
class Program { static void Main(string[] args) { int max = GetMax(100,101); Console.WriteLine("最大值为:{0}", max); Console.ReadKey(); } static int GetMax(int n1,int n2) { return n1>n2?n1:n2; } }
计算任意多个数间的最大值(提示:params)。
class Program { static void Main(string[] args) { int max = GetMax(100,101,22,24,35,333); Console.WriteLine("最大值为:{0}", max); Console.ReadKey(); } static int GetMax(params int[] nums)//params可变参数 { int max=nums[0]; for (int i = 1; i < nums.Length; i++) { if(nums[i]>max) max=nums[i]; } return max; } }
用方法来实现:计算1-100之间的所有整数的和。
class Program { static void Main(string[] args) { int sum= GetSum(1,100); Console.WriteLine(sum); Console.ReadKey(); } static int GetSum(int StartNumber,int EndNumber) { int sum = 0; for (int i = StartNumber; i <= EndNumber; i++) { sum += i; } return sum; } }
用方法来实现:计算1-100之间的所有奇数的和。
static void Main(string[] args) { int sum= GetOddSum(1,100); Console.WriteLine(sum); Console.ReadKey(); } static int GetOddSum(int StartNumber,int EndNumber) { int sum = 0; for (int i = StartNumber; i <= EndNumber; i++) { if (i % 2 != 0) { sum += i; } } return sum; }
用方法来实现:判断一个给定的整数是否为“质数”;
class Program { static void Main(string[] args) { string s; Console.WriteLine("请输入一个正整数:"); int n = Convert.ToInt32(Console.ReadLine()); if (IsZhiShu(n)) { s = "这个数是质数"; Console.WriteLine(s); Console.ReadKey(); } else { s = "这个数不是质数"; Console.WriteLine(s); Console.ReadKey(); } } static bool IsZhiShu(int num) { bool b = true; for (int i = 2; i <= Math.Sqrt(num); i++) //对num开根号 { if (num % i == 0) { b=false; } } return b; }
用方法实现:计算1-100之间所有质数的和。
class Program { static void Main(string[] args) { int sum = 0; for (int i = 2; i <= 100; i++) { // 对于每个数字判断是否是一个质数 if (IsZhiShu(i)) { sum += i; } } Console.WriteLine(sum); Console.ReadLine(); } static bool IsZhiShu(int num) { bool b = true; for (int i = 2; i <=Math.Sqrt(num); i++) //对num开根号 { if (num % i == 0) { b=false; } } return b; } }
用方法来实现:有一个数组,找出其中最大值并输出。不能调用数组的Max()方法。
class Program { static void Main(string[] args) { int[] arrInt = {1,3,5,66,6,8,99,55 }; int max = GetMax(arrInt); Console.WriteLine(max); Console.ReadLine(); } static int GetMax(int[] arr) { int max = arr[0]; for (int i = 1; i < arr.Length;i++ ) { if (arr[i] > max) { max = arr[i]; } } return max; } }
用方法来实现:有一个字符串数组:{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出字符数最多的字符串。
class Program { static void Main(string[] args) { string[] arrName = { "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" }; string maxName = GetMaxString(arrName); Console.WriteLine(maxName); Console.ReadLine(); } static string GetMaxString(string[] arrName) { string maxName = arrName[0]; for (int i = 1; i < arrName.Length;i++ ) { if (arrName[i].Length > maxName.Length) { maxName = arrName[i]; } } return maxName; } }
用方法实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }。要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。Math.Round()
class Program { static void Main(string[] args) { int[] arrInt = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10}; Console.WriteLine(GetAvg(arrInt)); Console.ReadLine(); } static double GetAvg(int[] arr) { int sum = 0; for (int i = 1; i < arr.Length;i++ ) { sum += arr[i]; } return Math.Round((double)sum/ arr.Length, 2); //Math.Round()对数字执行四舍五入,保存两位小数。注意*两个整数相除结果还是整数,可以将一个强制转换成double类型 } }
通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。
class Program { static void Main(string[] args) { int[] arrInt = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }; for (int i = 0; i < arrInt.Length-1; i++) { for (int j = arrInt.Length - 1; j > i; j--) { if (arrInt[j] < arrInt[j - 1]) { int temp = arrInt[j]; arrInt[j] = arrInt[j - 1]; arrInt[j - 1] = temp; } } } for (int i = 0; i < arrInt.Length; i++) { Console.WriteLine(arrInt[i]); } Console.ReadLine(); } }
有如下字符串:【"患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?”"】。需求:①请统计出该字符中“咳嗽”一词的出现次数,以及每次“咳嗽”出现的索引位置。②扩展(*):统计出每个字符的出现次数。 JavaScript indexOf() 方法
class Program { static void Main(string[] args) { string msg = "患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?"; string keywords="咳嗽"; int count = 0; int index = 0; while ((index = msg.IndexOf(keywords, index)) != -1)//使用IndexOf(),该方法返回在整个字符串中,指定的字符或字符串第一次出现的索引位置,如果没有找到指定的字符或者字符串则返回-1,如果找到了返回索引位置 { count++; Console.WriteLine("第{0}次,出现【咳嗽】,索引时{1}", count,index); index = index + keywords.Length; } Console.WriteLine("【咳嗽】一词,共出现了{0}次,", count); Console.ReadKey(); } }
将字符串" hello world,你 好 世界 ! "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world,你 好 世界 !"。 Trim用法 Split用法,Join用法
class Program { static void Main(string[] args) { string msg = " Hello World 你 好 世界 "; msg = msg.Trim(); string[] words = msg.Split(new char[]{‘ ‘},StringSplitOptions.RemoveEmptyEntries); string full = string.Join(" ", words); Console.WriteLine(full); Console.ReadKey(); } }
制作一个控制台小程序。要求:用户可以在控制台录入每个学生的姓名,当用户输入quit(不区分大小写)时,程序停止接受用户的输入,并且显示出用户输入的学生的个数,以及每个学生的姓名。并统计姓王的个数!
class Program { static void Main(string[] args) { List <string> ListNames=new List<string>();//初始化一个集合 int count = 0; while (true) { Console.WriteLine("请输入姓名:"); string name = Console.ReadLine(); if (name[0] == ‘王‘) { count++; } if (name.ToLower() == "quit") { break; } ListNames.Add(name); } Console.WriteLine("你共输入了:{0}个名字",ListNames.Count); foreach (string name in ListNames) { Console.WriteLine(name); } Console.WriteLine("姓王的同学的个数:{0}", count); Console.ReadKey(); } }
将普通日期格式:“2014年7月8日”转换成汉字日期格式:“二零一四年七月八日”。(暂时不考虑10日,13日,23日)
class Program { static void Main(string[] args) { string date = "2014年7月8日"; date = ConvertDate(date); Console.WriteLine(date); Console.ReadKey(); } private static string ConvertDate(string date) //字符串具有不可变性,不能直接修改字符串 { //将字符串转换成一个真正的char数组 char[] chs = date.ToCharArray(); for (int i = 0; i < date.Length;i++ ) { switch (chs[i]) { case ‘0‘: chs[i] = ‘零‘; break; case ‘1‘: chs[i] = ‘一‘; break; case ‘2‘: chs[i] = ‘二‘; break; case ‘3‘: chs[i] = ‘三‘; break; case ‘4‘: chs[i] = ‘四‘; break; case ‘5‘: chs[i] = ‘五‘; break; case ‘6‘: chs[i] = ‘六‘; break; case ‘7‘: chs[i] = ‘七‘; break; case ‘8‘: chs[i] = ‘八‘; break; case ‘9‘: chs[i] = ‘九‘; break; } } return new string(chs); } }
创建一个Person类,属性:姓名、性别、年龄;方法:SayHi() 。再创建一个Employee类继承Person类,扩展属性Salary,重写SayHi方法。
class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } public bool Gender { get; set;} public int Age{ get; set;} public virtual void SayHi() //加上virtual,子类才能重写它 { Console.WriteLine("Hi!!!!!!"); } }
class Employee:Person { public double Salary { get; set; } public override void SayHi()//对这个方法重写 { Console.WriteLine("子类中的SayHi!!!"); } }
请编写一个类:ItcastClasss,该类中有一个私有字段_names.数据类型为字符串数组,数组长度为5,并有5个默认的姓名。要求:为ItcastClass编写一个索引器,要求该索引器能够通过下标访问_names中的内容。
class ItCastClass { private string[] _names = { "叶长重", "王少伟", "杨中科", "苏坤", "科比" }; public string this[int index] //索引器 { set { _names[index] = value; } get { return _names[index]; } } }
static void Main(string[] args) { ItCastClass itcast = new ItCastClass(); //Console.WriteLine(itcast._names[0]);//没有索引器的情况下得这样写! Console.WriteLine(itcast[0]); Console.WriteLine(itcast[3]); Console.ReadKey(); }
使用WinForm窗体,制作一个简单的计算器,默认值为“请选择”。要求具有+、-、*、/功能!
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.comboBox1.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { //校验用户选择的“操作符” if (comboBox1.SelectedIndex > 0) { int n1 =Convert.ToInt32( textBox1.Text.Trim()); int n2 = Convert.ToInt32(textBox2.Text.Trim()); //int n2 = int.Parse(textBox2.Text.Trim());//这个也可以 switch (comboBox1.Text) { case "+": label1.Text = (n1 + n2).ToString(); break; case "-": label1.Text = (n1 - n2).ToString(); break; case "*": label1.Text = (n1 * n2).ToString(); break; case "/": label1.Text = (n1 / n2).ToString(); break; default: break; } } else { MessageBox.Show("请选择操作符"); } } }
什么是方法重载。(方法重载1.方法名必须一致。2,方法参数列表不同)
请将字符串数组(“中国”,“美国”,“巴西”,“澳大利亚”,“加拿大”)中的内容反转,然后输出反转后的数组,不能用数组的Reverse()方法。
static void Main(string[] args) { string[] names = { "中国", "美国", "巴西", "澳大利亚", "加拿大" }; ReverseArray(names); for (int i = 0; i < names.Length; i++) //快捷键 打上for再按Tab键 { Console.WriteLine(names[i]); } Console.ReadKey(); } private static void ReverseArray(string[] names) //数组本身就是引用类型,不需要返回值 { for (int i = 0; i < names.Length/2; i++) { string temp = names[i]; names[i] = names[names.Length -1-i]; names[names.Length -1-i] = temp; } } }
编程遍历WinForm窗体上所有TextBox控件并给它赋值为“叶长重”。
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { foreach (Control ctrl in this.Controls)//遍历这个窗体中所有控件 { //判断控件是不是文本框 if (ctrl is TextBox) { ctrl.Text = "叶长重"; } } } }
随机生成10个1-100内的非重复数字放入ArrayList集合中。
class Program { static void Main(string[] args) { int count = 0; ArrayList arrList = new ArrayList(); Random rdm = new Random();//()内不能放参数,不然会产生一样的,里面是种子,种子确定,产生的数是一样的! while (arrList.Count < 10) { //Random rdm = new Random();//这句话不能放到这里,系统用当前时间做种子 count++; int n = rdm.Next(1, 101); if (!arrList.Contains(n)) { arrList.Add(n); } } for (int i = 0; i < arrList.Count; i++) { Console.WriteLine(arrList[i]);//快捷键 cw+Table } Console.WriteLine("循环了{0}次",count); Console.ReadKey(); } }
.net程序基本编写、执行流程(c#)
2>通过csc.exe程序来将.cs文件编译为.net程序集(.exe或.dll)。此时的exe或dll并不是机器码(cpu不可理解)。【>csc /out:c:\a.exe c:\program.cs】
3>程序运行时通过JIT编译(Just In Time)即时编译,将程序集编译为cpu能理解的机器码,这时cpu才能执行。(这个编译过程会与当前机器有关(根据当前机器的内存、cpu等))。ngen.exe
面向对象三大特性:封装、继承、多态。
什么是类?什么是对象?类和对象的区别?如何写一个汽车类?
类是模具,创建对象的模具,抽象的。
类是一种数据类型,用户自定义的数据类型
类组成:字段、属性、方法、构造函数等
对象是具体的,是类的具体实例。对象具有属性(特征)和方法(行为)
类中包含了数据(用字段表示)与行为(用方法(函数、功能)表示,方法为一块具有名称的代码) (先用类后有对象)
添加一个教师类和一个学生类:
public class Teacher { //构造函数特点:1、函数名和类名完全一样 2、不能有返回值,哪怕是void 3、一般访问修饰符为public public Teacher() { } //构造函数重载 public Teacher(string name) { } public string Name { get; set; } public int Age { get; set; } public void Teach() { Console.WriteLine("上课。。。"); } }
class Student { public string Name { get; set; } public string SId { get; set; } public void shangke() { Console.WriteLine("上课。。。"); } }
class Program { static void Main(string[] args) { //当写好一个类以后就会有一个默认的无参的构造函数。 Teacher t = new Teacher(); } }
01---Net基础加强