第四次作业

预习作业、

一、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也总想不起来,想起来了也不知道应该在哪里用。

排序刚开始总是赋错值,长时间不联系也会记错顺序,但还是相对简单的。

冒泡排序还是非常难的,而且非常繁琐,对也不爱预习的我来说,上课一直在半懂不懂中度过。很煎熬,以后一定要勤加预习。

博客链接

https://www.cnblogs.com/chen0803/p/10166956.html

原文地址:https://www.cnblogs.com/sevenG/p/10176189.html