第二次作业
作业要求(博客链接):https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
PTA作业情况:
一、计算机18秋-函数 6-1 统计个位数字
[1] 实验代码
int Count_Digit( const int N, const int D ) { int count,yushu,i; i=N; count = 0; if(i<0) { i = -i; } do { yushu=i%10; if(yushu==D) { count++; } i/=10; }while(i>0); return count; }
[2] 设计思路
(1)文字描述
第一步:定义这个数的余数yushu,定义替换N的数i,定义D出现的次数count。
第二步:先判断i是否为正数,若是则继续,若否则先转换为其相反数。
第三步:从个位到最高位依次判断各位次上的数是否等于D。
(2)流程图
[3] 运行结果
(1)结果截图
(2)调试截图
(3)遇到问题及解决办法
本题运用了调用函数的方法。
开始时不清楚如何将每个位置上的数与D进行对比。看到题后应先理清思路,应思考如何遍历每个位置上的数,并判断是否与D相等。方法:应将一个数字除尽10,得到余数与D进行比较,再将这个数除以10,如此循环来进行比较。
二、计算机18秋-数组1 7-4 求一组数中的最大值和次大值
[1] 实验代码
#include<stdio.h> #define N 10 int main() { int a[N]; int i,max,cmax; for(i=0;i<N;i++) { scanf("%d",&a[i]); } max=a[0]; cmax=0; for(i=0;i<N;i++) { if(a[i]>max) { max=a[i]; } } for(i=0;i<N;i++) { if(a[i]>cmax && a[i]<max) { cmax=a[i]; } } printf("max=%d,cmax=%d",max,cmax); return 0; }
[2] 设计思路
(1)文字描述
第一步:定义变量i,最大值max=0,次大值cmax=0。
第二步:依次输入十个元素,令max=数组中第一个数,令cmax=0,遍历数组,找出最大值。
第三步:再次遍历数组找出次最大值。
(2)流程图
[3] 运行结果
(1)结果截图
(2)调试结果
(3)运行问题及解决方法
本题最应注意cmax的值如何判断,一定要满足在数组元素中除max值以外,cmax为最大的值。
三、计算机18秋-数组2 7-4 选择法排序
[1] 实验代码
#include<stdio.h> #define N 10 int main(void) { int a[N]; int i,k,j,temp; for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<3;i++) { k=i; for(j=i+1;j<N-1;j++) { if(a[j]<a[k]) { k=j; } } if(k!=i) temp=a[k]; a[k]=a[i]; a[i]=temp; } } for(i=0;i<N;i++) { printf(" %d",a[i]); } }
[2] 设计思路
(1)文字描述
第一步:定义变量i,k,j,temp。将元素依次输入到数组中。
第二步:创建外循环和内循环,将其元素进行比较,将外循环设成只循环三次(因为题内要求排序只排三轮)。
第三步:比较完毕后输出数组。
(2)流程图
[3] 运行结果
(1)结果截图
(2)调试结果
(3)遇到的问题及解决方法
做题前应仔细理解选择法排序的意义 及题的要求。
刚开始没理解题的要求,导致我一直认为是把输入的数从小到大全部排列。
应理解内外循环比较的过程,根据题意,外循环的循环次数应为三次。
四、个人总结
(1)这几周进一步学习了函数及数组,讲解了内存的一些概念,应用了调用函数这个方法。
通过做PTA和看书,更加深入地理解了数组的应用和意义。
(2)我觉得内存知识的理解为较难的地方,数组的应用也不是非常熟练。解决问题最好的方法就是去实践,内存的概念应该用调试及观测地址一点一点去理解,对于提高应用数组的熟练度应多刷题,进行耐心的思考和调试。
五、互评和学习进度
(1)点评
(2)学习进度
表格:
周数 | 此周代码行数/行 | 码代码所用时长/h | 写博客字数/字 | 写博客所用时长/h | 所涉及的知识点 |
第十三周 | 2000 | 8 | 0 | 0 | 函数的应用、内存的理解 |
第十四周 | 1800 | 6 | 0 | 0 | 函数的应用、数组的应用 |
第十五周 | 1900 | 6 | 0 | 0 | 数组的应用 |
第十六周 | 2400 | 12 | 1200 | 6 | 数组的应用 |
折线图: