C语言-第5次作业
1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
感受:和数组一样,这又是一个非常陌生的知识点——指针,刚刚开始学习的时候,被陌生的各种赋值方式搞得眼花缭乱,对于使用的方式一筹莫展,真的感觉到自己的代码能力真的很差啦,对自己一度挺失望的,通过老师的讲解和各种函数代码之中频繁出现指针,意识到指针是很重要的知识点。
之后的学习:希望通过后面的自主学习能对指针的用法有所了解,逐渐运用自如,并且把前面的内容也好好复习,融会贯通,要自己多多写代码,减少对于同学的依赖,不要觉得一道题调试一两小时麻烦,对于自己陌生的知识点要做笔记,多多训练,pta上的不太熟练的题也要重新再做。可能是适应和学习能力的问题,觉得老师的上课强度较大,作业量也有点可怕,大作业做的不想其他同学那么轻而易举,由于四级考试和各种论文的压力之下,对于c语言的学习的确有所懈怠,要好好儿弥补,好好儿用心!
1.1.2代码累计
2.PTA总分
2.1排名得分
2.2我的总分
指针:125分;
3.PTA实验作业
3.1PTA题目1
说反话:将输入的一行字符串,以单词为整体倒叙输出,每个单词之间一个空格
3.1.1 算法分析
定义字符数组sen[500001],统计字符长;
定义变量:flag表示输出过单词,word表示是单词,count统计单词字母数;
逆向遍历数组 for i=len-1 to 0
if sen[i] 不是空格
word=1;
count++;
end if
if sen[i]是空格&&前面是单词(例如是pretty)
输出空格
end if
for j=i+1 to i+count //输出该单词(pretty)
flag=1;
end for
if i==0&&count!=0 //第一个单词后无空格单独判断
先输出单词后输出空格
end if
end for
3.1.2 代码截图
3.1.3PTA提交列表及说明
刚开始做这道题的时候以为很简单,不就是倒序输出单词嘛,但是实操之后,确实不太简单,简直是错误套餐
Qs:1.没有想到逆向遍历,没啥思路,请教了同学;
2.没有搞懂判断条件应该是 单词后是空格的话,就输出空格然后输出单词;
3.忽略第一个单词后无空格需要特殊处理;
4.由于有两个辅助判断的变量,容易搞混,错误出来的时候改的地方不对,导致反复错误,没有改正,反而越改越错
4.大作业
函数一览
4.1函数1
思路:【数字转化成字符和字符都存入字符数组】
将主函数中的指针*exp、等级level和题量的选择repeat传递到函数1中
定义char str[]存放 ‘+’、‘-’ 、‘*’ 、‘/’;
switch语句等级划分
switch(level) //通过规律查找,三种情况可以做如下统一处理,通过if语句判断
case 1:
case 2:
case 3:
提醒题集名称 level==1 -> 小试牛刀
产生随机数
采用for循环 控制数字位数 存入exp[]
产生随机运算符
str[rand()%9+1]
控制算式结构
if语句控制是否增加一个数字和一个字符
加上'\0'便于输出表达式
end switch
用户输入非法题集后,提醒更换
4.2函数二
要求避免在除法运算中出现除数为0的情况,但是由于笔者认为在运算中出现0的计算意义不大,且在上一个函数中为了更简洁的同时保证两位数和三位数的生成,规避了数字出现0的情况,就没有设计函数二
4.3函数三
思路:【字符数字转化成数字形式进行运算】
参考了老师的做法
do-while语句判断
do
if exp[i] 是字符数字
将其转化成数字
end if
else //是运算符
oldq==‘+’ -> 做加法运算
while(不是等于号)
导入 判断函数 检测答案是否正确,输入对应评价语句
4.4与原有函数比较
在助教的提醒和阅读同学优秀代码之后,确实发现自己上一版本的大作业函数分装十分乱(虽然这次也不是很好),就没有在原来的基础上修改,而是选择重新写了一份,故而就不晒图做对比‘了
函数一
区别:经过重新写代码,对于指针的稍稍运用,与之前的代码完全不一样
旧:之前是直接生成数字和字符,使用printf的方式直接输出,简单粗暴;
新:对于表达式的生成,采用指针和数组的运用,将数字转化成字符数字,与运算符一同存入数组,输出字符数组,可见指针的便捷度;
优点:旧代码的显而易见,对于初级码农十分简单,基本不会有bug,操作简单;
对新代码来说,大大提高代码质量(虽然也不是很高),使代码看起来更简洁,更加高效,更稳定,避免无效运算0
缺点:两个代码放在一块,旧代码效率低又冗长的缺点一览无遗,而新代码可阅读性不强,有点复杂,容易出现bug
-函数二
有点投机取巧的闪开这个0部分,不过的确是少了一部分需要考虑的东西,但会造成程序不完整
-函数三
区别:
旧:之前的代码比较乱,函数分装的很随意很杂乱,直接在判断运算符时,计算出了结果;
新:将函数一的数组传过来后,将字符数字转化成数字,进行运算
优点:
旧:之前的代码似乎只有好写、没啥阅读难度、不容易出现bug这些只能算方便的特点。。。。。。
新:更加简洁,减少时间和空间,效率更高;
缺点:
旧:分装很差,只是用最基础的switch语句划分计算种类,直接算出结果,质量很低;
新:采用字符数组转换还是有些显得不太灵活;
4.4大作业总结
刚开始知道这个作业的时候真的是一头雾水,可能有点不太能跟上老师的节奏,扑面而来许多知识点,学的有点晕,不太能相通为啥这么神奇,通过一个简单的指针有这么多的作用,所以一时无法下笔,先慢慢啃了一边书和视频,适当向同学请教之后才有所思路,指针的复杂度使整个函数太容易出现bug,让自己很烦躁,觉得专业能力真的太差了,后来在室友们的帮助下,才慢慢堆起来自己的函数,尽管自己也看出来,对于指针的运用还是太少,要好好再认真搞清楚指针的运用,代码能力真的很烂,要更加认真了。
还有一个成绩单,我再优化一下
C语言-第5次作业的更多相关文章
- 关于C语言的问卷调查(作业三)
1.你对自己的未来有什么规划?做了哪些准备? 答:我对我未来的规划就是希望能够学有所用,将来可以从事有关IT方面的,跟自己的专业对口.为此现在我需要多看一些和这个专业有关的书籍,自学一些知识,多些一些 ...
- 网络1711班 C语言第四次作业批改总结
网络1711班 C语言第四次作业批改总结 助教有话说(写在前面) 近来,有同学跟老师和助教们反映:博客作业太多太麻烦,而且对编程能力提高似乎没什么帮助?在这里我要谈一谈我的感想. 博客作业的意义? 首 ...
- 网络1711班 C语言第七次作业批改总结
网络1711班 C语言第七次作业批改总结 1.本次作业评分细则 1.1 基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1 ...
- 网络1711班 C语言第八次作业批改总结
网络1711班 C语言第七次作业批改总结 最近在忙一些琐事,没能及时批改大家的作业,连续两次作业总结也没有很用心写,在这要给大家say sorry. 1.本次作业评分细则 1.1 基本要求(1分) 按 ...
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- 跨语言调用Hangfire定时作业服务
跨语言调用Hangfire定时作业服务 背景 Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作.内置对任务的可视化操作.非常方便. 但令人遗憾的是普遍都是业务代码和hagnfire服 ...
- C语言的第零次作业
C语言--第0次作业 Q1:对于网络专业的了解 一开始我对网络工程这个专业并不是很了解,在报志愿之前,我完全没想过自己会进这个专业,但是经过了一个暑假的时间,我慢慢地开始了解这个学科,并开始对这个专业 ...
- C语言I博客作业02
这个作业属于那个课程 C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...
- C语言I—2019秋作业02
1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...
- C语言I博客作业03
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8717 我在这个课程的目 ...
随机推荐
- ADB——命令大全
基本语法 基本语法 adb [-d|-e|-s <serialNumber>] <command> # serialNumber表示设备序列号,也可以是ip地址 # 如果只有一 ...
- ASM检查RAC是否成功
[grid@asm ~]$ crsctl status resourceNAME=ora.DATA.dgTYPE=ora.diskgroup.typeTARGET=ONLINESTATE=ONLINE ...
- vs code代码对齐快捷键
vscode缩进快捷键: 选中文本: Ctrl + [ 和 Ctrl + ] 实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift + ...
- flask shell命令
在flask项目目录下,使用pipenv shell激活flask虚拟环境后,调用flask shell能够使用虚拟环境的python解释器进入交互式环境,并且工作目录还保留在flask项目目录. f ...
- zipkin链路追踪
zipkin架构说明 zipkin api 我想自己搞一些满足zipkin格式的日志,入库es,然后让zipkin仅做展示 1.需要了解zipkin组件 2,学习zipkin设计原理,何时何地产生日志 ...
- 【Idea】-NO.162.Idea.1 -【Idea Unable to import maven project: See logs for details】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- Netflix是怎样运行的(极度简化版)— 每次点击播放按钮背后的复杂东西
Netflix是怎样运行的(极度简化版)- 每次点击播放按钮背后的复杂东西 本文摘译自 How Netflix works: the (hugely simplified) complex stuff ...
- NetBeans远程调试Linux c++ 11项目
NetBeans远程调试Linux c++ 11项目 由于好多原因,好久没有写博客了,随着c++ 11的普及率越来越高,开发c++ 项目的人也越来越多,可以说c++ 11 给了c++ 这门语言第二次生 ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- 重装@angular/cli reason: write EPROTO 139955972261696:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:252:
前几天不小心卸载了 angular@cli,然后重装的时候发现,一直报错.如下: ××××××××@××××ln622653:/$ npm install -g @angular/clinpm ERR ...