感觉:和数组同样,这又是一个很是陌生的知识点——指针,刚刚开始学习的时候,被陌生的各类赋值方式搞得眼花缭乱,对于使用的方式束手无策,真的感受到本身的代码能力真的不好啦,对本身一度挺失望的,经过老师的讲解和各类函数代码之中频繁出现指针,意识到指针是很重要的知识点。
以后的学习:但愿经过后面的自主学习能对指针的用法有所了解,逐渐运用自如,而且把前面的内容也好好复习,融会贯通,要本身多多写代码,减小对于同窗的依赖,不要以为一道题调试一两小时麻烦,对于本身陌生的知识点要作笔记,多多训练,pta上的不太熟练的题也要从新再作。多是适应和学习能力的问题,以为老师的上课强度较大,做业量也有点可怕,大做业作的不想其余同窗那么垂手可得,因为四级考试和各类论文的压力之下,对于c语言的学习的确有所懈怠,要好好儿弥补,好好儿用心!算法
指针:125分;数组
说反话:将输入的一行字符串,以单词为总体倒叙输出,每一个单词之间一个空格函数
定义字符数组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
刚开始作这道题的时候觉得很简单,不就是倒序输出单词嘛,可是实操以后,确实不太简单,简直是错误套餐
Qs:1.没有想到逆向遍历,没啥思路,请教了同窗;
2.没有搞懂判断条件应该是 单词后是空格的话,就输出空格而后输出单词;
3.忽略第一个单词后无空格须要特殊处理;
4.因为有两个辅助判断的变量,容易搞混,错误出来的时候改的地方不对,致使反复错误,没有改正,反而越改越错学习
函数一览
优化
思路:【数字转化成字符和字符都存入字符数组】 将主函数中的指针*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 用户输入非法题集后,提醒更换
要求避免在除法运算中出现除数为0的状况,可是因为笔者认为在运算中出现0的计算意义不大,且在上一个函数中为了更简洁的同时保证两位数和三位数的生成,规避了数字出现0的状况,就没有设计函数二设计
思路:【字符数字转化成数字形式进行运算】 参考了老师的作法 do-while语句判断 do if exp[i] 是字符数字 将其转化成数字 end if else //是运算符 oldq==‘+’ -> 作加法运算 while(不是等于号) 导入 判断函数 检测答案是否正确,输入对应评价语句
在助教的提醒和阅读同窗优秀代码以后,确实发现本身上一版本的大做业函数分装十分乱(虽然此次也不是很好),就没有在原来的基础上修改,而是选择从新写了一份,故而就不晒图作对比‘了
函数一
区别:通过从新写代码,对于指针的稍稍运用,与以前的代码彻底不同
旧:以前是直接生成数字和字符,使用printf的方式直接输出,简单粗暴;
新:对于表达式的生成,采用指针和数组的运用,将数字转化成字符数字,与运算符一同存入数组,输出字符数组,可见指针的便捷度;
优势:旧代码的显而易见,对于初级码农十分简单,基本不会有bug,操做简单;
对新代码来讲,大大提升代码质量(虽然也不是很高),使代码看起来更简洁,更加高效,更稳定,避免无效运算0
缺点:两个代码放在一块,旧代码效率低又冗长的缺点一览无遗,而新代码可阅读性不强,有点复杂,容易出现bug
-函数二
有点投机取巧的闪开这个0部分,不过的确是少了一部分须要考虑的东西,但会形成程序不完整
-函数三
区别:
旧:以前的代码比较乱,函数分装的很随意很杂乱,直接在判断运算符时,计算出告终果;
新:将函数一的数组传过来后,将字符数字转化成数字,进行运算
优势:
旧:以前的代码彷佛只有好写、没啥阅读难度、不容易出现bug这些只能算方便的特色。。。。。。
新:更加简洁,减小时间和空间,效率更高;
缺点:
旧:分装不好,只是用最基础的switch语句划分计算种类,直接算出结果,质量很低;
新:采用字符数组转换仍是有些显得不太灵活;3d
刚开始知道这个做业的时候真的是一头雾水,可能有点不太能跟上老师的节奏,扑面而来许多知识点,学的有点晕,不太能相通为啥这么神奇,经过一个简单的指针有这么多的做用,因此一时没法下笔,先慢慢啃了一边书和视频,适当向同窗请教以后才有所思路,指针的复杂度使整个函数太容易出现bug,让本身很烦躁,以为专业能力真的太差了,后来在室友们的帮助下,才慢慢堆起来本身的函数,尽管本身也看出来,对于指针的运用仍是太少,要好好再认真搞清楚指针的运用,代码能力真的很烂,要更加认真了。
还有一个成绩单,我再优化一下指针