指针

一,PTA实验作业

题目1:7-1 输出学生成绩

1.提交列表

指针_第1张图片

2.设计思路

定义一个数组

输入n值后循环n次输入学生成绩并计算总成绩sum

在数组中用选择排序法或冒泡排序法对学生成绩进行排序并挑选出最大和最小值

用总成绩除以n得到平均成绩

指针_第2张图片

3.本题调试过程碰到问题及PTA提交列表情况说明

指针_第3张图片

 

没有考虑到较多学生数的情况

n最初基数定为100偏小

每次定义数组时将个数尽可能放宽,比如定义为10000

虽然内存占空间较多但客户已应对需存入的数据过多这种情况

题目2:6-6 使用函数实现字符串部分复制

1.提交列表

指针_第4张图片

2.设计思路

定义一个指针和一个字符数组a[n]

输入一段字符串在输入一个数m

在子函数中判断a[m]是否为空指针NULL

若为空指针则输出NULL

否则从a[m-1]开始循环输出至a[n-1]

指针_第5张图片

3.本题调试过程碰到问题及PTA提交列表情况说明

指针_第6张图片

指针_第7张图片

判断空指针的依据并不是‘\0’而是NULL

因此第一个if的判断条件应该改为t[m-1]==NULL

第二个if的判断条件应改为t[i]!='\n'

这样才满足题目的条件和要求

题目2:6-7 输出月份英文名

 

 

 

1.提交列表

指针_第8张图片

 

2.设计思路

定义一个*s指针和整数n

输出一个n然后传到子函数

如果n>12则为空指针NULL,输出wrong input!

如果n<=12则用switch找到对应的月份并输出

指针_第9张图片

 

3.本题调试过程碰到问题及PTA提交列表情况说明

指针_第10张图片

指针_第11张图片

当分支数量过多时容易出现细节错误

比如上图中三月份的拼写错误

需多细心检查

二、同学代码结对互评

1.互评同学

张瑜

2.我与互评同学的代码截图

指针_第12张图片指针_第13张图片

3.我和同学代码不同之处

使用了不同的循环方式for和while

 我还提前定义了空指针NULL

我更喜欢我的代码

因为考虑的更多方面更细节

三、截图本周题目集的PTA最后排名

指针_第14张图片

四、本周学习总结

指针可分为:函数指针,数组指针(多维指针),变量指针,结构体指针。

通过本章学习,学会了数组名是指一个首地址,所以,point=a(point是一个指针,a是一个数组名), a的前面不需要加&符号。

变量名指的是一个值,a[1]指的也是一个值,这些值包含着一个或多个字节,在想要让指针指向这些值的字节的地址时,

需要在变量名以及a的前面加上&符号,即意思是要让指针赋值符号(=)右边的东西是地址。 

数组或变量的数据是一个一个字节的存放的,而且字节的地址是呈现连续的,赋值的时候,从左到右看

越往右,字节的地址号越大。因此,对于多字节数据类型的数组而言,看起来有种“首尾相连”的效果,

因为一个元素的最低位字节其地址的加一地址对应的字节,就是下一个元素的最高位字节。     

简单点来说就是低地址存放高字节,这种现象称为大端排列(常用单片机)。

(注意:有些时候则是低地址存放低字节,这种现象称为小端排列(ARM))

 

 

你可能感兴趣的:(指针)