C博客作业--指针
一、PTA实验作业
题目1:统计大于等于平均分人数
1. 本题PTA提交列表
2. 设计思路
定义形参*s存放s的首地址,n存放人数m的值,*aver存放平均分aver的地址
定义i控制循环,count用来统计高于等于平均分的学生人数
定义浮点型指针*p让p=s存放数组s的首地址
for i=0 to n {
aver累加p指针指向的单元格内的值统计出所以学生成绩总分
}
aver除以人数n算出平均分
p=s将p指针重新指向s数组第一个地址
for i=0 to n {
如果指针p指向单元格内的数据大于平均分aver则count自增
}
返回count的值
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
刚刚开始直接拿s指针来做递增,导致做完统计总分的那个循环后就不知道s的首地址在哪了 解决办法:重新定义一个指针p让p=s,然后用p来做自增,这样就可以不改变s指向的地址,从而知道首地址在哪了。
题2:过滤字符串只保留串中的字母字符
1. 本题PTA提交列表
2. 设计思路
定义函数名为fun的无返回型函数,定义字符型指针*p接受字符串str的首地址
定义i控制变量 max存放最大ASCII码值的下标
for i=0 to p[i]!='\0' {
当i=0时max=0
如果有p[i]的ASCII码值大于p[max] 的ASCII码值 则max=i记录下标
}
定义一个temp作为换位置的桥梁
temp=p[max]
for i=max to 0 {
把p[i]的值换为p[i-1]//逐个往后推一位
}
p[0]=temp
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 刚刚开始不知道ASCII码值如何比较 解决办法:使用强制类型转换比较大小,不知道还有没有其他办法,想学习一下。
题目3:输出月份英文名
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 部分错误 解决办法:八月份的英文打错了....
- 刚刚开始是把十二个月的英文名存在一个字符串内,用指针递增的办法,但是最后没能实现 解决办法:想到之前用过switch的分支法就用这个来实现了,但是还是希望能看到有同学用存在字符串内的办法,让我学习学习。
- 虽然pta对了,但是我还是想问一下这堆警告是什么
二、截图本周题目集的PTA最后排名。
三、阅读代码
1.
这是彭希的第八题,做法简洁明了,直接把t字符串的从第t+m-1个单元赋给s字符串就行了,为了比较我贴一下我之前的做法吧,而且这是没有全过的做法
2.
该题要求实现循环报数,如何依次把报到m的人除去组内,如何最后输出每个人出去的顺序数。这题我一开始是没有思路的,看了志湖同学的代码才有思路,在循环内放如三个分支判断,比较形象的呈现报数的过程。
四、本周学习总结
1.自己总结本周学习内容。
- 指针:不懂函数调用时函数名前加个号和不加号的区别
- 结构体:感觉很方便,把一些数据归类在一个结构体内,像是处理一个人的数据,很神奇
- 库函数:很方便,但是目前还不太会用,也记不住名字和功能,应该多使用多熟记
2.罗列本周一些错题。
(1)
这题主要不会toupper函数的用法,现在知道了toupper函数可以把小写字母转换为大写字母 另外tolower可以把大写字母转换为小写字母
(2)
这题没读懂题意,题目要求的是把数字类型的字符转换成整型相加返回,所以sum=sum+*s-‘0’既转换了类型又累加了数字