C编程,从重复的代码生成循环

C编程,从重复的代码生成循环,c,arrays,loops,C,Arrays,Loops,有没有可能为这个重复的代码做一个循环,让它执行n次 任务是始终在数组的第一个位置输入新元素,将现有元素向右移动。我想有更多的方法可以做到这一点,但我只需要知道是否有可能在循环中设置此代码。顺便说一句:我用了#define来制作 #define SWAP(x,y) t=x;x=y;y=t; 要转换为循环的片段: printf("enter next member of array"); SWAP(*(p + 0), *(p + 1)) scanf("%d", p); printf("e

有没有可能为这个重复的代码做一个循环,让它执行n次

任务是始终在数组的第一个位置输入新元素,将现有元素向右移动。我想有更多的方法可以做到这一点,但我只需要知道是否有可能在循环中设置此代码。顺便说一句:我用了
#define
来制作

#define SWAP(x,y) t=x;x=y;y=t;
要转换为循环的片段:

printf("enter next member of array");
SWAP(*(p + 0), *(p + 1))
    scanf("%d", p);

printf("enter next member of array");
SWAP(*(p + 1), *(p + 2))
SWAP(*(p + 0), *(p + 1))
    scanf("%d", p);

printf("enter next member of array");
SWAP(*(p + 2), *(p + 3))
SWAP(*(p + 1), *(p + 2))
SWAP(*(p + 0), *(p + 1))
    scanf("%d", p);

printf("enter next member of array");
SWAP(*(p + 3), *(p + 4))
SWAP(*(p + 2), *(p + 3))
SWAP(*(p + 1), *(p + 2))
SWAP(*(p + 0), *(p + 1))
    scanf("%d", p);

我建议编写一个
push()
函数。请看一下您在代码中给出的示例,并寻找可以帮助您将重复转化为循环的模式。首先需要一个计数器,比如说
i
,它从
0
到某个数字。如何确定最大数量是多少?然后需要使用
i
计算每次交换中的表达式。查看当前代码中的模式,了解如何在for循环中编写单行代码。

类似于:

for ( int i = 0; i < n; ++i ) {
    printf("enter next member of array");
    for ( int j = i; j >= 0; --j ) {
        SWAP(*(p + j), *(p + j + 1))
    }
    scanf("%d", p);
}
for(int i=0;i=0;--j){
掉期(*(p+j),*(p+j+1))
}
scanf(“%d”,p);
}

注意:我还没有试过,但这应该足以让您了解剩下的内容。然而,请注意,有更有效的方法来做你想做的事情。但我在回答您最初的问题。

“有没有可能对这些重复代码进行循环?”是的。重复的代码总是可以转换成循环。我建议更进一步,创建一个
insert()
push()
函数。也许可以帮助您。我们会这样做的。我认为你的问题不太符合这里所期望的格式。特别是,SO的想法不是为您编写代码。为什么不插入所有元素。。。然后反转数组?所以你将进行线性交换而不是二次交换…@JensGustedt我理解所有的批评,但这是我关于堆栈溢出的第一篇文章,下次我会努力做得更好。讲故事的人,这并不难,问题是总是在数组的第一个位置插入新元素,将其他元素移到右边。非常感谢,这很有效,我知道有更有效的方法来完成任务,但我对此很好奇way@DaniloGacevic那么,投票并标记为正式答案?谢谢。@PaulJ.Lucas刚刚做了。