• 1117 查找数组元素


    题目来源:
    https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1117
    Description
    编写程序,输入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()输出删除元素后的数组内容。
    Input
    输入第一行是一个正整数n(1<=n<=10);
    第二行是n个整数,构成一个数组;
    第三行是一个整数x,表示待查找元素。
    Output
    输出删除元素后的数组,每个元素占4列,右对齐。如果不存在,输出“Not Found”。如果数组中有多个x,只删除下标最小的那个。
    Sample Input
    6
    3 6 2 4 7 9
    4
    Sample Output
    3 6 2 7 9
    题意描述:
    输入元素个数n及n的元素和需要查找的元素x
    若x在数组中,就将其删除后输出新数组,若不在数组中就输出“Not Found”
    解题思路:
    先调用find()函数,若查找不成功,输出“Not Found”,若查找成功调用del()函数删除该元素,再调用PrintfArr()函数输出新数组
    程序代码:

     1 #include<stdio.h>
     2 void del(int a[],int n,int x);
     3 void PrintArr(int a[],int n);
     4 int find(int a[],int n,int x); 
     5 int main()
     6 {
     7     int n,a[20],x,i,j;
     8     while(scanf("%d",&n) != EOF)
     9     {
    10         for(i=0;i<n;i++)
    11         {
    12             scanf("%d",&a[i]);
    13         }
    14         scanf("%d",&x);
    15         if(find(a,n,x))
    16         {
    17             if(n==1&&x==a[0])
    18             continue;
    19             del(a,n,x);
    20             PrintArr(a,n-1);
    21             printf("
    ");
    22         }
    23         else
    24         printf("Not Found
    ");
    25     }
    26     return 0;
    27 }
    28 int find(int a[],int n,int x)
    29 {
    30     int i;
    31     for(i=0;i<n;i++)
    32     {
    33         if(a[i]==x)
    34         return 1;
    35     }
    36     return 0;
    37 }
    38 void del(int a[],int n,int x)
    39 {
    40     int i,j;
    41     for(i=0;i<n;i++)
    42     {
    43         if(x==a[i])
    44         {
    45             for(j=i;j<n;j++)
    46             {
    47                 a[j]=a[j+1];
    48             }
    49             break;
    50         }
    51     }
    52 }
    53 void PrintArr(int a[],int n)
    54 {
    55     int i;
    56     for(i=0;i<n;i++)
    57     {
    58         printf("%4d",a[i]);
    59     }
    60 }


    易错分析:
    注意n=1,x==a[0]的特殊情况

  • 相关阅读:
    leetcode整理(一)
    day02 整理
    python从入门到放弃之守护进程
    python从入门到放弃之进程
    基于hashlib下的文件校验
    hashlib(hmac)进阶之client跟server交互
    hashlib以及hmac的日常应用
    python从入门到放弃
    6.redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
    5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6777694.html
Copyright © 2020-2023  润新知