模拟试题

3773考试网计算机等级考试模拟试题正文

2014年3月全国计算机二级C语言上机模拟试题五之3

来源:2exam.com 2013-10-30 19:06:01

给定源程序: 

  #include <stdio.h> 

  #define N 80 

  int fun(int a[], int n) 

  { 

  } 

  main() 

  { int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20; 

  printf("The original data :\n"); 

  for(i=0; i<n; i++)printf("%3d",a[i]); 

  n=fun(a,n); 

  printf("\n\nThe data after deleted :\n"); 

  for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n"); 

  NONO(); 

  } 

  解题思路: 

  本题是删除已排序过数组中的相同数。 

  1. 取出数组中的第1个数存放在临时变量k中,再利用for循环来依次判断所有的数。 

  2. 如果取出的数和k相比,如果不相同,则仍存放在原数组中,其中存放的位置由j来控制, 接着把这个数重新存入k。如果相同,则取下一数。 

  参考答案: 

  int fun(int a[], int n) 

  { 

  int i, j = 1, k = a[0] ; 

  for(i = 1 ; i < n ; i++) 

  if(k != a[i]) { 

  a[j++]=a[i] ; 

  k = a[i] ; 

  } 

  a[j] = 0 ; 

  return j ; 

  } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1