移到数组的最后。 例如,一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。

#include <stdio.h>#define N 80void fun(int w, int p, int n){ /********* Begin / / End ***********/ }NONO(){ /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf,*wf ; int a[N], i, j, p, n ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 5 ; i++) { fscanf(rf, "%d %d", &n, &p) ; for(j = 0 ; j < n ; j++) fscanf(rf, "%d", &a[j]) ; fun(a, p, n) ; for(j = 0 ; j < n ; j++) fprintf(wf, "%3d", a[j]) ; fprintf(wf, "\n") ; } fclose(rf) ; fclose(wf) ;}main(){ int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15; printf("The original data:\n"); for(i=0; i<n; i++)printf("%3d",a[i]); printf("\n\nEnter p: ");scanf("%d",&p); fun(a,p,n); printf("\nThe data after moving:\n"); for(i=0; i<n; i++)printf("%3d",a[i]); printf("\n\n"); NONO();}

你的问题是啥 代码没贴好

您可以尝试运行这段程序,看看是否符合预期输出。

#include <iostream>
using namespace std;

void fun(int w[], int p, int n) {
    int temp[p]; // 定义临时数组,存储右移的元素
    for (int i = 0; i < p; i++) {
        temp[i] = w[n - p + i]; // 将原数组后面的 p 个元素存入临时数组
    }
    // 右移 w 中的元素
    for (int i = n - p - 1; i >= 0; i--) {
        w[i + p] = w[i];
    }
    // 将临时数组的元素拷贝到 w 中
    for (int i = 0; i < p; i++) {
        w[i] = temp[i];
    }
}

int main() {
    int a[] = {1,2,3,4,5,6,7,8,9,10}; 
    int n = sizeof(a) / sizeof(int); // 数组长度
    int p = 3; // 移动的个数
    
    cout << "原始数组:";
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    
    fun(a, p, n);
    
    cout << "移动后的数组:";
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    
    return 0;
}

输出结果应该为:

原始数组:1 2 3 4 5 6 7 8 9 10 
移动后的数组:4 5 6 7 8 9 10 1 2 3 

如果输出结果符合预期,那么您可以采纳一下我的回答

不一定对,仅供参考:

#include <stdio.h>
#define N 80
void fun(int *w, int p, int n){
    /********* Begin */
    int b[N],i,j;
    for (i=p,j=0;i<n;i++,j++) b[j]=w[i];
    for (i=0;i<p;i++,j++) b[j]=w[i];
    for (i=0;i<n;i++) w[i]=b[i];
    /* End ***********/
}
void NONO(){
    /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
    FILE *rf,*wf ;
    int a[N], i, j, p, n ;
    rf = fopen("bc.in", "r") ;
    wf = fopen("bc.out", "w") ;
    for(i = 0 ; i < 5 ; i++) {
        fscanf(rf, "%d%d", &n, &p) ;
        for(j = 0 ; j < n ; j++)
            fscanf(rf, "%d", &a[j]) ;
        fun(a, p, n) ;
        for(j = 0 ; j < n ; j++)
            fprintf(wf, "%3d", a[j]) ;
        fprintf(wf, "\n") ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
int main(){
    int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int i,p,n=15;
    printf("The original data:\n");
    for(i=0; i<n; i++) printf("%3d",a[i]);
    printf("\n\nEnter p: ");
    scanf("%d",&p);
    fun(a,p,n);
    printf("\nThe data after moving:\n");
    for(i=0; i<n; i++) printf("%3d",a[i]);
    printf("\n\n");
    NONO();
    return 0;
}