• 1116 删除元素


    题目来源:
    https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1116
    Description
    输入一个递增有序的整型数组A有n个元素,删除下标为i的元素,使其仍保持连续有序。注意,有效下标从0开始。 定义如下两个函数分别实现删除元素操作和数组输出操作。
    void del(int a[], int n, int i);  /*删除数组a中下标为i的元素*/
    void PrintArr(int a[], int n); /*输出数组a的前n个元素*/


    Input
    输入分三行,第一行是一个整数n(n<10),第二行是n个整数,第三行是要删除元素的下标i,i>=0。


    Output
    输出删除下标为i的元素后的数组元素,数据之间用空格隔开。
    Sample Input
    6
    1 3 5 7 9 11
    3
    Sample Output
    1 3 5 9 11
    HINT

    请注意当数组只有一个元素,并且被删除之后,则数组为空,此时应该是没有任何输出。常见错误是在此种情况下输出了第一个元素或输出了回车。
    题意描述:
    输入数组元素的个数n及n个元素和要删除的元素的下标
    调用删除函数和输出函数,输出删除指定元素后的新数组元素
    解题思路:

     1 #include<stdio.h>
     2 void del(int a[],int n,int i);
     3 void PrintArr(int a[],int n);
     4 int main()
     5 {
     6     int n,a[20],j,i;
     7     while(scanf("%d",&n) != EOF)
     8     {
     9         
    10         for(j=0;j<n;j++)
    11             scanf("%d",&a[j]); 
    12         scanf("%d",&i);
    13         if(n==1&&i==0) 
    14         continue;
    15         del(a,n,i);
    16         PrintArr(a,n-1);
    17         printf("
    ");
    18     }
    19     return 0;
    20 }
    21 void del(int a[],int n,int i)
    22 {
    23     int k;
    24     for(k=i;k<n-1;k++)
    25         a[k]=a[k+1];
    26      
    27 }
    28 void PrintArr(int a[],int n)
    29 {
    30     int i; 
    31     for(i=0;i<n;i++)
    32     {
    33         if(i==0)
    34         printf("%d",a[i]);
    35         else
    36         printf(" %d",a[i]);
    37     }
    38 }


    易错分析:
    注意n=1,i=0这种特殊情况

  • 相关阅读:
    C# 获取文件名及扩展名
    Javscript调用iframe框架页面中函数的方法
    jquery事件重复绑定的几种解决方法 (二)
    Jquery 点击事件重复获取叠加 (一)
    .NET 即时通信,WebSocket服务端实例
    .Net ASP.NET 打开指定文件夹
    动态 hover 使用变相使用
    给 layui upload 带每个文件的进度条, .net 后台代码
    layui upload 后台获取不到值
    ECharts配置项之title(标题)
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6777689.html
Copyright © 2020-2023  润新知