1、C+学习笔记摘录九C+学习笔记SkySeraph 2010-7-31 阅读整理摘自: 1:#include using namespace std;bool Find(int ,int );void main()int a=1,2,3,4,5,6,7,8,9;bool check=Find(a,9);if (check=true)cout数组a的元素是按照从小到大排列的n; elsecout数组a的元素不是按照从小到大排列的n;bool Find(int a,int n)for (int i=1;in;i+)if (ai=ai-1)/由于 i已经是1 第一次循环中,所以 i就是 2 后面的 i
2、-1 就是1 所以这里条件成立返回假。 并且如果两个元素 相等也会返回假,而只有大于的时候才会返回下面的真return false;return true;/这个就是判断数组元素是否按照从小到大的顺序排列2:#include using namespace std;bool CheckArray(int ,int );int FindA(int ,int ,int );int FindB(int ,int ,int );void main()int a=1,2,3,4,5,6,7,8,9;bool check=CheckArray(a,9);if (check=true)/判断是否是从小到大排
3、序cout数组a的元素是按照从小到大排列的n;int checka;coutchecka;int checkb=FindA(checka,a,9);if (checkb=9)cout对不起,没有查找到你输入的元素位置。n; elsecoutchecka所在的数组位置为:checkb+1endl; elsecout数组a的元素不是按照从小到大排列的n;int checka;coutchecka;int checkb=FindA(checka,a,9);if (checkb=9)cout对不起,没有查找到你输入的元素位置。n; elsecoutchecka所在的数组位置为:checkb+1endl
4、;bool CheckArray(int a,int n)/判断数组排序for (int i=1;in;i+)if (ai=ai-1)return false;return true;int FindA(int m,int a,int n)/递增算法for (int i=0;in;i+)if (ai=m)return i; return n;int FindB(int m,int a,int n)/二分算法int o=0,h=n-1,i;while (o=h)i=(o+h)/2;if (ai=m)return i;if (aim)o=i+1; elseh=i-1;return n;/这个例子是
5、使用前一节的判断数组并且和递增算法和二分算法一起配合使用的方式! 3:#include using namespace std;class Getpublic:bool CheckArray(int ,int );int FindA(int ,int ,int );int FindB(int ,int ,int );void main()Get one;/定义get类的对象 oneint a=1,2,3,4,5,6,7,8,9;bool check=one.CheckArray(a,9);/要调用函数 必须通过对象one来调用 下同。if (check=true)/判断是否是从小到大排序cou
6、t数组a的元素是按照从小到大排列的n;int checka;coutchecka;int checkb=one.FindA(checka,a,9);if (checkb=9)cout对不起,没有查找到你输入的元素位置。n; elsecoutchecka所在的数组位置为:checkb+1endl; elsecout数组a的元素不是按照从小到大排列的n;int checka;coutchecka;int checkb=one.FindA(checka,a,9);if (checkb=9)cout对不起,没有查找到你输入的元素位置。n; elsecoutchecka所在的数组位置为:checkb+1
7、endl;bool Get:CheckArray(int a,int n)/Get: 为成员限定符,指定Get类中的 函数声明 下同for (int i=1;in;i+)if (ai=ai-1)return false;return true;int Get:FindA(int m,int a,int n)/递增算法for (int i=0;in;i+)if (ai=m)return i; return n;int Get:FindB(int m,int a,int n)/二分算法int o=0,h=n-1,i;while (o=h)i=(o+h)/2;if (ai=m)return i;if
8、 (aim)o=i+1; elseh=i-1;return n;/这就是使用对象的方式操作4:#include using namespace std;class Getpublic:int a5;void main()Get one5;/定义一个数组对象 int i;for (i=0;ionei.ai;/接受用户的输入 onei 也是数组 并且也是从0开始 依次排序!for (i=0;i5;i+)coutonei:;/输出第几个元素coutonei.aiendl;/输出用户输入的数组 system(pause);5:#include using namespace std;class Are
9、apublic:Area(int l,int w)lenght=l;wight=w;cout构造函数运行中.长:lenght宽:wightendl;/通过这里的提示我们可以看到 默认构造函数的创建顺序是从0开始依次类推,而析构函数是从最高元素到最低元素 析构的循序Area()cout析构函数运行中.长:lenght宽:wightendl;int Get()return wight*lenght;void Set(int l,int w)lenght=l;wight=w;private:int wight,lenght;void main()Area One4=Area(10,10),Area(
10、20,20),Area(30,30),Area(40,40);/利用构造函数来初始化对象。area 有4个对象 ,对他们每个对象的值进行初始化!coutOne0.Get()endl;/调用get函数来进行初始化的值的相乘。我们可以看到有4个构造和4个析构 那是因为 我们一共创建了4个对象的原因One0.Set(30,24);/可以调用set函数改变他们的参数值coutOne0.Get()endl;coutOne1.Get()endl;coutOne2.Get()endl;coutOne3.Get()endl;6:#include using namespace std;class Areapu
11、blic:Area(int l,int w)lenght=l;wight=w;cout构造函数运行中.长:lenght宽:wightendl;Area()cout析构函数运行中.长:lenght宽:wightendl;int Get()return wight*lenght;void Set(int l,int w)lenght=l;wight=w;private:int wight,lenght;void main()for (int i=0;i10000;i+)Area *One=new Area(3,4*i);/由于椎中内存比栈大。所以 使用栈来消耗内存空间是很不明智的。我们可以使用堆来
12、创建。coutOnei;coutGet()endl;delete One;/如果不删除,你在任务管理器中会发现内存飙升。/这个程序演示了 如果我们无法确定对象的数目或者对象很多的情况下 我们可以把她放到椎中! 7:#include using namespace std;class Areapublic:Area()lenght=0;wight=0;cout不带参数的构造函数.n;Area(int l,int w)lenght=l;wight=w;cout构造函数运行中.长:lenght宽:wightendl;Area()cout析构函数运行中.长:lenght宽:wightendl;int
13、Get()return wight*lenght;void Set(int l,int w)lenght=l;wight=w;private:int wight,lenght;void main()for (int i=0;i10000;i+)Area *One=new Area(3,4*i);/由于椎中内存比栈大。所以 使用栈来消耗内存空间是很不明智的。我们可以使用堆来创建。coutOnei;coutGet()endl;delete One;/如果不删除,你在任务管理器中会发现内存飙升。但是这里也有个缺陷。因为这里的指针只能在FOR循环中作用,如果在FOR外面,那么着10000个对象中前面9
14、999个对象我们都无法访问,如果要访问必须采用以下方法 1-2/*Area *One=new Area10000;1-2 如这里。for (int i=0;i10000;i+)Onei.Set(3,5*i);coutGet()endl;我们可以通过指针运算符直接获取到第一个对象 也就是下表为0的值 当然 也可以用.来获取 使用 coutOne0.Get()即可coutOne1.Get()Get() 的方法 用什么可以使用 one+1 的方式来获取下一个元素 如图 堆中数组对象*/delete One;使用 one 就可以删除 数组名为one 的所有元素对象/这个程序演示了 如果我们无法确定对象
15、的数目或者对象很多的情况下 我们可以把她放到椎中!8:#include using namespace std;void main()enum daymon,tur,wen,thu,fri,sat,sun;/enum 是枚举常量的关键字 表示 day为枚举常量后面是他们的初始化。他们的值夜是从0开始到6结束double temsun+1=82.5,96.2,44.6,45.7,22.1,77.2,75.9;/sun=6 6+1 =7 所以他有7个元素。int day;/定义一个循环变量变量day for (day=0;day=sun;day+)cout星期day+1的化摄氏度:temdayen
16、dl;/定义枚举常量的来替代枯燥的数字变量能够让程序员很形象的理解该变量的作用,便以以后的调试。9:#include using namespace std;void main()int a34=1,2,3,4,5,6,7,8,9,10,11,12;/这个是多维数组的定义和初始化。中间的三个大括号编译器会自动忽略,你加不加都一样,只是为了方便演示而已! ,3X4=12 所以要定义12个元素。也可以看做3行4列。for (int i=0;i3;i+)for (int j=0;j4;j+)coutaij的值为:aijendl;/这样 就可以输出二维数组所在的值。/二维数组的定义演示,这个排行元素的
17、顺序也就是在内存中的排放元素的循序。10:#include using namespace std;void main()char a=p,r,o,g,r,a,m,0;/0 是字符串结束标志。他一般都在字符串最后。用以提示结束。这样,我们可以不用在做for循环就可以使他输出完毕!coutaendl;/这个就是字符串的输出与定义11:#include using namespace std;void main()char ch55= , ,*, , , ,*,*,*, ,*,*,*,*,*, ,*,*,*, , , ,*, , ;/定义二维字符串数组。输出一个图形int i,j;for (i=0
18、;i5;i+)for (j=0;j5;j+)coutchij;/输出第一个元素的1-5的元素coutn;/换行。12:#include using namespace std;void main()char a12=Hello World;/我们知道字符数组的定义和初始化太麻烦,所以要使用 字符串的形式来定义 这样 就简单多了coutaendl;13:#include using namespace std;void main()char a12;cout 来接受 那么如果你输入的中间有空格 那么就不会输出后面的部分 那是因为 他默认吧 空格当作 字符 结束标志。而你输入过长,会引起数组越界
19、那么程序就会崩溃,所以使用 cin.get 来限制 他一个参数 是接受 数组 令一个是用来限制数组的长度 还有一种叫 gets() 他可以不管你是否有空格都强制为连接一起的 但是他没有限制长度功能。cout你输入的字符为:aendl;/这样 在输出的时候 他会把过多的字符 给去除掉。从而不会报错/这就是字符串输入的一些问题14:#include using namespace std;void main()char a20=My Name is ;char b=jack;coutstrcat(a,b)endl;/strcat 的功能是 字符串连接函数 ,他把 b中的字符放入a中了 所以 a这里
20、一定要定义 元素 不然他会报错,因为 编译器会把初始化的内容当作元素 但是 strcat 是把 b里面的元素放入到了 a 中 那么 a就会引起越界问题 所以要定义一个足够大的数。一般在实际应用中 都使用 strcat_s 相信你是用 vc+ 2008的已经看出来了!coutaendl;15:#include using namespace std;void main()char a20=My Name is ;char b=jack;strcpy_s(a,Mick);/这个函数的作用是拷贝,也就是把她的第二个参数拷贝到第一个参数中 然后在返回第一个参数的值,需要注意的是 他也需要足够的空间 还
21、有一点就是 第一个参数必须是数组 第二个参数可以是数组或者字符串。coutaendl;/这种格式的代码才是真正的C+代码 以前的VC6 是不标准的。而且也是不安全的。所以我改动了下16:#include using namespace std;void main()char a20=My Name is ;char b=jack;coutstrcmp(a,b);/字符串比较函数,他把A和B拿来对比 如果两个字符串的ASCAL码一样 那么返回0 如果A大于B 返回-1 A小于B返回1 这样 我们可以用他来比较 用if 语句 if(strcmp(a,b)=0) 这种方式17:#include us
22、ing namespace std;void main()char a=My Name is ;_strupr_s(a);/这个函数的意思是 把小写的字符全部转换为大写coutaendl;18:#include using namespace std;void main()char a=MY NAME IS ;_strlwr_s(a);/这个函数的意思是 把大写的字符转换为小写coutaendl;19:#include using namespace std;void main()char a=MY NAME IS;strlen(a);/这个函数的意思是 统计数组A中的元素的长度 注意的是 这
23、个函数不包含 0 的字符结束标志,我们以前输入的 hello world 定义的是12 但是输入的是11 因为他最后一个是要给他留一个字符结束标志的。coutaendl;system(pause);/这个是 按下任意键结束的意思 如果你不想用 ctrl+f5 的话可以使用这种形式,但是我还是觉得 这个没 ctrl+f5安逸。20:#include using namespace std;void main()const int n=10;int ann;int i,j;for (i=0;in;i+)for (j=0;j=i;j+)if (j=0|j=i)/如果他的列是0 或者他和行相等 那么让他输出1。aij=1;/所以输出1 elseaij=ai-1j-1+ai-1j;/这里是关键。我们从图中可以看到 三角形的下面 的一个数就是 他左上角和上面的那个数字相加的和。这里的 i-1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1