就业数据资源平台
当前位置:首页 > C语言程序设计
2011年计算机二级C语言十套上机题17

2011年计算机二级C语言十套上机题17


2. 改错题


  下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。


  请改正程序中的错误,使它能得到正确结果。


  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。


  试题程序:


  #include<stdio.h>


  #define N 20


  void fun(int a[],int n)


  {


  int i,j,t,p;


  /**********************found***********************/


  for(j=0;j<n-1;j++) ;


  {


  p=j;


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


  if(a[i]>a[p])


  p=i;


  t=a[p];


  a[p]=a[j];


  /**********************found***********************/


  a[p]=t;


  }


  }


  main()


  {


  int a[N]={11,32,-5,2,14},i,m=5;


  printf("排序前的数据:");


  for(i=0;i<m;i++)


  printf("%d ",a[i]);


  printf("\n");


  fun(a,m);


  printf("排序后的顺序:");


  for(i=0;i<m;i++)


  printf("%d ",a[i]);


  printf("\n");


  }


  答案及评析:(1)错误:for(j=0;j<n-1;j++) ;正确:for(j=0;j<n-1;j++) (2)错误:a[p]=t;正确:a[j]=t;


  【解析】错误1:根据C语言语法,for循环中循环条件后不加分号,除非做空操作。


  错误2:将两数进行交换的常用语句,借助第三个变量.

就业数据资源平台