数组大折腾

//(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。
#include <iostream>

using namespace std;

int main()
{
    int a[20]= {1,2,3,4,5,6,7,8,9,1};//初始化前10个元素
    cout<<"请输入十个整数"<<endl;
    for(int i=10;i<20;i++)
    {
        cin>>a[i];
    }

   for(int i=0;i<20;i++)
   {
       cout<<a[i];
       if((i+1)%5==0)cout<<endl;
   }
   return 0;
}


(2)创建一个长度为10的整型数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数据加倍,输出改变后的值。

#include <iostream>
using namespace std;

int main()
{
    int a[10]= {2,2,3,4,4,3,2,56,7,8};

    for(int i=9;i>=0;i--)
    {
        cout<<a[i]<<endl;
        a[i]*=2;
    }

    for(int i=9;i>=0;i--)
    {
        cout<<a[i]<<endl;
    }

   return 0;
}


(3)创建一个长度为16的整型数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值。输出如图示。

#include <iostream>
using namespace std;
int main( )
{
    int i;
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,};//懒    
    //元素数值为3的倍数
    for(i=0;i<16;i++)
    {
        if((a[i])%3==0)cout<<a[i]<<endl;
    }

    //输出下标为三的数值
    for(i=0;i<16;i+=3)
    {
        cout<<'a'<<'['<<i<<']'<<" "<<a[i]<<endl;
    }

    return 0;

}


 

}

 

(4)创建一个长度为16的整型数组a并初始化,删除数组中所有能被3整除的元素(数组中实际有效使用的元素将不足16),输出删除后数组中的全部元素。

 

好吧  这道题瞬间有了C++实现顺序表删除操作的既视感,查询的时间复杂度是o(1);删除的时间复杂度是O(n)

 

#include <iostream>
using namespace std;

int main()

{
    int i,j;  
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,23}; //初始化 - -懒惰。。。
    for(i=0,j=0;i<16;i++)
    if(a[i]%3)      //等同于(a[i]%3!=0)的原因  if语句中是 假如“条件”成立;条件成立为1;不成立为0;既a[i]%3==1成立;既!=0;
    a[j++]=a[i];  //重新将满足条件的元素录入 录入后j自动加1准备录入下一个元素
    for(i=0; i<j; ++i)  
    {  
       cout<<a[i]<<" ";  
    }  
    return 0;  
    
}


(5)创建一个长度为16的整型数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”),输出删除后数组中的全部元素。

                 同样的既视感。。。

#include <iostream>
using namespace std;
int main()
{
    int i,b;
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187}; //初始化
    cin>>b;
    for(i=15;i>0;i--)
    {
        a[i]=a[i-1];
    }
    a[0]=b;
    for(i=0;i<16;i++)
    {
        cout<<a[i]<<" ";
    }

    return 0;
}


 

完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值