c语言指针

一、PTA实验作业

题目1:6-2 求出数组中最大数和次最大数

1. 本题PTA提交列表

2. 设计思路

定义整形变量 i,max=a[0],temp,b,lmax=a[1];
for i=0 to n-1;
a[i]>max进行判断是否有更大的数
max=a[i];b=i; a[0]=max将最大数放在数组的第0个
for i=1 to n;
lmax=a[i]进行判断是否有更大的数
lmax=a[i];b=i;a[1]=lmax将次大值放在数组的第一个

3.代码截图

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

  • 没有弄清楚指针和数组的关系,造成编译错误。

题目2:6-9 求子串在母串中最后一次出现的地址

1. 本题PTA提交列表

2. 设计思路

定义整形变量i=0,count=0,bj,j,flag=0,k=0;数组bg[100]
for i=0 to t[i]!='\0'用count++统计数组字符的个数
for i=0 to s[i]!='\0'
s[i]==t[0]继续进行下一步的判断
for j=0 to count-1
j=count说明存在相同的字符,flag等于1用于标记
for j=bj to s[j]!='\0'
用新的数组bg[k++]=s[j]来表示
for i=0 to bg[i]!='\0'
用数组s[i]=bg[i]交换字符,返回 s;
flag!=0,返回NULL
###3.代码截图
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171214145535654-911933216.png)


###4.本题调试过程碰到问题及PTA提交列表情况说明。
 - 没有将数组='\0';立即用于新得到的数组的下面,造成编译器无法输出。
##题目3:6-10 字符串串动变化
###1. 本题PTA提交列表
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171214145942170-1287302875.png)


###2. 设计思路
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216225842796-1515126646.png)


###3.代码截图
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171214150237888-658713838.png)


###4.本题调试过程碰到问题及PTA提交列表情况说明。
#二、截图本周题目集的PTA最后排名。
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171214150338920-1403224704.png)

![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171214150407420-1493890867.png)


#三、阅读代码
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216230127655-1256891475.png)

 - 课堂派的代码看起来明了,能简单就简单,通俗易懂.
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216230715639-2061750905.png)


 - 佳亮这题字符串串动变化用的是数组后移直接排序,简单明了.

四、本周学习总结
##1.自己总结本周学习内容。
 - 用#include<string.h>库函数中的字符串操作函数阿来解题更方便和好理解,例如用strcmp来比较字符串,不用再用for的循环语句来逐个比较,是代码更简洁易懂.
 - 可以用指针来表示数组,在函数定义char *b,在函数下面的内容可以引用p[i]表示主函数中的数组的值;
 - 指针p是一个地址,当它表示数组时,*(p++)就可以逐个表示所表示数组的值.
 - 在应用指针时,要对指针进行初始化操作.
 - 定义一个指针指向另一个指针,对该指针进行赋值等操作,由于地址内容变化
只要有关该地址的指针都会变化
 - 在数据结构中要注意加; 不然会造成编译错误.
##2.罗列本周一些错题。
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216222118811-937128629.png)

 - 参考答案
int *n
a[i]==x
j<*n-1
*n=*n-1
 - 我的答案
int *m; 没有看到下面i<*n;
a[i]==x
j<*n-2 没有考虑边界问题
*n=*n-1
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216222536921-151103213.png)

 - 参考答案
sum=Fun(s)
*s
sum=sum+*s-'0'
 - 我的答案
sum=Fun(s)
*s!=0
sum=sum+*s没有将其转化为数字
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171216223533468-1752057725.png)

 - 参考答案
Length(s)
*q
 return n
 - 我的答案
Length(s)
*q!=0
return 0;返回数量.
posted @ 2017-12-16 23:10  ljy1139  阅读(297)  评论(1编辑  收藏  举报