三个和数组有关的程序题目(C++)

题目一:有n个整数,使前面各数顺序向后移动m个位置

问题描述:

有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前m个数

程序代码:

 

#include<iostream>

using namespace std;

int main(){

    void move(int a[],int n,int m);

    int a[200];

    int n=0,m=0,i=0;

    cout<<"请输入数字的个数:";

    cin>>n;

    cout<<"\n请输入这些数字\n"<<endl;

    for(;i<n;i++){

        cin>>a[i];

    }

    cout<<"\n请输入要向后移动的位数m:";

    cin>>m;

    move(a,n,m);

    cout<<"\n移动后的数字序列为:\n"<<endl;

    for(i=0;i<n;i++){

        cout<<a[i]<<" ";

    } 

    cout<<"\n\n";

    return 0;

} 

void move(int a[],int n,int m){

    int i=0,k;

    int b[200];

    for(i=n-1;i>=0;i--){

        k=(i+m)%n;

        b[k]=a[i];

    }

    for(i=0;i<n;i++){

        a[i]=b[i];

    }

     

}


 

运行界面:

三个和数组有关的程序题目(C++)

题目二:狐狸找兔子

 

问题描述:先建立一个数组a[100]并置初始值为0,然乎输入洞穴的数量n。 在进行循环,通过循环来模拟找洞穴的过程,所有被找到的洞穴对应的数组的值置为1,如此循环1000次。 然后将数组的前n个元素,依次判断,并输出元素值为0的数组的i。

程序代码:

 

#include<iostream>

using namespace std;

int main(){

    int a[100]={0};

    int i=0,k=0;

    int n;

    cout<<"请输入洞穴的数量n:";

    cin>>n;

    for(i=1;i<=1000;i++){

        k=(k+i)%n;

        a[k]=1;

        if(k==0){

            a[n]=1;

        }

    }

    for(i=1;i<=n;i++){

        if(a[i]!=1){

            cout<<"\n洞穴"<<i<<"安全"<<endl; 

       }

    }

	cout<<endl;

    return 0;

}


 

运行界面:

三个和数组有关的程序题目(C++)

题目三:有n个人围成一圈,顺序排号。

 

问题描述:有n个人围成一圈,顺序排号。从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号

程序代码:

 

#include<iostream>

using namespace std;

int main(){

    int a[1000];

    int n=0;//n表示一共多少人

    int m=0;//m表示被淘汰的人数 

    int i=0;//每轮循环中的计数器 

    int k=0;//用来表示报数的数 

    int j=0;

    cout<<"请输入总人数:";

    cin>>n;

    for(j=0;j<n;j++){

        a[j]=j+1;//对所有的人进行编号 

    }

    while(m<(n-1)){

        if(a[i]!=0){//判断该人是否已经淘汰 

            k++;//若没有淘汰,则参与围成新圈 

        }

        if(k==3){

            a[i]=0;//淘汰报数为3的人 

            k=0;//从新报数,报数为3的置成0,下一个就是置成了1 

            m++;

        }

        i++;

        /*

            i从0开始,一直到n-1,i++之后若等于n,则说明已经经过了队尾 ,

            要重新进行循环 

        */

        if(i==n){

            i=0;

        } 

    } 

    for(j=0;j<n;j++){

        if(a[j]!=0){

            cout<<"\n最后剩下的人原来的编号为:"<<a[j]<<" 的人\n"<<endl;

        }

    }

    return 0;

}


 

运行界面:

三个和数组有关的程序题目(C++)

你可能感兴趣的:(C++)