Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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中的数组?_C_Arrays_Pointers_Recursion - Fatal编程技术网

如何根据数组在不同行中的升序和降序来打印c中的数组?

如何根据数组在不同行中的升序和降序来打印c中的数组?,c,arrays,pointers,recursion,C,Arrays,Pointers,Recursion,我试图根据数组元素是升序还是降序,以不同的行打印数组元素。例如,我有一个数组: a[]={3,5,6,8,4,2,-1,-3,6,5,4,1,3};调用printArr(a,sizeof(a),indexStart)方法之后;输出应为: 3568 842-1-3 -36 6541 13 这是我的密码: void printArr(int *a, int size, int index){ int i=index; if(i==size) return; printf("%d",a[i]

我试图根据数组元素是升序还是降序,以不同的行打印数组元素。例如,我有一个数组: a[]={3,5,6,8,4,2,-1,-3,6,5,4,1,3};调用printArr(a,sizeof(a),indexStart)方法之后;输出应为:

3568
842-1-3
-36
6541
13
这是我的密码:

void printArr(int *a, int size, int index){
int i=index;
if(i==size)
    return;
printf("%d",a[i]);
if(a[i]<a[i+1]){
    while(a[i]<a[i+1] && i<size){
        printf("%d",a[i+1]);
        i++;
    }
    printf("\n");
}
else{
    while(a[i]>a[i+1] && i<size){
        printf("%d",a[i+1]);
        i++;
    }
    printf("\n");
}
printArr(a,size,i);
}
当我运行它(CodeBolcks)时,我得到以下输入:

3568
842-1-3
-36
6541
1370
最后的70人来自哪里? 当我在Linux(终端)中编译它时,我得到以下信息:

3568
842-1-3
-36
6541
1332767
最后的32767是从哪里来的?如何修复我的代码?
我必须使用循环和递归。

I
范围检查错误

像这样修理

void printArr(int *a, int size, int index){
    int i=index;
    if(i>=size-1)
        return;
    printf("%d",a[i]);
    if(a[i]<a[i+1]){
        while(i<size-1 && a[i]<a[i+1]){
            printf("%d",a[i+1]);
            i++;
        }
        printf("\n");
    }
    else{
        while(i<size-1 && a[i]>a[i+1]){
            printf("%d",a[i+1]);
            i++;
        }
        printf("\n");
    }
    printArr(a,size,i);
}
void printArr(int*a、int大小、int索引){
int i=指数;
如果(i>=尺寸-1)
返回;
printf(“%d”,a[i]);

如果(a[i]
printArr(a,sizeof(a),indexStart);
sizeof(a)
-->
sizeof(a)/sizeof(*a)
如果
size=1
index=0
?@Arash不显示任何内容。在此程序中,序列的长度应为2或更多。
void printArr(int *a, int size, int index){
    int i=index;
    if(i>=size-1)
        return;
    printf("%d",a[i]);
    if(a[i]<a[i+1]){
        while(i<size-1 && a[i]<a[i+1]){
            printf("%d",a[i+1]);
            i++;
        }
        printf("\n");
    }
    else{
        while(i<size-1 && a[i]>a[i+1]){
            printf("%d",a[i+1]);
            i++;
        }
        printf("\n");
    }
    printArr(a,size,i);
}