11.5 Mon.
善于利用指针。
区分“指针”和“指针变量”两个变量。指针是一个地址,而指针变量是存放地址的变量。
程序第五行的* pointer_1和* pointer_2表示定义两个指针变量pointer_1和pointer_2.‘*’只是表示该变量是指针变量。而第九行printf中的* pointer_1和* pointre_2则代表指针变量pointer_1和pointer_2所指向的变量。
用指针变量作为参数函数:

函数swap的作用是交换两个变量的值,在主函数中将a,b的值分别赋给pointer_1和pointer_2.
11.6 Tues.
输入三个整数a,b,c要求从大到小的顺序将它们输出。用函数实现:

其中利用到指针,在max1中实现两个数对换。然后在max2中调用max1函数。
用不同的方法输出数组中的十个元素:

前面的程序是用常规发也就是下标法输入十个数字,而输出的时候是利用该元素的地址,*(a+i)是该元素的值。后面的程序输入的方法跟前者一样,但输出时是利用指针指向当前数组的元素来输出。
将数组中的10个整数按相反顺序存放:

函数中用形参为指针变量,将实参a[0]与a[n-1]对换,i从0开始++,j从n-1开始--,实现对换。
用指针的方法对10个整数按从大到小的顺序排序:


函数中x【】是形参数组名,在这个函数中i=0;j=i+1;i赋值给K,将k和j比较,若后者比前者大则互换位置,j++,与后面的数在比较,此循环结束后将i++接着比较。主函数中的输入和输出都用到指针。
11.7 Wed.
输出二维数组的有关数据(地址和元素的值):

输出的第一行分别是0行起始地址和0行0列元素地址;第二行是0行0列元素地址;第三行分别是0行起始地址和0行0列的元素地址。
有一个3*4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值:

在for循环时将0行0列的值赋给指针p,if条件是指没输出四个数之后换行,printf输出时必须是* p是p指向元素的值。

(* p)[4]是指定义一个包含4个元素的一维数组的指针变量,第六行不能写成p=a,这样写的意思是将a[0]的值赋给指针p,而p=&a是将含有4个元素的该一维数组整个赋给指针p,输出时(* p)[3]是指将该一维数组的第三列的元素输出。
有一个班,3个学生,各4门课,要求总平均分一级第N个学生的所有成绩:

注意:在average函数中用到两个指针变量p依次指向每个元素,而q是最后一个元素。在函数search中(* p)[4]表示含有4个元素的一维数组,*(*(p+n)+i)则表第(p+n)行的第i列元素的值将其输出。
在上一题的基础上搜索有一门及以上不及格成绩的学生并输出其所有成绩:

在search函数中使该二维数组中的所有元素依次与60比较,若有不及格的则记录该行并利用指针将该行的元素输出。
11.8-11.9 Thur-Fri.
做数据
11.10 Sat.
做这周题目
作业:
第一题:

利用杨辉三角每位数字等于其上一行左上两位数字之和的性质。使用数组来做,先令其第一列的数字全部为1,for循环来算出每个数字的值并将其输出。
第二题:


第二题大概思路:先写一个能求出三个数最小公倍数的函数(找出三个数的最大值的倍数依次除其他两位数若都能整除则该数为三个数的最小公倍数)。下面将分类讨论:①若N为奇数则n,n-1,n-2三个数的最小公倍数为最大的 ②若N为偶数,N能被3整除的情况下n-1,n-2,n-3三个数的最小公倍数为最大;N不能被3整除的情况下n,n-1,n-3三个数的最小公倍数为最大。
第三题:
思路:递归算出阶乘之后将其拆分成一位数,从个位插入数组,倒序输出。这题只做出%70数据n<=30,len<=10.后面会尝试一下100%数据n<100,len<=10000
