预习作业、
一、https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
二、查找整数
1、实验代码
#include<stdio.h> int main() { int n,x,i; int a[20]; scanf("%d %d",&n,&x); for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=0;i<n;i++){ if(a[i]==x) break; } if(i<n) printf("%d",i); else printf("Not Found"); return 0; }
2、实验思路
先输入字符个数n,再输入要查找的数字,然后输入n个数字运行程序,如果有要查找的数字,就输出他在第几位减去1,如果没有就输出
Not Found。
流程图
3、错误调试
试了一下,发现虽然程序可以运行,但是结果是错的,如图:正确结果应改为4,但输出Not Found
研究后发现原来没有加break跳出循环,所以导致结果错误,对break还没有熟练运用
三、求最大值及其下标
#include<stdio.h> int main() { int index=0,i,N; scanf("%d",&N); int a[N]; for(i=0;i<N;i++){ scanf("%d",&a[i]); } for(i=1;i<N;i++){ if(a[i]>a[index]) index=i; } printf("%d %d",a[index],index); return 0; }
2、实验流程
利用for循环定义数组a[i],利用for循环及if-else语句判断a[i]和a[index]的大小情况,若a[i]>a[index],则将i赋值给index,然后输出最大值a[index],及其下标index。
流程图、
3、错误调试
在之前的代码过程中,编译时没有错误,但运行时却怎么都不开始,错误的根源在定义数组a【N】,在输入N的值之前,会与N一起造成定义的混乱,我觉得是这样,就把两句调换了位置然后就正确了。但是为什么正确代码就没有这种矛盾呢?希望有大神能给我更详细的解答。
四、个人总结
通过本周的学习我发现,数组还是对我来说有难度的,尤其是有时候for循环里的条件搞不清应该在循环内还是循环外,以前的break也总想不起来,想起来了也不知道应该在哪里用。
排序刚开始总是赋错值,长时间不联系也会记错顺序,但还是相对简单的。
冒泡排序还是非常难的,而且非常繁琐,对也不爱预习的我来说,上课一直在半懂不懂中度过。很煎熬,以后一定要勤加预习。
博客链接