C#自学笔记_003_Real
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace Csharp003
{
//定义一个枚举类型
public enum Season
{
春,
夏,
秋,
冬
}
//定义另一个枚举类型
public enum QQState
{
Online,
Offline,
Leave,
Busy,
QMe
}
//定义一个结构体
public struct Person
{
public string _name;
public int _age;
public string _gender;
}
class Program
{
static void Main(string[] args)
{
//1、for循环
//for练习:输出乘法口诀表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
Console.Write("{0}*{1}={2}\t", i, j, i*j);
}
Console.WriteLine();//啥也不写就是换行
}
//for练习:输出三角形乘法口诀表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("{0}*{1}={2}\t", i, j, i * j);
}
Console.WriteLine();//啥也不写就是换行
}
//2、Parse、TryParse的使用
//int.Parse()的使用与Convert.ToInt32()的使用完全一致
//本质上,Convert.ToInt32()是爱系统中调用int.Parse()
int number = int.Parse("123abd"); //系统报出与Convert.ToInt32()一样的错误
//char.Parse double.Parse float.Parse略过
//int.TryParse的使用
//语句执行过程,该语句辉县判断字符串能否转换成数字,
//如果能,则会将字符串转换成数字赋值给n1,并返回bool值true,
//如果不能,则将0赋值给n1,并且返回bool值false
int n1 = 1;
bool b1 = int.TryParse("123abc", out n1);
Console.WriteLine(b1);
Console.WriteLine(n1);
//练习:循环输入5个人的年龄并输出,如果出现负数或者答疑150的数直接报错,并停止输入
for (int i = 0; i < 5; i++)
{
Console.Write("请输入第{0}个人的年龄:", i + 1);
int n2 = 0;
bool b2 = int.TryParse(Console.ReadLine(), out n2);
if (b2 && n2 > 0 && n2 <= 150)
{
Console.WriteLine("第{0}个人的年龄为{1}岁", i + 1, n2);
}
else
{
Console.WriteLine("输入年龄有误!!");
break;
}
}
//3、*重点内容:程序调试
//1)写完一段程序后,想看一下程序的执行过程
//2)当你写完这段程序后,发现,程序并没有按照你想象的样子去执行
//调试方法:
//(1)f11逐句进行调试(单步调试)
//(2)f10逐过程进行调试
//(3)断点调试
//黄色标注的代码是即将进行执行但是还没执行的代码
//断点调试
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
//在相应的程序前面的序号左边点击鼠标左键,会出现一个红点,即为断点
//直接点击运行程序,程序执行到断点处就直接停止,然后可以按f11进行逐条代码执行
Console.WriteLine("这行代码可能有错误。。。");
Console.WriteLine("这行代码可能有错误。。。");
Console.WriteLine("这行代码可能有错误。。。");
Console.WriteLine("这行代码可能有错误。。。");
Console.WriteLine("这行代码可能有错误。。。");
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
Console.WriteLine("Hello World!!");
//4、求1——100之间的质数(素数)
for (int i = 2; i <= 100; i++)
{
bool b = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
b = false;
break;
}
}
if (b)
{
Console.WriteLine(i);
}
}
//5、产生随机数
//1)创建能够产生随机数的对象
Random r = new Random();
while (true)
{
//2)让产生随机数这个对选哪个调用方法来产生随机数
int rNumber = r.Next(1, 11);
Console.WriteLine(rNumber);
Console.ReadKey();
}
//6、常量、枚举类型、结构
//1)常量 const
// 格式:const 数据类型 变量名 = 数值;
//2)枚举类型
//语法:
//public(可省略) enum 枚举名
//{
// 值1;
// 值2;
// 值3;
// 值4;
//.........
//}
//每个字符含义:
//public:访问修饰符,公开的公共的,哪都能访问
//enum:关键字,声明枚举的关键字
//枚举名:要符合Pascal命名规范
//应将枚举类型声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举
//枚举就是一个变量类型,跟int、double、string、decimal一样,只是声明、赋值、使用的方式跟那些普通的变量类型不一样
//下面是定义一个枚举变量
Season season = Season.冬;
Console.WriteLine(season);
QQState state = QQState.Online;
//枚举类型默认可以跟int类型互相转换,枚举类型跟int类型是兼容
//转换成int类型之后,默认第一个变量代表0,可以给枚举类型变量中的值进行赋值,然后输出int类型进行找规律
int n = (int)state;
Console.WriteLine(n);
Console.WriteLine((int)QQState.Offline);
Console.WriteLine((int)QQState.Leave);
Console.WriteLine((int)QQState.Busy);
Console.WriteLine((int)QQState.QMe);
//将int类型转换为枚举类型
int n2 = 2;
int n3 = 8;
QQState state2 = (QQState)n2; //直接输出枚举类型中对应变量数值位置的字符串
QQState state3 = (QQState)n3; //枚举类型中的字符串数量小于变量数值8,则不报错,还是输出8
Console.WriteLine(state2);
Console.WriteLine(state3);
//所有的类型都能够调用ToString转换成string类型
//下面是将枚举类型转混成string类型
QQState state4 = QQState.Online;
string s4 = state4.ToString();
Console.WriteLine(s4);
//将string类型转换成枚举类型
string s5 = "0";
//调用Parse的方法可以帮助我们将一个字符串转换成对应的枚举尅性
语句格式:要转换的枚举类型 枚举类型变量名 = (要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型), 要转换的字符串);
QQState state5 = (QQState)Enum.Parse(typeof(QQState), s5);
Console.WriteLine(state5);
//3)结构体struct
//语法结构
//public struct 结构体变量名(单词首字母大写pascal原则)
//{
// public 数据类型 _变量名;
// public 数据类型 _变量名; //字段变量名前加下划线表示字段,为的是与其他变量区分
// ... ...
//}
//例子:定义两个结构体变量张三和李四
Person zsName;
zsName._name = "张三";
zsName._age = 21;
zsName._gender = "男";
Person lsName;
lsName._name = "李四";
lsName._age = 23;
lsName._gender = "女";
//7、数组
//定义一个数组
//格式:数据类型[] 数组名 = new 数据类型[数组大小]
int[] nums1 = new int[10];
//给数组赋值
for (int i = 0; i < nums1.Length; i++)
{
nums1[i] = i + 1;
}
for (int j = 0; j < nums1.Length; j++)
{
Console.WriteLine(nums1[j]);
}
//数组的类型
int[] nums = new int[10]; //数值类型的数组初始值默认为0
string[] str = new string[10]; //字符串型的初始值是null 与""空字符的不同就是,null系统不会开内存
//""空字符的话系统会开内存空间,但是内存里什么都不放
bool[] b = new bool[10]; //布尔数组的初始值默认是false
//声明数组的方式
int[] nums2 = new int[10];
int[] nums3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] nums4 = new int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] nums5 = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.ReadKey();
}
}
}