#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;
}