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