第二次博客作业
针对中段测试的结果、新手赛的比赛情况,以及之前的课前预习、课中学习、和课后作业情况,回答如下问题:
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)解题过程中存在的问题,以及如何得到解决的:刚开始自己写的时候思路很混乱,想应用指针却不知从何下手,不知道什么变量要用指针,很容易把地址和普通变量混淆;后来参考了同学的代码,看了一遍别人代码后,缕清思路后自己写了一遍。