第二次作业
一:
作业要求链接:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
二:
函数6-2 找两个数中最大者
1.实验代码
int max( int a, int b ) { int max; if(a>b) max=a; else max=b; return max; }
2.解题思路
(1)文字描述
第一步:首先定义a和b两个变量
第二步;然后使用if语句判断a大于b时候的情况
第三步:当a<b时max=b。
第四步:最后返回max;
(2)流程图
(3)
本题调试过程碰到问题及解决办法
遇到的问题是编译错误;
使用断点进行调试之后发现由于粗心大意在int max( int a, int b )后面多加了一个分号。
将分号删除之后就解决了问题。
数组一:7-2 输出数组元素
1.实验代码
#include<stdio.h> int main() { int i, n, cnt = 0; int a[10]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } for (i = 0; i < n - 1; i++) { a[i] = a[i + 1] - a[i]; } for (i = 0; i < n - 1; i++) { if (i == 0) { printf("%d", a[0]); } else if (cnt == 3) { printf("\n"); printf("%d", a[i]); cnt = 0; } else { printf(" %d", a[i]); } cnt++; } return 0; }
2.解题思路
(1)文字描述
第一步:定义i, n, cnt = 0
第二步:输入n,然后设置for循环输入数组
第三步:利用a[i] = a[i + 1] - a[i]计算后项减前项之差
第四步:每行三个元素的格式cnt == 3,
第五步:cnt循环;
(2)流程图
(3)本题调试过程碰到问题及解决办法
遇到的问题是编译错误;
使用断点进行调试之后发现定义的a【N】出现了错误;
N不是实际的量,将N改为题目要求的10便迎刃而解了。
数组二:7-4 选择法排序
1.实验代码
#include <stdio.h> int main() { int i, j, min, temp, a[10]; for(i = 0; i < 10; i++) { scanf("%d",&a[i]); } for(i = 0; i < 3;i++) { min=i; for(j = i+1; j <10; j++) { if(a[min] > a[j]) { min=j; } } temp=a[i]; a[i]=a[min]; a[min]=temp; } for(i = 0; i < 10; i++) printf("%5d",a[i]); return 0; }
2.解题思路
(1)文字描述
第一步:定义变量 i,n,读入n个数 temp 临时变量
第二步:定义1个数组a,它有10个整型元素
第三步:利用for(i = 0; i < 3;i++)进行趟数控制
第四步:利用for(j = i+1; j <10; j++)起始交换位置
第五步:
利用temp=a[i];
a[i]=a[min];
a[min]=temp;进行交换;
第六步:输出最后结果;
(2)流程图
(3)本题调试过程碰到问题及解决办法
遇到的问题是答案错误
再用Devc++进行调试时发现没有编译错误,但在输出结果上发现5和6的位置没有改变。
后来发现在for(i = 0; i <= 3;i++)这个位置上趟数的控制应该是<3,而不是<=3,
将问题纠正以后,5和6果然换了位置。
三:个人总结
(1)这几周我学习了有关函数,数组的知识。我的收获是了解了什么是数组,
为什么要使用数组,以及怎么去定义数组,
我还学到了引用数组元素,并且知道了二维数组的元素在内存中(按行存放)即在内存中线顺序存放第一行的元素,
再存放第二行的元素。
(2)我觉得在何时使用数组这个地方是个难点。我用了多打代码这个方法,
并且理解其内涵观看网上视频了解了何时使用数组,并去定义数组。
四,(1)互评和学习进度
赵豪
张学健
周文豪
(2)表格和折线图
代码行数 | 代码时间/h | 博客字数 | 博客时间/h | |
第十二周 | 2700 | 15 | 0 | 0 |
第十三周 | 3200 | 18 | 1000 | 6 |
第十四周 | 1800 | 11 | 0 | 0 |
第十五周 | 2200 | 13 | 1100 | 5 |