使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun(),其功能是移动一维数组中的内容,若数组中有n个整数,要求把下标为0~P(含p,p不大于n-1)的数组元素平移到数

admin2023-02-27  16

问题 使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun(),其功能是移动一维数组中的内容,若数组中有n个整数,要求把下标为0~P(含p,p不大于n-1)的数组元素平移到数组的最后。
    例如,一维数组中的原始内容为1、2、3、4、5、6、
7、8、9、10;p的值为3。移动后,一维数组中的内容应为5、6、7、8、9、10、1、2、3、4。
    注意:部分源程序给出如下。
    请勿改动主函数main()和其他函数中的内容,仅在函数fun()的花括号中填入你编写的若干语句。
    试题程序:
1 #include<stdio.h>
2 #define N 80
3 voidfun(int*w,int p,int n)
4 {
5 }
6 main()
7 {int a[N]={1,2,3,4,5,6,7,8,
9,10,11,12,13,14,15);
8    inf i,p,n=15;
9    printf("The original data:\n");
10    for(i=0;i<n;i++)
11    printf("%3d",a);
12    printf("\n\nEnter p:");
13    scanf("%d",&p);
14    fun(a,p,n);
15    printf("\nThe data after moving:\n");
16    for(i=0;i<n;i++)
17    printf("%3d",a);
18    printf("\n\n");
19 }

选项

答案 1 void fun(int*w,int p,int n) 2 { int x,j,ch; 3 for(x=0;x<=p;x++) 4 { ch=w[0]; 5 for(j=1;j<n;j++)/*通过for循环语句,将p+1~n-1(含n-1)的数组元素依次向前移动p+1个存储单元*/ 6 { 7 w[j-1]=w[j]; 8 } 9 w[n-1]=ch;/*将下标为0~p的数组元素逐一赋给数组w[n-1]*/ 10 } 11 }

解析 本题要求把下标为0~p(含p,p不大于n-1)的数组元素平移到数组的最后。可以根据输入的p值,通过for循环语句,将p+1~n-1(含n-1)的数组元素依次向前移动p+1个存储单元,即w[j-1]=w[j];。同时将下标为0~p的数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作。
转载请注明原文地址:https://kaotiyun.com/show/1x0D777K
0

相关试题推荐
最新回复(0)