今天C++期中上机考试 一道很简单的题目 建立一个模拟的堆栈 需要用到函数模板和类模
虽然没有学过但是也不至于做了3个小时都没有搞定 最后还是靠队友完成了
自信心受打击 发现自己真是太垃圾了 真的应该潜下来好好学习
现在每天都坚持跑步 俯卧撑 仰卧起坐 锻炼身体 练半小时以上的吉他 认真听课做作业 多看ASP.NET和C#方面的书 少玩游戏 尽量早睡早起开始正常的作息
希望能调整过来 重新回到好状态
学长说的挺好的 我们经常高估了一个月所能做的事而低估了四年所能做的事
希望自己能坚持 能做到 能对得起自己 对得起心爱的姑娘
矫情完毕 记一点今天看到的内容 比较浅显
属性
为了实现对数据的良好封装,C#为类提供了属性访问函数(简称属性,Property),主要用于控制对字段的访问
private string name;
public string Name//属性
{
get{return name;}
set{name=value;}
//{get;set;}
}
属性的典型用法是一个公有属性封装一个私有或保护字段
可以只读只写
索引函数
常用类型
Object类 是.NET类库中最顶层的积累,它提供了以下4个公有成员方法
string ToString()
Type GetType()//返回对象实际类型
bool Equal(Object obj)
int GetHashCode()
String类 表示字符串类型 它的索引函数时只读的 只提供了get访问函数
String(char[] v)
String(char c,int n)
String(char []v,int s,int n)
char[] v=new char[]{‘s‘,‘o‘,‘f‘,‘t‘,‘w‘,‘a‘,‘r‘,‘e‘};
string s1=new string(v);//s1="software"
string s2=new string(‘M‘,3);//s2="MMM"
string s3=new string(v,0,4);//s3="soft"
String类的ToCharArray方法用于将字符串转换为字符数组
CompareTo进行字符串比较 类似C中的strcmp()
字符操作
int IndexOf(char c);首次出现位置
int IndexOf(char c,int s);从第s个字符开始
int IndexOf(char c,int s,int n);从第s个字符开始,n个字符范围内查找
IndexOfAny 返回字符数组中任意一个字符在字符串中最后出现的位置
LastIndexOfAny
string Trim()
string Trim(char[] v)
string PadLeft(int n)
string PadLeft(int n,char c)
子串操作
IndexOf(...)
LastIndexOf(...)
Contains(...)
StartWith(...)
EndWith(...)
string SubString(int s,int n)
string Insert(int s,string v)
string Remove(int s)
string Remove(int s,int n)
Split方法用于将字符串分隔为一组子串
string s1 = "83,45,19,100";
char[] sep1 = { ‘,‘ };
string[] ss1 = s1.Split(sep1);
int[] x = new int[ss1.Length];
for (int i = 0; i < ss1.Length; i++)
{
x[i] = int.Parse(ss1[i]);
Console.WriteLine(x[i]);
}
结果为
83
45
19
100
格式化和解析
String.Format
格式化能将不同类型的对象转换为字符串格式;反之,从字符串出发来构造其对象的过程叫字符串解析
Parse (可能发生异常)
TryFalse decimal.TryParse("0X000",out d);//d=0
static void Main(string[] args)
{
ComplexNumber c1 = ComplexNumber.Parse("(50+100i)");
ComplexNumber c2;
ComplexNumber.TryParse("(100,300i)", out c2);
Console.WriteLine("{0}+{1}={2}", c1, c2, c1 + c2);
ComplexNumber.TryParse("(100+300i)", out c2);
Console.WriteLine("{0}+{1}={2}", c1, c2, c1 + c2);
Console.ReadLine();
}
}
public class ComplexNumber
{
public double A = 0, B = 0;
public ComplexNumber(double a, double b)
{
A = a;
B = b;
}
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{
return new ComplexNumber(c1.A + c2.A, c1.B + c2.B);
}
public static ComplexNumber operator -(ComplexNumber c1, ComplexNumber c2)
{
return new ComplexNumber(c1.A - c2.A, c1.B - c2.B);
}
public static ComplexNumber Parse(string s)
{
if (s == null)
throw new ArgumentNullException();
s = s.ToUpper();
int pos1 = s.IndexOf(‘+‘);
int pos2 = s.IndexOf(‘I‘);
if (pos1 == -1 || pos2 == -1)
throw new FormatException("输入的字符串格式不正确");
double a = double.Parse(s.Substring(1, pos1 - 1));
double b = double.Parse(s.Substring(pos1 + 1, pos2 - pos1 - 1));
return new ComplexNumber(a, b);
}
public static bool TryParse(string s, out ComplexNumber c)
{
c = new ComplexNumber(0, 0);
if (s == null)
return false;
s = s.ToUpper();
int pos1 = s.IndexOf(‘+‘);
int pos2 = s.IndexOf(‘I‘);
if (pos1 == -1 || pos2 == -1)
return false;
string s1 = s.Substring(1, pos1 - 1);
string s2 = s.Substring(pos1 + 1, pos2 - pos1 - 1);
if (pos1 == -1 || pos2 == -1 || !double.TryParse(s1, out c.A) || !double.TryParse(s2, out c.B))
return false;
else
return true;
}
public override string ToString()
{
return String.Format("({0}+{1}i)", this.A, this.B);
}
StringBuilder类 改善字符串性能 返回的是当前对象 索引函数可读写
StringBuilder s1 = new StringBuilder();
s1.Append("公元");
s1.AppendFormat("{0}年{1}月{1}日", 2008, 8);
Console.WriteLine(s1.AppendLine());