第二次博客作业

针对中段测试的结果、新手赛的比赛情况,以及之前的课前预习、课中学习、和课后作业情况,回答如下问题:

1  目前自己学习中存在的薄弱的知识点具体有哪些?每个薄弱的知识点都是如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分)

答:我觉得我对指针这个知识点不太理解,不知道什么时候要用指针,用指针和原本学的不用指针有什么区别;

例如,用指针作函数的参数和不用指针做参数时,什么时候一定要用指针才可以达到函数目的,不然结束函数之后变量的值不变;

2  从第五章函数到第七章数组的函数题和编程题(主要是在PTA)中选出至少一道你觉得比较有挑战的题(已解决且不是奇奇的题)。写出解题报告包括:(1)题目大意;(2)解题思路;(3)代码思路,比如画出流程图;(4)核心技术总结;(5)解题过程中存在的问题,以及如何得到解决的。(5分)

答:(1)题目大意:7-2 数组元素换位:在主函数中输入n个整数到数组中,调用函数(要求被调参数为⑴数组名 ⑵数组元素的个数)完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,主函数中输出调换后的数组。要求函数用指针变量作形参。

(2)解题思路:先定义指针min和max,令它们指向数组a[0],然后用for语句让a[0]与a[1]比较,若a[1]更大/小,则让max/min指向a[1],以此类推求出最大最小值,并让指针min和max指向她们,然后进行交换,最后输出;

(3)代码思路:

int *max,*min,t,i;
 max=min=a;
 for (i=1;i<m;i++)
     if (*(a+i)>*max)
     {max=a+i;}
     else if (*(a+i)<*min) {min=a+i;}
 if(min!=a){t=*a;*a=*min;*min=t;}
 if(min!=a){ t=*(a+m-1)t=*a;*a=*min;*min=t;}
int main()
{
 int n,i;
 cin>>n;
 int a[n];
 for (i=0;i<n;i++)
 cin>>a[i];
 mmc(a,n);
 for (i=0;i<n;i++)
 if(i!=n-1) cout<<a[i]<<" ";
 else cout<<a[i];
 return 0;
 }

(4)核心技术总结:指针和数组应用结合。

(5)解题过程中存在的问题,以及如何得到解决的:刚开始自己写的时候思路很混乱,想应用指针却不知从何下手,不知道什么变量要用指针,很容易把地址和普通变量混淆;后来参考了同学的代码,看了一遍别人代码后,缕清思路后自己写了一遍。

posted @ 2018-12-07 22:32  一只翠  阅读(98)  评论(0编辑  收藏  举报