查找数组元素

缺乏、安全感 2022-06-02 02:57 407阅读 0赞

题目:

编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,如果存在,删除x,后面元素依次向前添补空位,并输出删除元素后的数组。如果不存在,输出“Not Found”。定义一个查找函数find(),在数组a中查找x,若找不到函数返回-1,若找到返回x的下标,函数原型如下:int find(int a[], int n, int x); 然后在main()中,先调用函数find(),若查找失败输出“Not Found”;若查找成功,则调用上一题中定义的函数del()删除该元素,再调用上一题中的PrintArr()输出删除元素后的数组内容。

输入:

输入第一行是一个正整数n(1<=n<=10);第二行是n个整数,构成一个数组;第三行是一个整数x,表示待查找元素。

输出:

输出删除元素后的数组,每个元素占4列,右对齐。如果不存在,输出“Not Found”。如果数组中有多个x,只删除下标最小的那个。

Exemple:

输入:

6

3 6 2 4 7 9

4

输出:

3 6 2 7 9

My DaiMa:

  1. #include<stdio.h>
  2. int find(int a[],int n,int x) //调用函数用来查找数组a里第几个数和x一样
  3. {
  4. int i,flag=-1; //如果没有数和x一样的话,就返回-1
  5. for(i=0;i<n;i++)
  6. {
  7. if(a[i]==x)
  8. flag=i;第几个数和x一样就返回这个数的下标 i
  9. }
  10. return flag;
  11. }
  12. void del(int n,int a[],int flag) //调用函数用来删除数组中下标为flag的数
  13. {
  14. int i;
  15. for(i=0;i<n;i++)
  16. {
  17. if(i>=flag) //由于数组中从第flag数开始的每一个数都变成了它后面的那个数
  18. a[i]=a[i+1]; //因此这里if的判断里用的是>=号,而且只需要让a[i]=a[i+1]即可
  19. }
  20. }
  21. void PrintArr(int a[],int n) //调用函数用来重新输出数组a里的数
  22. {
  23. int i;
  24. for(i=0;i<n-1;i++) //要注意的是这个时候的a数组少了一个数
  25. printf("%4d",a[i]); //要注意题目的要求是占4列,右对齐
  26. }
  27. int main()
  28. {
  29. int a[11],n,i,flag,x;
  30. scanf("%d",&n);
  31. for(i=0;i<n;i++)
  32. scanf("%d",&a[i]);
  33. scanf("%d",&x);
  34. flag=find(a,n,x);
  35. if(flag==-1)
  36. printf("Not Found"); //这是在数组a中没有找到和x相等的数的情况
  37. else
  38. {
  39. del(n,a,flag);
  40. PrintArr(a,n);
  41. }
  42. return 0;
  43. }

发表评论

表情:
评论列表 (有 0 条评论,407人围观)

还没有评论,来说两句吧...

相关阅读

    相关 查找数组元素

    本小节需要你用递归函数实现二分法查找数组元素。 编程要求 用递归函数实现二分法查找数组元素。 提示:先输入一个升序数组,再输入一个数,输出该数在数组中的下标; 不

    相关 查找数组元素

    题目: 编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,如果存在,删除x,后面元素依次向前添补空位,并输出删除元素后的