C博客作业--指针

本文总结了PTA编程实践中的三个实验作业,包括求数组中最大数和次最大数、判断回文字符串、使用函数实现字符串部分复制。分享了调试过程中遇到的问题及解决方法,并反思了代码中存在的不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、PTA实验作业

题目1:6-2 求出数组中最大数和次最大数

  1. 本题PTA提交列表
    1232108-20171212170303582-1800573826.png

  2. 设计思路
    1232108-20171215172700808-1302656082.png

3.代码截图
1232108-20171212171722660-1321597590.png

4.本题调试过程碰到问题及PTA提交列表情况说明。
1232108-20171212171857676-441070391.png
我先把a[0]赋给了次最大值,这样使得如果第一个数就是最大值,那么后面找次大值时的判断出错。

题目2:6-5 判断回文字符串

  1. 本题PTA提交列表
    1232108-20171214190123638-1155858484.png

  2. 设计思路
i从头开始遍历,j从尾开始遍历,直到i>j;
if *(s+i)不等于*(s+j),跳出循环 
end
if i<j 说明循环没有正常结束,则其中有配对不成功的,返回false
else 返回true 

3.代码截图
1232108-20171214192627842-2035646134.png

4.本题调试过程碰到问题及PTA提交列表情况说明
1232108-20171214193250592-128712508.png
犯了一个小错误,忽略了数组是从0开始数的,忘记把字符串长度-1了

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

  1. 本题PTA提交列表
    1232108-20171214195123467-779386870.png

  2. 设计思路
    int k=0,j=0,i;
先遍历一遍字符串,得出字符串长度j
if m>j,那么*s=0,为空串
else 
复制数组
i for m-1  to 结尾
*(s+k)=*(t+i)
end;
*(s+k)='\0'

3.代码截图
1232108-20171214195217326-819495839.png

4.本题调试过程碰到问题及PTA提交列表情况说明
在s数组末尾忘记加结束符了

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

1232108-20171214200410717-514149016.png

三、阅读代码

1232108-20171214201832576-2026285342.png
这是课堂派上的一题,功能是将每个
单词的最后一个字母改成大写,他用一个k来控制分支,当遇到非空格时,k=1,空格时k=0,这很巧妙,要是我就会用一堆分支来解决

void Fun(char *str)
{
   int i,j;
   i=j=0;
   while( str[i])
   {
       if(str[i]!=' ')
           str[j++]=str[i];
       i++;
   }
   str[j]='\0';
 }

该函数用来删除字符串中所有空格,首先这个代码真的太精简了,就一个简单的重构数组,就解决了问题,值得我学习。

四、本周学习总结
1.自己总结本周学习内容。

  • 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
  • 指针可以加上或减去一个整数。
  • 指针变量的数据类型是它所指向的变量的类型,一般情况下一旦指针变量的类型被确定后,它只能指向同种类型的变量。
  • 在定义指针变量时需要使用指针声明赋 * ,但指针声明符并不是指针的组成部分。
  • 不能往空指针里写东西,别问我怎么知道的。
  • 指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
  • 两种相同类型的指针相减,表示它们之间相隔的数组元素数目。

2.罗列本周一些错题。
1232108-20171214205425873-1359068206.png

函数定义时忘记加变量类型了,太久没写函数有点忘了,还有\0写成\n
1232108-20171214205940013-2111968064.png

还是函数定义时忘记加变量类型了,还有重构数组的范围没搞清楚,因为数组是从0开始数的。

转载于:https://www.cnblogs.com/hbw985609191/p/8028796.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值