#include<stdio.h> int move(int m,int n,int s[]) { int left=s[0]; int j=0; int i; while(j<m) { for(i=1;i<n;i++) { s[i-1]=s[i]; s[n-1]=left; } j++; } return s; } int main() { int n=0; scanf("%d",&n); int m=0; scanf("%d",&m); int arr[100]; for(int i=0;i<n;i++) { scanf("%d ",&arr[i]); } int re=move(m,n,arr); printf("%d",re); return 0; }为什么无法实现数组循环左移
时间: 2024-03-05 10:48:26 浏览: 88
给出数组和移位位数实现循环左移
这段代码无法实现数组循环左移的原因是因为函数`move()`的返回值类型是`int`,而在函数内部返回的却是一个指向数组的指针。应该将函数返回值类型改成`int*`,并在函数末尾返回`s`指针即可实现数组循环左移。同时,在`main()`函数中也需要修改为接收指针类型的返回值并输出数组中的元素。修改后的代码如下:
```c
#include<stdio.h>
int* move(int m, int n, int s[]) {
int left=s[0];
int j=0;
int i;
while(j<m) {
for(i=1;i<n;i++) {
s[i-1]=s[i];
s[n-1]=left;
}
j++;
}
return s;
}
int main() {
int n=0;
scanf("%d",&n);
int m=0;
scanf("%d",&m);
int arr[100];
for(int i=0;i<n;i++) {
scanf("%d ",&arr[i]);
}
int* re=move(m,n,arr);
for(int i=0;i<n;i++) {
printf("%d ",re[i]);
}
return 0;
}
```
阅读全文