指针实验报告
一、PTA实验作业
题目1:6-2 移动字母
1. 本题PTA提交列表
2. 设计思路
题目要求将前三个字符后移到最后三位。所以,我将前三个字符分别赋值给三个字符变量。通过strlen函数将字符串长度读出为x。由于题目限定字符串长度最少为4个,所以可将第4字符到x个字符赋值给第一个字符到4-x个字符。最后将之前保存的三个字符变量赋值给最后三个字符,得出答案。
流程图如下
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
思路明确,有提前考虑字符不足6个的情况,直接正确。
题目2:6-7 输出月份英文名
1. 本题PTA提交列表
2. 设计思路
题目要求输入数字输出月份。所以我定义一个指针字符串数组,依次将1-12月份的名称赋值给各个字符串。返回第n-1个数组即为答案。若不在此范围内,则返回NULL。
流程图如下
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
在判断n的时候忘记不能小于0,部分正确。
题目3:7-2 在数组中查找指定元素
1. 本题PTA提交列表
2. 设计思路
输入n,定义一个数组a[n],依次输入n个数。再定义查找的数字x。传入子函数,依次判断x是否与数组中的数字相等。若相等传回数组的角标,若不是,传回-1.再通过对传回的值的判断,得出结果。
流程图如下
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
思路明确,直接正确。
二、同学代码结对互评
1.同学互评照片。
互评题目:7-2
我的代码
黄世坤同学的代码
3.我和同学代码不同在哪里?
思路大致相似,在对于查找数x是否存在上,世坤在循环判断出存在后马上返回值,若结束循环还未返回值,则返回-1.
在这点上世坤同学的思路更加巧妙,所以我更喜欢世坤同学的代码风格。
三、截图本周题目集的PTA最后排名。
四、本周学习总结
1.你学会了什么?
(1)指针变量的定义
定义指针变量的一般形式为:类型名 *指针变量名。
例如:int *p char *cp float *fp double *p
(2)数组和指针
例如:int sum(int a[],int n)中,a[]等价于*a。
(3)用指针实现内存动态分配
4个函数:malloc calloc free realloc
①动态存储分配函数malloc()
申请成功 返回指向所分配存储空间的起始地址的指针,不成功则返回NULL。
注意,在malloc()具体使用中,可将返回值强制转换成特定的指针类型,再赋值给一个指针。
同时可利用sizeof计算存储块大小。
例如:如下格式
if((p=(类型名 *)malloc(sizeof(变量名)))==NULL)
{
printf("error");
exit(1);
}
②计数动态存储分配函数calloc()
与malloc()相似,不同点是:malloc()对所分配的存储块不做任何事情,calloc()对整个区域进行初始化(0)。
③动态存储释放函数free()
功能:释放由动态存储分配函数申请到的整块内存空间。
④分配调整函数realloc()
功能:更改以前的存储分配。
2.本周的内容,你还不会什么?
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装