1055

背景 Background  
  梓轩学姐正在备战NOI
     
     
  描述 Description  
  梓轩学姐为了练习数组的基本操作而请求了山神,包括了数组的输入,输出,查找,插入,删除操作。
山神给了紫萱n个数,然而紫萱学姐是个蒟蒻并不会做,请你帮助她根据山神的操作命令对数组进行操作。

数组下列操作命令
1  i   (1代表输出命令,i代表要输出数组的第i个元素,)
2  i k (2代表插入命令,i和k表示要在数组第i个元素后插入数字k)
3  i   (3代表删除命令,i表示删除第i个数)
4  k  (4代表查找命令,k是要查找的数,如果查找到,输出第一个查找到的数在数组的位置,如果找不到输出-1)

具体解释看样例
     
     
  输入格式 Input Format  
  第一行一个n 表示数组有n个元素  (n<=100)
第二行为n个正整数,小于10^6
第三行为为m,表示下面有m个命令 5<=m<=10000
每行一个命令,每行的第一个数表示命令的意义,数据保证命令合法有效。
     
     
  输出格式 Output Format  
  根据输入的相关命令,输出相应的值。
 
#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
 int n,a[200];
 void x1(int i)
 {
    cout<<a[i]<<endl;
 }
 void x2(int i,int k)
 {
    for(int j=n;j>=i+1;j--)
    a[j+1]=a[j];
    a[i+1]=k;
    n++;
 }
 void x3(int i)
 {
    for(int j=i;j<=n-1;j++)
    a[j]=a[j+1];
    n--;
 }
 void x4(int k)
 {
    for(int j=1;j<=n;j++)
    if(a[j]==k)  {cout<<j<<endl; return;}
    cout<<-1<<endl;
 }
 int main()
{
 freopen("interesting.in","r",stdin);
 freopen("interesting.out","w",stdout);
 cin>>n;
 for(int i=1;i<=n;i++)
    cin>>a[i];
 int m;
 cin>>m;
 for(int i=1;i<=m;i++)
 {
    int x,y,z;
     cin>>x;  
    if(x==1)
    {
     cin>>y;  x1(y);
    }
     if(x==2)
    {
     cin>>y>>z;  x2(y,z);
    }
    if(x==3)
    {
     cin>>y;  x3(y);
    }
    if(x==4)
    {
     cin>>y;  x4(y);
    }
 }
 return 0;
}
原文地址:https://www.cnblogs.com/jzyz-lfy/p/7267320.html