没想到都已经学习完C语言的灵魂—指针的内容了(固然也是C里面最难学习的内容了)。虽然在以前就有听学习进度比较快的同窗大概介绍过指针,不过那时候是仅限于知道这个是一个特好用的东西,不过开始学习就懵逼了,上课听老师讲课只知道这个指针指向那个地址又对应哪个内容,emmmm(自闭了)在通过一段时间学习指针后,。
在指针的调用还有它指向什么内容仍是不是很掌握。数组和字符串和指针之间的联系,好比各元素的地址与数组名及数组名与首地址的对应关系,以及指针在数组、字符串中的储存方式,还有就是发现指针能够处理动态内存的分配问题,而且指针传递的是地址,这样能够大大节省计算机的储存空间和运行成本,反正感受好处多多,不过要学好必需要下大功夫就是了。c++
函数总分: 100分算法
- 定义循环变量i,数组长度替代量n - char *a=s,n=s数组长度-1 - for(i=0到n)同时数组首尾分别日后往前推动 - 在循环内,if(*(s+i)!=*(a+n)),break - 循环外,if(i>n) return true - else return false
Q1:一开始看到题目立刻就想到以前在数组也作过相似的的会问题,因此一开始就按照首尾递进比较的方法来解决
A1:可是发现用并不能像数组那样直观,在devc++上面调,结果输出都是对的,但是改来改去仍是有两个点卡着
A2:一是删减了定义的多余指针变量,二是对循环条件进行了调整数组
在函数那章,咱们已经实现小学四则运算这份做业,如今要求你们把以前设计函数升级改造,原来的函数你们都是用全局变量实现不一样函数参数传递,此次做业要求改地址传递,减小全局变量的使用。函数
- int 计数替代量num,int 循环变量i,int 运算符选择变量op - 定义字符数组str - if(level==1),i=3, while(i--) if(i%2==1) op取随机数表明四种运算符 switch(op) case(0到3)将运算符在exp运算式子后链接起来 else num=rand()%9+1 将整型变量num转化为字符型变量存入数组str中 将str数组中的字符串在exp运算式子后链接起来 - else if(level=2或3 )i=5 while(i--) if(i%2) switch(level) case(2到3)num=rand()%90+10||rand()%900+100;break; 将整型变量num转化为字符型变量存入数组str中 将str数组中的字符串在exp运算式子后链接起来 else op=rand()%2 switch(op) case(0到1)将运算符在exp运算式子后链接起来 将‘=’exp运算式子后链接起来
截图函数代码
学习
- int m=0,sum=0,i=0;char c,char old='+' - do { c = exp从第一个开始 if(c<='9'&&c>='0') m 将字符型数字转化为整型数字 else { if(oldc=='+'||'-'||‘*’||‘/’) sum '+'||'-'||‘*’||‘/’= m; m=0 oldc=c } i++; } while(c不等于'='的时候)end 返回 sum的结果;
截图函数代码
设计
Q: 改造前函数和改造后的函数的不一样及区别,优缺点。
A:原先我式把三个等级分开来卸,各自独自取随机数,独自运算,每次num循环,调用一次就能够获得一个随机计算式子,每一次独立输出就行了,这一次不能用全局变量,改用指针传参。没改全,实际上改完后个人程序运行结果问题多多,还没改好,不过也就把这个贴上来了,至于说选作的那个IsExp函数没有能实现3d
说实话此次要求用指针加函数的写法改进大做业我是懵逼的,由于指针用法不熟悉,因此有一种无从下手无从下手的感受,改了许多天,没有进展,参照林丽老师的博客5的computerExp函数的写法,依葫芦画瓢却是写出来了第三个函数,但是第一个函数怎么弄仍是梦梦的,因而请教了同窗,也从老师推荐的曾俊韦同窗那里学到了itoa(num,str,10)函数能够直接实现遗传整形转化为字符串,头文件#include<string.h> 的知识指针