博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言博客05--指针
阅读量:5932 次
发布时间:2019-06-19

本文共 3131 字,大约阅读时间需要 10 分钟。

1.本章学习总结(2分)

1.1 思维导图

1474872-20181217174131671-31612850.png

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

  • C语言的学习感觉在难度上是一直在递增的,这次学习的指针和地址的概念比较抽象,理解上也比较困难,感觉并不是很能够完全领会,再加上近期的线性代数考试等一些考试的准备,对C语言的学习也有所放松,预习复习不够及时,大量知识点需要在经过自己再重新阅读,PTA写得不是很及时,一个星期的量两个星期完成,感到很惭愧。
  • 在上周的博客上也写到要增加打代码的时间,希望从这一周严格执行,赶上学习的进度。

    1.2.2 代码累计

    1474872-20181217175552783-1220980147.png

    2.PTA总分(2分)

    2.1截图PTA中函数题目集的排名得分

1474872-20181223203240682-39947237.png

2.2 我的总分:125

3.PTA实验作业(1分)

3.1 PTA题目1

简要介绍题目求子串在母串中最后一次出现的地址 给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为            NULL。

3.1.1 算法分析

先循环母串找到与子串相同的第一个字符for i=0 to *(s+i)!=‘\0'找到第一个相同的字符    if *(s+i)==*t then先标记1,当找到一半有不同的情况下标0       flag=1      for j=0 to *(t+j)循环子串寻找是否有不同         if *(s+i+j)!=*(t+j)!='\0' then找到有不同的             flag=0;             break; 通过检验没被标0的表明与子串相同      if flag==1 then记录位置         position=i判断有否找到,并返回地址  if(flag==1)      return (s+position);  else      return NULL;

3.1.2 代码截图

题目代码

1474872-20181217193113655-1110034779.png
函数

1474872-20181223203040821-317098292.png

3.1.4 PTA提交列表及说明

1474872-20181217194359460-2145304137.png

Q:为什么出现部分错误
A:再返回地址的时候没有返回正确的地址,把传入的地址返回了,然后检查了好久前面的代码。

4.1.改造函数介绍

1.函数1

产生表达式,分成一级和二三级if (*selectPtr)==1  then//一级     exp[0]=item[0]+'0' 数字    exp[1]=sign[*p1] 加减    exp[2]=item[1]+'0' 数字    exp[3]='=' 等号    exp[4]='\0' 终止    puts(exp) 输出    memset(exp, '\0', sizeof(exp)) 防止下一次产生的表达式粘在一起输出if (*selectPtr)==2||(*selectPtr)==3 then//二三级     for i=0 to 3        if (*selectPtr)==2  then            itoa(item[i],str1,10)整数化成字符,存入数组            strcat(exp,str1)            end if        if (*selectPtr)==3  then            itoa(item[i],str2,10);            strcat(exp,str2);        end if控制加减号和等号的输出        if i==0 then            switch(*p2)                case 0:strcat(exp,"+");break;                case 1:strcat(exp,"-");break        end if        if i==1 then             switch(*p3)                case 0:strcat(exp,"+");break;                case 1:strcat(exp,"-");break;        end if    end for             strcat(exp,"=");//最后附上等号     puts(exp);    memset(exp, '\0', sizeof(exp));//覆盖掉前一个表达式end if

1474872-20181223194745809-838482171.png

1474872-20181223194704906-1062098049.png

截图函数代码。

2.函数2

count以0为加  以1为减分成各种情况进行计算例如if *p2==0&&*p3==0 thenreturn item[0]+item[1]+item[2]end if

1474872-20181223193517210-275727856.png

3.函数3

输入题目的个数循环排错非法字符while scanf( "%d", &quantity)==0  printf("请不要输入无关字符.\n")  fflush(stdin);end while  for  i = 1 to i <=response 控制题目的个数    产生随机符号      *p1=rand()%4;      *p2=rand()%2;      *p3=rand()%2;      if  (*selectPtr)==1 then 1级     产生10以内随机数,生成表达式         expression(&select,sign,item,&k,&x,&y);         if response!=count1(&k,item) then        no++;         error();        printf("正确答案是%d\n", count1(&k,item));          end if          else    yes++;         right()      end else    二三级同上    end if    end forif i==quantity+1 thenprintf("*你的得分是%d",yes*100/(no+yes) )end if

1474872-20181223193321521-1357578710.png

1474872-20181223193352170-1736280779.png

1474872-20181223193427195-795706393.png

4.2与原有函数代码比较

改造前函数1和改造后的函数1

  • 改造前的函数1并不是把数字化成字符行再输出的,优点是:直接随机产生便输出。缺点是:这样的话对于后来的一些功能的实现可能会有障碍,所以化成字符型可以保存再一个数组内要使用时会比较方便一点。

改造前函数2和改造后的函数2

  • 改造前的函数2,并没有被单独出来,它和产生表达式的函数合并在一起。缺点是:导致每一次运算都要写一遍代码量很大。优点好像没有。

改造前函数3和改造后的函数3

  • 改造前的函数3,缺点:一个函数代码量特别的,将近200行 ,让人看着都觉得烦躁。优点:可能是多个功能合在一起不用传参吧。改造后,代码量少了一些,思路让人看着也比较清晰。

4.3 改进大作业总结

回顾两次作业编写过程,总结碰到问题及后续程序编写注意事项。

  • 首先,对于代码量的问题进行总结,比上一次少了将近100行的代码,因为上一次没有构造运算的函数,使得每一次运算都要写一遍,只是变量名不同,运行的方法是一样的,当时对于函数运用比较不灵活,所以没有注意到这一点。
  • 其次,对于碰到问题的解决的速度变快了,一起找问题只会用简单的调试,循环又特别多,每次找都要找很久,循环得眼花缭乱的,现在学会了分部分进行找错,一部分一部分来,可以慢慢缩小范围。

转载于:https://www.cnblogs.com/linshuxin1761/p/10093304.html

你可能感兴趣的文章
西部开源学习笔记《unit 5》
查看>>
《两天DBA教程》目录翻译
查看>>
strstr()
查看>>
memcache
查看>>
查看Linux版本信息
查看>>
浅谈httpd的了解
查看>>
java7,8,9,10新特性总结
查看>>
老妈生日快乐!
查看>>
Microsoft Office2010每次打开都提示激活向导
查看>>
linux命令学习系列12-locate,whereis,which命令
查看>>
优化体系结构 - 混合运算实现 T+0查询
查看>>
QT启程(一)
查看>>
java堆、栈、内存分析.
查看>>
决心书
查看>>
观察者设计模式
查看>>
配置Tomcat监听80端口、配置Tomcat的虚拟主机、Tomcat的日志
查看>>
Fiddler2中文乱码问题
查看>>
看福田奥铃如何玩转信息化魔方
查看>>
使用python语言安装stanfornlp 和hanlp安装包
查看>>
socket模块__python
查看>>