使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(int*ar,int n)的功能是将指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。并返回互不相同的元素的个数。

admin2016-10-28  32

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(int*ar,int n)的功能是将指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。并返回互不相同的元素的个数。
注意:不能修改程序的其他部分,只能修改fun()函数。
#1nclude<10Stream>
int fun(int*a,int n)
{

}
void main()
{
int A[]={6,6,5,4,4,3,3,2,1};
int j=fun(A,sizeof(A)/sizeof(int));
for(int i=0;i<j;i++)
{
std::cout<<A<<’ ’;
}
std::cout<<std::endl;
return;
}

选项

答案int j; int k:0;//指向数组第一个元素 j=1;//指向数组第二个元素 while(j<n)//将本次循环k指向的元素依次与其他元素比较,如果不同,则存入数组 { if(a[J]!=a[k]) { a[++k]=a[j];//k指向下一个元素 } j++; } return k+1;//为新数组大小

解析 (1)首先指向数组第一个元素a[k],然后将第二元素a[j]与它比较,不同存入数组第二个元素(a[++k])。
(2)同时,将被比较的位置向后移动一位(j++)。循环直到数组的最后一个元素比较完毕。
转载请注明原文地址:https://kaotiyun.com/show/QONp777K
0

最新回复(0)