第二次作业
作业要求:【https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4
找两个数中最大者
int max(int a,int b) { int _max=a; if(b>a) { _max=b; } return _max; }
- 解题思路
(1)文字描述
1、根据题意定义代码
2、定义-max = a
3、若b>a,则 -max = b
4、返回-max
(2)流程图
运行截图
调试过程
符合题意,结束调试
- 遇到的问题:无
求一组数中的最大值和次最大值
#include<stdio.h> int main(void) { int max = 0, cmax = 0; int a[10]; int i; for(i = 0;i < 10;i++) { scanf("%d",&a[i]); } max = a[0]; for(i = 0;i < 10;i++) { if(a[i] > max) max = a[i]; } cmax = a[0]; for(i = 0;i < 10;i++) { if(a[i] > cmax && a[i] != max) cmax = a[i]; } printf("max=%d,cmax=%d", max, cmax); system("pause"); }
文字描述
1、定义max = 0, cmax = 0 a[10] i
2、输入数组内的数
3、假设a[0]是最大值,赋值给max
4、在数组中寻找是否有比max大的数,有则替换,找到最大值
5、假设a[0]是次大值,赋值给cmax
6、在数组中寻找是否有比cmax大且不与max相等的数,有有则替换,找到次大值
流程图
遇到的问题
最大值和次大值无法改变。
解决方法:将max =a[0]和cmax = a[0]移出循环
调试过程
最后依然等于5,无法改变
将max =a[0]和cmax = a[0]移出循环后
程序成功
查找整数
#include <stdio.h> main() { int i, n; int a[20]; int j, num = 0; scanf("%d%d", &i, &n); for(j = 0;j < i;j++) { scanf("%d",&a[j]); } for(j = 0;j < i;j++) { if(n == a[j]) { break; } num++; } if(num == i) { printf("Not Found"); return 0; } printf("%d",num); system("pause"); }
文字描述
1、定义i,a[20],j num = 0
2、输入i n
3、输入数组a[20]
4、在a[20]开始查找与n相同的的数,找到则跳出循环
5、判断num是否与i相等 是则没有找到该数输出Not Found
6、输出num
流程图
错误提示及解决方法
问题 会多输出一个5,如图:
原因,if(num == i)循环中没有结束程序的语句,导致下一个输出也输出了出来
解决方法,在循环中加入return 0;
调试过程
找的到的情况:
找不到的情况:
个人总结:
(1)
1、在课上我们学习了数组及调用函数,这部分内容我都已经掌握,但有时还会犯迷糊,需要强加锻炼
2、在课外我学习了出入栈,虽然还不太懂,还需继续学习
(2)
难点:我认为数组的运用和确定全局变量比较难。
对于数组,我经常对于数组中的元素对应什么数值感到困惑,而且在更改数值时常发生混乱,例如作业数组2中的7-4选择法排序,我在跟改数值时改了前面没有改后面。
对于函数的调用的话,定义全局变量是我最不懂的地方,我常常不知道那个是全局变量
解决方法:看书,上网搜资料,对于数组的运用我问了我们宿舍的人,函数的调用我问了老师。
互评和学习进度
点评:
1.张学健同学
2.周文豪同学
3.韩佳勒同学
表格
|
代码行数 |
代码时间/min |
博客字数 |
博客时间/min |
第十二周 |
1500 |
360 |
1500 |
420 |
第十三周 |
1500 |
420 |
0 |
0 |
第十四周 |
1400 |
360 |
0 |
0 |
第十五周 |
1600 |
500 |
800 |
240 |
折现图