C语言指针作业
一、PTA实验作业
题目1:6-5 判断回文字符串
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 第一次做的时候我j直接等于count,其实j应该等于count-1,因为count是包括结束标志的字符串长度
题目2:6-10 字符串串动变化
1. 本题PTA提交列表
2. 设计思路
定义整型变量i,j,flag,字符型变量max
令max等于字符串第一个字符
i=1 until *(p+i)!='\0'
如果max小于*(p+i) 令max等于*(p+i) flag等于i
i + +
end for
j=flag to 1
*(p+j)等于它的前一位
j - -
end for
将max赋给指针所指第一个字符
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 第二个循环j大于等于1,我漏了个等于
题目3:6-11 报数
1. 本题PTA提交列表
2. 设计思路
定义整型变量count=0,i=0,j,flag=1,t=n,定义一个整形数组a[n]用来表示游戏的人
当i小于n时
a[i]=1;i++;
end
当t大于0时
j=0 to n-1
如果a[j]等于0,跳过下一步
count++
如果count=3
令a[j]等于0,count=0,out[j]等于flag,flag自增1,t自减一
end for
end
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 可能是字符数组做多了,我一开始不知道怎么想的,把flag的值赋为0,导致每一个结果都小了1
- 一开始我做这道题时没有思路,不知道怎么下手(写了一个陷入了死循环的代码,可惜没截图,也忘了具体步骤了),后来我百度了一下想找点思路,发现可以用数组a[n]全为1来表示游戏中的人没有退出, 如果退出了,相应的数组的值就变为0,结合这一点,做这道题就容易多了
二、截图本周题目集的PTA最后排名。
三、阅读代码
1、
- 这是PTA上字符数组6-9的代码,功能是实现将句中所有单词的顺序颠倒输出即说反话
- 这段代码是周四上机课欧阳同学的代码,这里使用了指针,通过指针的指向输出顺序颠倒的数组,这样会比新定义一个数组来存放颠倒后的数组更方便
2、
- 该函数功能是查找子串在主串第一次出现的地址
- 代码优点是把主串或子串为空的情况考虑进去了
四、本周学习总结
一、学到的知识
1、结构体的运用
1、定义一个结构体
- struct 结构名 {
类型名 结构成员名1;
类型名 结构成员名2;
类型名 结构成员名3;
······
};
!!!最后面的分号不能忘
2、结构变量初始化
- 在定义时对其赋值
如:struct student s1={101,"zhang",78,87,85};
3、结构变量成员的引用
- 格式为:结构变量名 . 结构成员名(.为结构成员操作符)
4、结构变量做函数参数的优缺点
- 优点:可以传递多个数据且参数形式较简单
- 缺点:对于成员多的大型结构,参数传递时所进行的数据复制使效率较低
5、结构数组
- 定义及初始化:例如:struct student students [50]={{101,"zhang",78,87,85},{102,"wang",72,89,86}};
- 结构成员引用:格式为:结构数组名[ 下标]. 结构成员名(依然使用结构成员操作符.)
6、结构指针
- 指针访问结构成员:(*p).num 或 p->num 均可
- 指针做函数参数:
7、结构体个人总结
- 学了结构体,我感觉它就像是一个我们自己创造出来的变量,我可以像操作整型变量和字符变量那样来操作,唯一不同的就是结构成员的使用了
错题
这里的函数是没有给返回值的,我做的时候不知道在想什么,最后居然用了return,大概是没完全搞懂函数的意思吧
这里有两个错误,一个和上面一样,另一个就是我的小失误了,我没注意到下面用的是n,所以写的时候用了m(这种小失误是没认真看题的后果)