码迷,mamicode.com
首页 > 其他好文 > 详细

C博客作业--指针

时间:2017-12-17 16:59:35      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:for   学习总结   自定义   循环条件   长度   实验   进入   完全   tmp   

一、PTA实验作业

题目1(6-5)

(1).本题PTA提交列表

技术分享图片

(2)设计思路

技术分享图片

(3)代码截图

技术分享图片

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

  • 头一次的段错误,是因为循环条件写成了*f<=*l,而不是f<=l
  • 技术分享图片
  • 当只输入一个字符时,出现了问题
  • 技术分享图片
  • 原因在于当只有一个字符时j就为负数,不进入循环
  • 所以就改换为用strlen函数,去除无用的flag变量,使循环正常结束时输出1,在循环里如果满足条件的话就返回0

题目2(6-8)

(1).本题PTA提交列表

技术分享图片

(2)设计思路

//定义循环变量i
//输入t字符串
for i=0 to *(t+i)!=‘\0‘;//遍历字符串
//判断m和i的关系
if m > i
    for i=0 to MAXN
        *(s+i)=‘\0‘;
    end i
else
    for i=0 to *(t+m-1)!=‘\0‘  //赋值
        *(s+i)=*(t+m-1);
        m++;
    end i
*(s+i)=‘\0‘;//加上结束符

(3)代码截图

技术分享图片

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

  • 技术分享图片
  • 这里我看错了题目,以为是找到和m相同的数,于是整个写错了。之所以拿到了一分,是因为当m的值超过t的长度时输出的是空。
  • 并且试了几次之后发现要在自定义函数里输入t字符串的值,于是加上了gets(t)一句
  • 技术分享图片
  • 技术分享图片
  • 技术分享图片
  • 这两个的错误原因是一样的,都是因为我把输出空字符串的条件设为m>=i,而题目要求的是在这种情况下要输出第m位字符

题目3 (6-10)

(1).本题PTA提交列表

技术分享图片

(2)设计思路

//定义循环变量i,最大值所在的下标k,存放最大值的max
max=*p//给max一个初始值
//遍历寻找max,并记录其下标
for i=0 to *(p+i)!=‘\0‘
    if *(p+i) >= max
        max=*(p+i);
    k=i;
    end if
end i
//循环后移
for i=k to i=1
     *(p+i)=*(p+i-1);
end i
*p=max;//把max放在第一位

(3)代码截图

技术分享图片

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

  • 技术分享图片
  • 这里的错误就是在于把i--写成了i++,于是字符串开始无限增长,所以就段错误了

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

PTA排名

技术分享图片

三、阅读代码

1)strstr函数

const char *mystrstr (const char *s, const char *sub_s)
{
    int i, j;
    int tmp = 0;
    for (i = 0; s[i] != ‘\0‘; i++) { // i遍历主串,包含子串即返回i下标位置
        j = 0; // 子串位置每次从头开始
        while (s[tmp++] == sub_s[j++]) { // tmp遍历主串,主做判断下标0到字符串末尾\0
            if (sub_s[j] == ‘\0‘)
                return &s[i];
        }
    }   
    return NULL;
}
  • 从代码可看出,其功能为返回第一次子串的下标。
  • 遍历主串,找到子串的首字符,并开始判断,若完全符合子串,就直接返回下标的位置;若循环正常结束,就返回空。
  • 优点就是使用自增的方式让下标变化,以及对主串遍历的处理方式。

2)strcpy函数

char *mystrcpy (char *dest, char *src)
{
    char *p = dest;
    while (*dest++ = *src++);
    return p;
}
  • 巧妙的使用字符串的结束符和自增,使得只用一行就可以完成指针自增,将字符串src赋值到字符串dest里,最后返回指向字符串dest开头的指针p,简洁巧妙的风格。

四、本周学习总结(3分)

1、学习总结

  • 结构体的运用——尤其是结构体数组和指针的运用在解决一部分编程题目(像是多个事物的不同属性都要用到)时对我们有极大的帮助。
  • 结构体数组或是指针都可以像普通变量一样被使用
  • 将结构体作为函数的形参时实际上是再次创建了一个结构体,所以不如直接使用结构指针指向结构体所在的内存来的方便。
  • 如何设置结构体使得题目难度降低也是一个要学习的地方

2、罗列本周一些错题

  • 技术分享图片
  • 错误原因是对于循环的边界条件没有想清楚
  • 技术分享图片
  • 错误原因在于没有完全理解结构体的使用方式,然后就没有发现d选项的错误:它的下标超出了数组长度。

C博客作业--指针

标签:for   学习总结   自定义   循环条件   长度   实验   进入   完全   tmp   

原文地址:http://www.cnblogs.com/linyue711/p/8034405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!