问题 问答题

请编写一个函数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赋值给此元素。

单项选择题
问答题 简答题