2009春二级VC上机考核2 |
2009春上机2 一:改错题 以下程序中函数fun(int a[ ],int N)的功能是:删除数组a的前N个元素中重复的元素,(相同的元素只保留一个),并返回所删除元素的总数 处理前的数组a为:4 1 3 3 1 2 4 3 4 4 处理后的数组a为:4 1 3 2 处理前的数组b为:1 2 1 3 2 1 4 处理后的数组b为:1 2 3 4 #include <iostream.h> int fun(int a[],int N) //因为函数要返回一个数值,所以要改为int {int c,n=0; //c变量保存每个数值,n变量保存重复的数值数量 for(int i=0;i<N-n;i++){ c=a[i]; for(int j=i+1;j<N-n-1;j++) //本for循环首先取数值与后面的每一个数值比较,如果与后面的数值 if(a[j]==c){ //相同就覆盖后面的数值,所以要N-n,不能加1,否则最后一个就比较不到 for(int k=j;k<N-n-1;k++) a[k]=a[k+1]; //本for循环将后面数值移动到前面,覆盖找到的重复数值 n++; //n表示找到一个重复数值 j++; //因为后面数值覆盖了前面的重复数,所以要从这个覆盖的位置开始 } // 重新比较,所以要j--,使比较从旧位置开始 } return n; //返回有多少是重复的 } void print(int a[],int n) //本函数的作用是输出传递来的a数组中的值 {for(int i=0;i<n;i++) cout<<a[i]<<'\t'; cout<<endl; } void main() {int a[10]={4,1,3,3,1,2,4,3,4,4},b[7]={1,2,1,3,2,1,4}; cout<<"处理前的数组a为:"; print(a,10); int n=fun(a,10); cout<<"处理后的数组a为:"; print(a,10-n); //10-n表示去除重复个数 cout<<"处理前的数组b为"; print(b,7); n=fun(b,7); cout<<"处理后的数组b为"; print(b,7-n); //7-n表示去除重复个数 } |