请编写一个函数void fun(int p[],int n,int c),其中数组p的元素按由小到大的顺序排列,其元素个数为n。函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。 注意:部分源程序已存在文件PROC9.cpp中。 请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句; 文件PROC9.cpp的内容如下: //PROC9.cpp #include <iostream> #include <string> using namespace std; #define M 30 void fun(int p[ ],int n,int c); int main () { int pp[M],n,i; int fg, c; cout<<"Please input n:\n"; cin>>n; cout<<"Please input the n data:\n"; for (i=0; i<n; i++)cin>>pp [i]; cout<<"Please input c:\n"; cin>>c; fun (pp, n, c); for (i=0; i<n; i++)cout<<pp [i] << " " ; cout<<end1; return 0; } void fun(int p[ ],int n, int c) { //* * * * * * * * * }
参考答案:
解析:函数fun()的定义如下: void fun(int p[],int n,int c) { int i; for(i=0;i<n&&c>p[i];i++) { memmove(p+i+1,p+x,sizeof(int)*(n-i)); p[i]=c; } } 函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。可以首先用循环体宋扫描数组p,遇到第一个大于或等于c的元素时,记下此时的下标值。然后将此元素以及此后的元素整体右移一个元素位置。然后把c赋值给此元素。