c - 我在 C 中的 for 循环中遇到了麻烦

标签 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;
}

最佳答案

您几乎就拥有它了,只需进行一些小的调整:

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 并且需要将元素向右移动,“a droite”,因此元素 i 被移动到元素 i + 1

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

关于c - 我在 C 中的 for 循环中遇到了麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49372638/

相关文章:

Php 循环和写入 MySql Db 的问题

c# - 试图修复循环

swift - Xcode 9.4.1 - 如何跳过组的剩余部分并移至下一组

python - 将格式 M=[(a,x), (b,y)] 的列表分成 M1=[a,b] 和 M2=[x,y]

c - 使用 math.h 函数时 gdb 给出奇怪的输出

c - 仅 C 代码的未定义对 `__aeabi_unwind_cpp_pr1' 的引用

c - STATUS_ACCESS_VIOLATION 由于 malloc()?

c - C 中的多进程、 fork 和管道

java - 迭代创建一个 HashMap 作为另一个 HashMap 中的值

javascript - 我应该如何在 for 循环中使用 JavaScript 访问 JSON?