博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C博客作业--指针
阅读量:6988 次
发布时间:2019-06-27

本文共 2002 字,大约阅读时间需要 6 分钟。

一、PTA实验作业

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

1. 本题PTA提交列表

1233791-20171216220418389-1794368566.png

2. 设计思路

1233791-20171217160838171-429349243.png

3.代码截图

1233791-20171217100347093-516659161.png

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

1233791-20171217101711936-953155028.png

1233791-20171217102016702-357186689.png

自己最初以为最后会i=j的时候结束并满足,调试后发现最后的i不会等于j,根据回文的特点会继续满足而改变,最终i会等于strlen(s)

而且由于动态赋值的问题,循环要记得结束条件,保证次数,自己把条件修改后正确

题目2:6-7 过滤字符串只保留串中的字母字符

1. 本题PTA提交列表

1233791-20171216220546499-1683875234.png

2. 设计思路

定义循环变量 i=0计数变量count=0; while*ptr!='\0'进入循环     如果*ptr是字母     count++计算字母个数    否则    *ptr='\0'把非字母清'\0'     ptr++; end  返回 count;

3.代码截图

1233791-20171217101021296-887588647.png

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

1233791-20171217102512624-1089921334.png

1233791-20171217102522155-1011733161.png

自己最开始的思路是想用新的字符数组存放满足的数,然后让指针指向新的该字符数组,但是,运行后发现不会像自己想象中的改变

1233791-20171217103747458-638444861.png

查询后发现自己的做法不能改变原有的变量情况,后改正思路,把不满足的数赋上’\0'才正确

题目3:6-9 求子串在母串中最后一次出现的地址

1. 本题PTA提交列表

1233791-20171217140807233-686876694.png

1233791-20171217140822171-812438099.png

2. 设计思路

定义循环变量 i=0,j,count=0用于记下子串的位置 while(*s!='\0')进行循环    当*s=*t 时         j=0 清0开始      while(*(t+j)!='\0')进行内循环           当*s!=*(t+j)时           break;           s++;j++;i++;      end内循环      当*(t+j)='\0'时        count=i-j;     *s=*t的条件结束s++;i++;  end外循环 若count!=0   则s=s-i+count并返回地址 s 其他情况   返回 NULL

3.代码截图

1233791-20171217142333452-631190351.png

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

1233791-20171217140929530-2116456859.png

运行出错,调试后发现自己s++放的位置只在循环内

改正后自己的运行在能找到时总是崩溃,之后发现自己在满足时忘记返回地址

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

1233791-20171217153955624-802565010.png

三、阅读代码

1233791-20171217220759358-1688851855.png

这是pta字符数组中7-7 删除字符串中的子串的代码

该代码非常的简洁,自己在思考这道题时想了很久也很复杂,因为考虑到删除后的字母还能在重新组合并满足删除的条件,自己当时对循环判断这个删除情况有点吃力

但是该代码利用一个新的字符数组存放每次删除后的字符串,重复删除直至不在有可删除的字符串,而且用do while很巧妙,代码效率也高

1233791-20171217180806452-77005200.png

该题灵活的运用库函数让代码变得简洁明了,利用isdigit(s)判断数字,用两个字符数组来分别存放数字与字母,最后利用strcat(p,t)来进行连接,很巧妙

四、本周学习总结

1指针是以地址作为值的变量,而数组名是一个特殊的固定地址,可以看做常量指针

p=a;

p=&a[0];
等价,(a+i)等价a[i]
p=p+1是合法的,但a=a+1不合法*

2指针的算数运算包括两个相同类型的指针相减以及指针加上或减去一个整数

3字符串的输入输出

(1)scanf 遇到回车或空格停止

(2)gets()遇到回车结束
(3)printf遇到‘\0'结束输出
(4)puts()输出遇到'\0'自动转为’\n'

4字符串的复制,连接和比较以及长度

(1)复制 strcpy(s1,s2)把s2复制到s1

(2)连接 strcat(s1,s2)把s2连接到s1后面
(3)比较 strcmp(s1,s2)相等返回0,s1>s2返回正数s1<s2返回负数
(4)长度 strlen(s1)有效个数,不包括'\0'

5结构类型定义的一般形式

struct 结构名{          类型名 结构成员1;          类型名 结构成员2;          ...         类型名 结构成员n;};

分号结束

6在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型

7结构变量也可以在定义时对其赋初值

8嵌套定义的结构变量中,每个成员按从左到右,从外到内的方式引用

9结构运算符优先级高于一般运算符

10如果俩个结构变量具有相同的类型,允许将一个结构变量的值直接赋给另一个

11对结构数组元素成员的引用一般格式: 结构数组名【下标】.结构成员名

12结构指针的值实际是结构变量的首地址,即第一个成员的地址

访问方法:

(1)p->num=10
(2)(* p).num=101 括号要记得

2.罗列本周一些错题

1233791-20171211222304727-1675228979.png

返回值要记得返回首地址

1233791-20171217165445733-1865921266.png

转载于:https://www.cnblogs.com/linxiaolu/p/8047806.html

你可能感兴趣的文章
JavaScript编程:使用DOM操作样式表
查看>>
[android] 手机卫士项目
查看>>
7. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
查看>>
debian下安装mysql
查看>>
给iOS开发者的GCD用户手册
查看>>
044 HIVE中的几种排序
查看>>
Javascript 运行上下文和作用域链
查看>>
Tomcat服务器安装
查看>>
Atcoder训练计划
查看>>
新一日三省吾身
查看>>
ABP框架 - 验证数据传输对象
查看>>
是否值得付费?Oracle,Open JDK等四大JVM性能全面对比
查看>>
49岁程序员:如何靠编程实现财务、精神双自由?
查看>>
get荣耀YOYO智能音箱打电话的新技能 感觉赚了1个亿
查看>>
明明长得一样,怎么就不认识你了呢
查看>>
支付宝风控闹“乌龙”,网友却纷纷点赞叫好
查看>>
2017年度华为感动之星巅峰之旅活动完美收官
查看>>
高瓴资本大幅减持虎牙:半年时间闪进闪出
查看>>
亚马逊CEO贝索斯离婚:拥有身家1369亿美元 已结婚25年
查看>>
这一次升级等了七年 PCIe 4.0终于发布了
查看>>