我在C中使用for循环遇到了麻烦

时间:2018-03-19 21:30:01

标签: c loops for-loop

我实际上是在为学校做练习而且我在for循环中遇到了一些麻烦。练习如下:我必须做一个将数组的每个数字向右移动的函数(decalageDroite)和另一个将每个数字向左移动(decalageGauche)。函数decalageGauche工作正常但是当我尝试使用decalageDroite时,它对数组没有任何作用。我试图将printf放入循环但它也不起作用。我觉得它永远不会进入循环,我无法理解为什么?你能帮我吗?

#include <stdio.h>
#include <stdlib.h>


void decalageGauche(int tab[],int n)
{
int v0=tab[0];
int i;
for (i=1 ; i<n ; i++){
    tab[i-1]=tab[i];

}
tab[n-1]=v0;
}

void decalageDroite(int tab[],int n){
int i,vt;
vt=tab[n-1];
for (i=n-2 ; i<1 ; i--){
    printf("%d ",i);
    tab[i]=tab[i+1];
}
}


void afficheTab(int tab[],int n){
int i;
for (i=0 ; i<n ; i++){
    printf("%d ",tab[i]);
}
}

int main()
{
int tab[5]= {3,4,-1,12,5};
decalageDroite(tab,5);
afficheTab(tab,5);
return 0;
}

1 个答案:

答案 0 :(得分:0)

你几乎拥有它,只需要几个小小的调整:

void decalageDroite(int tab[], int n) {
    int i, vt;
    vt = tab[n - 1];
    for (i = n - 2; i >= 0; i--) {
        //printf("%d ", i);
        tab[i + 1] = tab[i];
    }
    tab[0] = vt;
}

循环需要继续倒计时,直到你处理第一个元素i >= 0,你需要将元素移到右边,&#34;一个droite&#34;,所以元素i得到已移至元素i + 1

最后,将tab[0]设置为循环前保存的结束元素。