zoukankan      html  css  js  c++  java
  • 三个和数组有关的程序题目(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<<"
    请输入这些数字
    "<<endl;
        for(;i<n;i++){
            cin>>a[i];
        }
        cout<<"
    请输入要向后移动的位数m:";
        cin>>m;
        move(a,n,m);
        cout<<"
    移动后的数字序列为:
    "<<endl;
        for(i=0;i<n;i++){
            cout<<a[i]<<" ";
        } 
        cout<<"
    
    ";
        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];
        }
         
    }


    运行界面:


    题目二:狐狸找兔子

    问题描述:先建立一个数组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<<"
    洞穴"<<i<<"安全"<<endl; 
           }
        }
    	cout<<endl;
        return 0;
    }


    运行界面:

    题目三:有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<<"
    最后剩下的人原来的编号为:"<<a[j]<<" 的人
    "<<endl;
            }
        }
        return 0;
    }


    运行界面:


  • 相关阅读:
    HTML表单元素
    hadoop编程技巧(3)---定义自己的区划类别Partitioner
    SDUTOJ 2054 双向链表
    serialVersionUID行动
    笔试
    循环队列
    css @media认识
    大约ActionContext.getContext()使用体验
    在希望的田野上--生物柴油(Biodiesel)光明的未来
    SD卡FAT32获得高速的文件格式(图文介绍)
  • 原文地址:https://www.cnblogs.com/pangblog/p/3239084.html
Copyright © 2011-2022 走看看