C语言博客作业—2019-指针
0.展示PTA总分

1.本章学习总结
1.1学习内容总结
- 指针做循环变量:即将指针作为循环变量,在指针移动到某一个位置的时候,达到了循环结束的条件,循环结束。
for (p = a; p <= a + 9; p++)//即指针p作为循环变量 { sum = sum + *p; }
- 字符指针如何表示字符串:字符指针指向了字符数组的首地址。
定义指针*p,字符数组a[] p=a[]//字符指针表示字符数组a[]的首地址
动态内存分配:利用malloc或calloc(区别:malloc动态申请的内存不会自动赋初值,而calloc则会自动赋予初值0;相同点:都需要在结束时释放动态分配的内存)
if ((p = (int*)malloc(或calloc)(n * sizeof(int))) == NULL)//动态申请内存 { printf("Not able to allocate memory.\n"); exit(1); } free(p);//释放申请的内存二级指针、行指针:二级指针指指向一级指针是指针,即指向地址的指针。行指针是指指针本身就指向某一行。
二级指针:int **p//二级指针
行指针:int(*p)指针数组及其应用:利用指针数组存放指针地址,使用时利用指针数组中的元素来输入或者输出某地址的内容。
char* str[100]; //开辟指针数组 for (i = 0; i < n; i++) { str[i] = (char*)malloc(10 * sizeof(char));//申请空间 scanf("%s", str[i]);//输入字符串 str[1]=10;//利用指针数组改变某地址存储的数据 }
- 指针做函数返回值及其注意:不能在函数实现时返回函数内定义变量的地址,因为函数结束时这些对象在函数返回时就会消亡。
因此,函数指针的函数一般都返回全局数据对象或者主调函数中数据对象的地址。
1.2本章学习体会
- 学习较困难,在使用指针作为返回值是时常出问题。
- 大概1400行左右(反复研究教材上的题目),我个人感觉达标。
2.PTA实验作业
2.1合并两个有序数组
2.1.1 伪代码
定义整形flag并赋值为1 定义整形循环变量i 定义整形M,N用来暂存a,b数组的长度 while m,n都不等于0 do flag=2 if( *(a + m - 1) < *(b + n - 1)) *(a + m + n - 1) = *(b + n - 1) n减一 else if ( *(a + m - 1) > *(b + n - 1)) then *(a + m + n - 1) = *(a + m - 1) m减一 if (*(a + m - 1) = *(b + n - 1)) then *(a + m + n - 1) = *(a + m - 1); *(a + m + n - 2) = *(b + n - 1); m,n都减一 end if if(m==0且flag==2) 将b数组剩下的数字都交到a数组前端 if(m==0且flag==1) 将b数组全部直接移入a数组
2.1.2代码截图

2.1.3 总结本题的知识点
- 可以通过指针来处理数组,来改变数组某元素所存储的内容。
- 指针可以作为参数实现函数数据的传递。
2.1.4 PTA提交列表及说明

因为上课讲过,所以一遍过。
***2.2 (指针做函数返回值) 查找指定字符
2.2.1 伪代码
定义len为读入字符串的长度,index初值为 - 1(只要小于0都可以) 读入需要查找的字符ch 读入字符串 for (i = 0; i < len, i++) if (找到) index=i; end for if index不等于初值 输出找到的i else 输出Not Found end if
2.2.2 代码截图

2.2.3 总结本题的知识点
使用scanf时字符串末尾要加上'\n',否则无法输出。
使用for循环寻找时要注意连续多空格的判断。
2.2.4 PTA提交列表及说明

部分正确:未考虑到多空格问题。
2.3 填充矩阵
2.3.1 伪代码
定义整形变量 i; 定义整形变量 j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (i + j == n - 1) p[i][j] = 1; else if (i + j < n - 1) p[i][j] = 3; else p[i][j] = 2; end for
2.3.2 代码截图

2.3.3 总结本题的知识点
使用行指针是要注意(*p)
2.2.4 PTA提交列表及说明

答案错误:填充的数值位置不正确。
运行超时:循环出现错误,循环无法结束。
3.阅读代码

使用bool函数,返回真假。而我一般使用flag或者是1/0判断真假,这个函数可以学习一下。
使用递归函数dog,刚好我们前两天也学了递归函数,学习该代码的优秀地方,dog函数是一个void函数类型,但是有一些判断语句后,加了return,直接结束了该函数的运行,方便而且节省时间
给a[0]=-100000,b[0]=1灵活赋值,然后代入dog函数里面,完成函数功能。
C语言博客作业—2019-指针的更多相关文章
- C语言博客作业05——指针
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 可能因为之前数组那块儿的作业拖得太久了,以至于我觉得指针学的好快,还没反应过来就教完了,然后一开始做题的时候,就是一脸 ...
- C语言博客作业6---结构体&文件
C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
- C语言博客作业06——结构体&文件
C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...
- C语言博客作业4--数组
C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
- C语言博客作业3--函数
C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
- C语言|博客作业10
问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...
- C语言Ⅰ博客作业02
1. 这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程 ...
- C语言博客作业7
本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 熟练运用switch语句 这个作业在那个具体方面帮助我实现目标 完成pta作业 参考文献 文章 ...
- C语言博客作业08
C语言I博客作业08](https://www.cnblogs.com/490-85-00-58-/p/11863312.html) 问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求 ...
随机推荐
- sparksql读取hive数据报错:java.lang.RuntimeException: serious problem
问题: Caused by: java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: ...
- 练习bloc , 动画
有点意思, import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; main()=>runApp ...
- linux入门—安装linux系统(1)
一,linux介绍 linux是一套免费使用和自由传播的类Unix操作系统,简单的说就是不要钱,你可以随便使用,也可以分享给其他人. (剩下的详细内容,个人认为百度百科的内容比我瞎讲强的多,网址:ht ...
- 基于 Express + MySQL + Redis 搭建多用户博客系统
1. 项目地址 https://github.com/caochangkui/node-express-koa2-project/tree/master/blog-express 2. 项目实现 Ex ...
- js跳出循环的方法区别(break,continue,return)(转载)
转自:http://blog.csdn.net/fxss5201/article/details/52980138 js编程语法之break语句: break语句会使运行的程序立刻退出包含在最内层的循 ...
- H3C 802.11网络的基本元素
- 【Docker】docker安装Jenkins
一.下载镜像 docker pull jenkinsci/jenkins 二.运行Jenkins容器 docker run --name myjenkins -d -p 8580:8080 -p 50 ...
- 进程间通信之数据传输--FIFO
One of the fundamental features that makes Linux and other Unices useful is the “pipe”. Pipes allow ...
- linux下给U盘分区&制作文件系统
这几天读到TLCL-Storage Media一节,不由的想要折腾一下U盘,一直以来U盘只是被拿来暂存数据,其内部有没有文件系统,数据怎么管理,那是从来也不清楚,本文就依葫芦画瓢,折腾下手中的King ...
- Linux操作系统的计划任务
Linux操作系统的计划任务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.任务计划概述 Linux任务计划.周期性任务执行 未来的某时间点执行一次任务: at: 指定时间点, ...