一、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. 利用GDI+在Winfrom绘制验证码

    string yzm: private void yangzhengma() { Bitmap bt = new Bitmap(70,22);//创建位图对象 Graphics gs = Graphi ...

  2. 图片压缩上传Thumbnailator 插件

    一,接口已经写死 public static String upload(String appCode, MultipartFile inputFile) public static String u ...

  3. Project入门学习

    Microsoft Office Project制定项目计划时,针对每项任务是可以分配具体的资源的,比如由某个人完成某项任务,或者把某项设备分配到某项任务,这样便于项目的管理和人员.设备的安排及有效利 ...

  4. 【LightOJ1336】Sigma Function(数论)

    [LightOJ1336]Sigma Function(数论) 题面 Vjudge 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+ ...

  5. [BZOJ4736]温暖会指引我们前行

    BZOJ(BZOJ上的是什么鬼...) UOJ 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户),这就使得宿舍楼中有一些路上的温度还是很低. 小 ...

  6. Spring AOP梳理

    一.Srping AOP AOP(Aspect Oriented Programming)解释为面向切面编程,何为切面,用刀把一块面包切成两半,刀切下去形成的面就叫切面,那么面向切面的就是形成切面的这 ...

  7. struct 2 基本知识

    (最近在写一个ssh的项目,虽然看网上好像都说ssh已经过气了...之前虽然老师有上过这个课,我还做了一个PPT专门讲这个来着,但果然没有实践经验还是不容易理解.在参照一个项目写ssh时候,表示四脸蒙 ...

  8. RedHat 7.3 更新yum源

    title: RedHat 7.3 更新yum源 time: 2018.3.15 查看所有yum包 [root@bogon ~]# rpm -qa | grep yum yum-rhn-plugin- ...

  9. BaaS 的由来(1)

    百度百科是这么定义的, BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务.其实不仅是移动应用,现在更多的PC应用也同样适用移动端的标准. 在 ...

  10. View滑动的常见方式

    今天头条的面试官问起了实现View滑动的方式,其实前几天刚刚看过,但还是没能答上来,这里再来总结一遍. 1.使用scrollTo/scrollBy 为了实现View滑动,Android专门提供了这两个 ...