Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我对C中的for循环有问题_C_Loops_For Loop - Fatal编程技术网

我对C中的for循环有问题

我对C中的for循环有问题,c,loops,for-loop,C,Loops,For Loop,实际上,我正在为学校做一个练习,我在for循环中遇到了一些问题。练习如下:我必须做一个将数组中的每个数字向右移动的动作(decadagedroite),另一个将每个数字向左移动的动作(decadagegauche)。函数decadagegauche工作得很好,但是当我尝试使用decadagedroite时,它对数组没有任何作用。我试图将printf放入循环中,但也不起作用。我觉得它从来没有进入循环,我不明白为什么?你能帮帮我吗 #include <stdio.h> #include

实际上,我正在为学校做一个练习,我在for循环中遇到了一些问题。练习如下:我必须做一个将数组中的每个数字向右移动的动作(decadagedroite),另一个将每个数字向左移动的动作(decadagegauche)。函数decadagegauche工作得很好,但是当我尝试使用decadagedroite时,它对数组没有任何作用。我试图将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;
}
#包括
#包括
无效贴花(内部标签[],内部编号)
{
int v0=制表符[0];
int i;

对于(i=1;i您几乎拥有它,只需几次小调整:

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
,并且需要将元素向右移动,“一个droite”,这样元素
i
就会移动到元素
i+1


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

用于(i=n-2;i/*something*/
。与笨拙的方法不同,您没有为答案设置end element.thx。如果我将i>=0,它会起作用吗?也许可以,但我把它留给您。请查看我的注释的编辑。这就是为什么您需要学习如何使用调试器。或者至少通过插入print语句来查看值来进行简单调试在运行时对变量进行排序。