第二次作业
作业要求https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503
一.(函数)判断给定整数奇偶性的函数。
1.实验代码
int even(int n ) { if(n%2==0) return 1; return 0; }
2.解题思路
1)主要描述题目算法。
第一步:输入整数,调用主函数。
第二步:判断整数的奇偶性,和题目要求赋值给整形函数返回主函数。
2)流程图
3.本题调试过程遇到的问题及解决办法
因为是书上的例题编译过程没有任何问题,只是在提交答案时,把主函数也给打上了,所以提交时总显示错误,后来问过同学才明白不用再写主函数了。
二.(数组1)交换最大值与最小值
1.实验代码
#include <stdio.h> main() { int n,i,a[10],c,d,min,max,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } min=max=a[0]; for(i=0;i<n;i++) { if(a[i]<=min) { min=a[i]; j=i; } } c=a[0]; a[0]=min; a[j]=c; for(i=0;i<n;i++) { if(a[i]>=max) { max=a[i]; j=i; } } d=max; a[j]=a[n-1]; a[n-1]=d; for(i=0;i<n;i++) printf("%d ",a[i]); }
2,解题思路
1)主要描述题目算法。
第一步:给数组赋值。
第二步:根据循环求出最大值与最小值。
第三步:交换最大值与最小值。
2)流程图
3.本题调试过程遇到的问题及解决办法。
遇到问题:交换时忘记了找一个中间的介质,导致代码错误。
解决办法:根据提示只有两个交换元素,在其中加入一个中间介质,重新运行结果正确。
三,(数组2)简化的插入排序。
1.实验代码
#include <stdio.h> main() { int n,i,j,x,a[11]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); i=0; while(a[i]<x&&i<n) i++; for (j=n-1;j>=i;j--) { a[j+1]=a[j]; } a[i]=x; for(i=0;i<n+1;i++) printf("%d ",a[i]); return 0; }
2,解题思路
1)主要描述题目算法。
第一步:原本就是升幂的数列,依次比较此项与下一项的大小。
第二步:若大于此项再依次比较下去。
第三步:直到找到比输入值大的一项,把数插在此项的前一个。
2)流程图
3.本题调试过程遇到的问题及解决办法
遇到问题:出现重复数据。
解决办法:多次循环后发现忘记在最后一个循环之前重新给a[i]赋值,更改后可以正常运行。
个人总结
1,最近学习了函数与数组,类型题包括数字金字塔,输出所有大于平均值的数,一维数组,二维数组。在慕课网上学习了switch语句,但还是不太懂。
2,在学习过程中遇到了许多问题,1)总是忘记从零开始计数,通过多打代码熟悉。2)数组这部分的代码非常的不能理解,通过自己阅读教材,问同学,渐渐的明白一点了。
互评和学习进度。
1,互评
梁德辉同学的作业;作为第一个提交作业的人,我认为简直是太厉害的,对本作业的重视程度非常高,但是我认为流程图画的有点太庞大了,有点乱。https://www.cnblogs.com/wsaldh/p/10127051.html
王文琪同学的作业:王文琪同学总结写的非常认真对所学内容很清晰,但是第二个流程图好像部分线条重合了。
https://www.cnblogs.com/qqovo/p/10134759.html
于 桐同学的作业:于桐同学的作业很清晰,但是折线图的各条线代表什么没有给出,我认为这是美中不足的地方。https://www.cnblogs.com/4399yt/p/10139089.html
2,学习进度