亚洲国产福利在线一二三观看_精品国产伦一区二区三区欲臀_国产a∨视频精品视频护士_精品八戒人妻少妇av

江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
2009春上機試卷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循環(huán)首先取數值與后面的每一個數值比較,如果與后面的數值

            if(a[j]==c){          //相同就覆蓋后面的數值,所以要N-n,不能加1,否則最后一個就比較不到

         for(int k=j;k<N-n-1;k++)  a[k]=a[k+1]; //for循環(huán)將后面數值移動到前面,覆蓋找到的重復數值

                    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表示去除重復個數

}

二:編程題: