下面的程序代码实现将一个一维数组中元素向右循环移动,移动次数由文本框Text1输入。例如数组各元素的值依次为0,1,2,3,4,5,6,7,8,9,10;移动三次后,各元素的值依次为8,9,10,0,1,2,3,4,5,6,7。Private Sub MoveRight(x()As Integer)Dim i As IntegerDim j As IntegerDim k As Integeri=UBound(x)j=x(i)For k=i To【 】 Step—1【 】Next kx(LBound(x)

题目

下面的程序代码实现将一个一维数组中元素向右循环移动,移动次数由文本框Text1输入。例如数组各元素的值依次为0,1,2,3,4,5,6,7,8,9,10;移动三次后,各元素的值依次为8,9,10,0,1,2,3,4,5,6,7。

Private Sub MoveRight(x()As Integer)

Dim i As Integer

Dim j As Integer

Dim k As Integer

i=UBound(x)

j=x(i)

For k=i To【 】 Step—1

【 】

Next k

x(LBound(x))=j

End Sub

Private Sub Command1_Click()

Dim a(10) As Integer

Dim i As Integer

Dim j As Integer

Dim k As Integer

For i=0 To 10

a(i)=i

Next i

j=Val(Text1.Text)

k=0

Do

k=k+1

Call MoveRight(a)

Loop Until k=j

For i=0 To 10

Print a(i);

Next i

End Sub


相似考题

4.阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】函数void rcr(int a[],int n,int k)的功能是:将数组a中的元素s[0]~9[n-1]循环向右平移k个位置。为了达到总移动次数不超过n的要求,每个元素都必须只经过一次移动到达目标位置。在函数rcr中用如下算法实现:首先备份a[0]的值,然后计算应移动到a[0]的元素的下标 p,并将a[P]的值移至a[0];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至 a[p];依次类推,直到将a[0]的备份值移到正确位置。若此时移动到位的元素个数已经为n,则结束;否则,再备份a[1]的值,然后计算应移动到a[1]的元素的下标p,并将a[p]的值移至9[1];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至a[p];依次类推,直到将a[1]的备份值移到正确位置。若此时移动到位的元素个数已经为n,则结束;否则,从a[2]开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。例如,数组a中的6个元素如图1(a)所示,循环向右平移两个位置后元素的排列情况如图1(b)所示。void rcr( int a[] ,int n,int k){ int i,j,t,temp,count;count =0; /*记录移动元素的次数*/k=k%n;if((1)){ /*若k是n的倍数,则元素无须移动;否则,每个元素都要移动*/i=0while(count<n) {j=i;t=i;temp =a[1]; /*备份a[i]的值*//*移动相关元素,直到计算出a[i]应移动到的目标位置*/while((j=(2))! =i){a[t]=a[j];t=(3);count++;}(4)= temp;count ++;(5);}}}

更多“下面的程序代码实现将一个一维数组中元素向右循环移动,移动次数由文本框Text1输入。例如数组各元 ”相关问题
  • 第1题:

    阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    函数void rcr(int a[],int n,int k)的功能是:将数组a中的元素a[0]~a[n-1]循环向右平移k个位置。

    为了达到总移动次数不超过n的要求,每个元素都必须只经过一次移动到达目标位置。在函数rcr中用如下算法实现:首先备份a[0]的值,然后计算应移动到a[0]的元素的下标p,并将a[p]的值移至a[0];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至a[p];依次类推,直到将a[0]的备份值移到正确位置。

    若此时移动到位的元素个数已经为n,则结束;否则,再备份a[1]的值,然后计算应移动到a[1]的元素的下标p,并将a[p]的值移至a[1];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至a[p];依次类推,直到将a[1]的备份值移到正确位置。

    若此时移动到位的元素个数已经为n,则结束;否则,从a[2]开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。

    例如,数组a中的6个元素如图1(a)所示,循环向右平移两个位置后元素的排列情况如图1(b)所示。

    【函数】

    void rcr(int a[],int n,int k)

    {int i,j,t,temp,count;

    count=0;/*记录移动元素的次数*/

    k=k%n;

    if( (1) ){/*若k是n的倍数,则元素无须移动;否则,每个元素都要移动*/

    i=0;

    while(count<n){

    j=i;t=i;

    temp=a[i];/*备份a[i]的值*/

    /*移动相关元素,直到计算出a[i]应移动到的目标位置*/

    while((j= (2) )!=i){

    a[t]=a[j];

    t= (3) ;

    count++;

    }

    (4) =temp;count++;

    (5) ;

    }

    }

    }


    正确答案:
    【答案】(1)k或k!=0(2)(j-k+n)%n或(t-k+n)%n(3)j(4)a[t]或等价表达式(5)i++或等价表达式【解析】(1)判断k执行k=k%n后是否为0,即是否是n的倍数,应填入k或k!=0。(2)j表示要移动到a[t]的元素的位置,于是j和t的关系为j=(t-k+n)%n;当执行完j=i,t=i后,j=t,于是此处可填入(j-k+n)%n或(t-k+n)%n。(3)将a[j]移动到a[t]后,需要将t指向j,即此处填入j。(4)将暂存在temp中的值移动到a[t]中。即此处填入a[t]或等价表达式。(5)此处while循环的递增条件,显然应该是i++或其他等价表达式。

  • 第2题:

    有一严格升序的整型数组A,元素个数为n。现将其前k(0≤k≤n)个元素整体移动到数组后面,得到数组B,使B数组的前n-k个元素恰好是A数组的后n-k个元素,B数组的后k个元素恰好是A数组的前k个元素,且前后两部分的内部升序仍保持不变。请设计一个算法在B数组中查找某个给定元素value。算法设计在函数searchValue中,函数头可采用searchValue(int B[ ], int value)。那么你设计的高效算法的时间复杂度是

    A.O(n)

    B.O(n^0.5)

    C.O(log n)

    D.O((log n)^2)


    O(log n)

  • 第3题:

    【单选题】微信小程序中wxml文件中如何编写循环结构?

    A.<view for=“{{页面绑定的数组对象}}”item=”{{存放数组各元素的变量}}”>#B.<view wx:for=“{{页面绑定的数组对象}}”wx:key=”{{存放数组各元素的变量}}”>#C.<view wx:for=“{{页面绑定的数组对象}}” wx:key =”存放数组各元素的变量”>#D.以上均不正确
    正确

  • 第4题:

    关于数组的操作,以下说法正确的是()?

    A.数组中插入数据效率低,插入数据的时候,插入点位置后面的数据在内存中都要向后移动。

    B.数组中删除数据效率低,删除数据的时候,被删除数据位置后面的数据在内存中都要向前移动。

    C.数组随机读取效率很高,因为数组是连续的,通过数组起始地址,和元素下标,就可以算出每一个数据的内存地址,直接直接找到对应地址的数据。

    D.数组随机读取效率很低,因为数组是连续的,必须从第一个元素开始查找,直到对应元素的地址,再访问这个数据。


    A

  • 第5题:

    旋转数组(包括重复元素)的最小数字。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。


    错误