一、PTA实验作业

题目1:输出月份英文名

1. 本题PTA提交列表

2. 设计思路

3.代码截图

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

选择这一题是因为这道题的通过率较低。为什么会这样定义呢“char *month[]”,当时只是随便尝试一下输入十二个月份,没想到可以,于是上网查找一下,这种用法叫指针数组,数组中的每一个都是指针,具体介绍我将写在总结中。

题目2:字符串串动变化

1. 本题PTA提交列表

2. 设计思路

Begin

定义整型变量max,i,j;定义字符型变量temp;
max赋值为0;
for i=1 自增到 *(p+i)为0
if *(p+max)小于*(p+i)
那么max赋值为i;
temp赋值为*(p+max);
for j=max to j=1
*(p+j)赋为*(p+j-1);
*p赋值为temp; End

3.代码截图

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

一开始让j=i开始复制,导致错误,应该从max开始移动,后把i改成max

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

1. 本题PTA提交列表

2. 设计思路

Begin

定义整型变量i,k,p,count;

for i=0 自增直到s[i]为0
if s[i]等于t[0]
then { k赋值为i;
count赋值为1;
for p=1 自增直到t[p]为0
if s[i+p]不等于t[p]
then { count 自减;
break;} }
if count不等于0 then 返回 (s+k);
else 返回 NULL; End

3.代码截图

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

这是原来的部分代码

但是这样不能保存子串最后一次出现在s字符串中的首地址,而且不能做到在s字符串中多次判断子串是否存在,于是添加了k来保存i,当s[i]==t[0]时count=1,如果后面的字符串与子串不同,则令count自减,这里其实用flag也可以,最后如果count为0,则说明s字符串中不存在子串。

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

三、阅读代码

判断合法字符

题目

代码

这篇是梦冰的代码。当时我怎么写也不对,梦冰利用自定义函数来做,代码看起来更加整齐简洁,判断是否是合法字符,先判断首字符是否符合条件,如果符合再进入循环判断是否全部符合,思路简单清晰。

输出GPLT

题目

代码



原本以为这道题很难,但是其实只要数出GPLT的个数然后按顺序输出就可以了,简单有效的方法!

四、本周学习总结

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

结构

结构是C语言中一种新的构造数据类型,能把有内在联系的不同类型的数据汇聚成一个整体,使它们相互关联。同时,结构又是一个变量的集合,可以按照对基本数据类型的操作方法单独使用其成员的变量。

(1)结构类型定义的一般形式:

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

(2)关键字struct和它后面的结构名一起组成一个新的数据类型名。C语言中把结构的定义看做一条语句,所以结构的定义以分号结束。

(3)在结构定义成员时所用的数据类型也可以是结构类型,例如:

struct address{
char city[10];
int code;
int zip;
};
struct nest_student{
char name[10];
struct address addr;
int computer,english,math;
double average;
};

(4)注意:在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。

(5)无类型名定义变量的方式:

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

需要注意的是,由于没有给出结构名,在此定义语句后面无法再定义这个类型的其他变量,除非把定义过程再写一遍。

(6)一个结构类型变量所占的内存空间是其各个成员所占内存空间之和,可以直接用sizeof计算,如 sizeof(struct student),sizeof的运算对象可以是结构类型名,也可以是结构变量名,计算结果以字节为单位。

(7)如果两个结构变量具有相同的类型,则允许将一个结构变量的值直接赋给另一个结构变量,如 s1=s2 。

(8)结构成员操作符为“.”

(9)使用结构指针时,假如指针p=&s1,要用p访问的结构成员进行赋值,则 (p).num=100,另,注意“.”的优先级高于“*”的优先级;还可以用->进行访问,如 p->num=100。

(10)结构指针作为函数参数,如:

自定义函数 int update_score(struct student *p,int n,int course)
调用语句 pos=update_score(students,n,num) /*students为结构数组名*/

指针数组与数组指针

  • 数组指针是指向数组地址的指针,其本质为指针
  • 指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。
  • 指针数组可以作为函数的参量使用,使用方式与普通数组类似。
  • 指针函数与二维数组的对比
    • 二维数组:如char string_1[10][10]只要定义了一个二维数组,无论赋不赋值,系统都会给它分配相应空间,而且该空间一定是连续的。其每个元素表示一个字符。可以通过指定下标对其元素进行修改。
    • 指针数组:如char *str_B[5] 系统至少会分配5个连续的空间用来存储5个元素,表示str_B是一个5个元素的数组,每个元素是一个指向字符型数据的一个指针。
    • 如这样定义:
char a[3][8]={"gain","much","strong"};
char *n[3]={"gain","much","strong"};
那么系统给数组a分配了3×8的空间,而给n分配的空间则取决于具体字符串的长度。此外,系统分配给a的空间是连续的,而给n分配的空间则不一定连续。

由此可见,相比于比二维字符数组,指针数组有明显的优点:一是指针数组中每个元素所指的字符串不必限制在相同的字符长度;二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。 但是二维字符数组却可以通过下标很方便的修改某一元素的值,而指针数组却无法这么做。

(参考自百度百科)

2.罗列本周一些错题。

课堂派5.

应该选D. A中的“p++”也是地址,与p的用法相同。

课堂派2.

不能直接对*(p+2)全部赋值,改正:

*(p+2).num=102030;
*(p+2).name[80]="数据结构";
*(p+2).price=40;

C博客作业--指针的更多相关文章

  1. C语言第九次博客作业--指针

    一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,两个数组a[4],b[4] for i=0 to 3 a[i]*p取各个位 *p/=1 ...

  2. C第九次博客作业--指针

    一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列 2. 设计思路 3.代码截图 本题调试过程碰到问题及PTA提交列表情况说明 刚开始想到的交换是令t=a;a=b;b=t这 ...

  3. c语言博客作业-指针

    一.PTA实验作业 题目1: 1. 本题PTA提交列表 2. 设计思路(用代码表示扣分) 定义整型变量i,count记录平均分,实型变量sum保存总分 for i=0 to n sum = sum+* ...

  4. C语言博客作业指针

    一.PTA实验作业 题目1:统计大于等于平均分人数 本题PTA提交列表 设计思路 定义形参s存放s的首地址,n存放人数m的值,aver存放平均分aver的地址 定义i控制循环,count用来统计高于等 ...

  5. C语言博客作业—指针

    一.PTA实验作业 题目1: 求出数组中最大数和次最大数 1. 本题PTA提交列表 2. 设计思路 定义max表示范围数组中的最大数(初值设为a[0]),z表示找到的元素在数组中的位置: 定义指针*b ...

  6. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  7. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  8. DS博客作业——树

    DS博客作业--树 1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会. 在树这一章节,我们学习的是二叉树的算法. 树的构建:一种是直接给树的顺序存储结构的字符串,一种是通过先序遍历和 ...

  9. DS博客作业--07查找

    目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...

随机推荐

  1. asp.net mvc razor布局页中a标签的href的跳转问题

    笔者做了一个文件上传系统,文件上传后,保存在wwwroot目录的file文件夹中,并把该文件的路径保存到数据库中, 如这样的一个路径保存在数据库: file/b775f487-0127-41e0-9d ...

  2. select选中获取索引三种写法

    $('#someId').prop('selectedIndex'); $('option:selected', '#someId').index(); $('#someId option').ind ...

  3. 微信小程序hidden

    首先hidden默认在display:block;情况下是会默认生效的: but在很多时候只在初始值下有效, 在data下声明 flag:true; 方法中: 无效,所以尽量不要使用hidden这个属 ...

  4. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  5. JavaScript设计模式(10)-观察者模式

    观察者模式 1. 介绍 发布者与订阅者是多对多的方式 通过推与拉获取数据:发布者推送到订阅者或订阅者到发布者那边拉 使并行开发的多个实现能彼此独立地进行修改 其实我们在前端开发中使用到的时间监听就是浏 ...

  6. C#图解教程 第七章 类和继承

    类和继承 类继承访问继承的成员所有类都派生自object类屏蔽基类的成员基类访问使用基类的引用 虚方法和覆写方法覆写标记为override的方法覆盖其他成员类型 构造函数的执行 构造函数初始化语句类访 ...

  7. js 几种排序方法

    1.冒泡排序 var arr = [9, 7, 5, 3, 1]; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j &l ...

  8. Java学习第一周

    第一周学习了JDK的安装和环境的配置,初步了解了Java与C的不同之处,学习了Java的变量.基本数据类型.以及面向对象的基础.并且自行完成了一些简单Java程序的编写. (1)学习了为什么使用抽象类 ...

  9. 【noip模拟】局部最小值

    TimeLimit: 1000ms               MemoryLimit: 256MB Description 有一个n行m列的整数矩阵,其中1到n×m之间的每个整数恰好出现一次.如果一 ...

  10. PHPStorm 最新版 去掉参数提示 parameter name hints

    最新的phpstorm有个默认开启的参数名和类型提示功能, 这对于开发有很大的帮助,但是对于有些同学来说,刚开始可鞥不是很习惯,所以就需要把他给关闭. 在 配置面板中搜索 parameter name ...