下列给定程序中,函数fun()的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。 请修改程序中的错误,得出正确的结果。 注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。

admin2013-03-25  31

问题 下列给定程序中,函数fun()的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。
    请修改程序中的错误,得出正确的结果。
    注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。
    试题程序:
#include
#include
#define N 10
//****error****
void fun()
{
  int i,m,t,j;
  for(i=0;i<2;i++)
  {
   //****error****
    m=0;
    for(j=i+1;j    if(b[j]>b[m])
    m=j;
    t=b
    b=b[m];
    h[m]=t:
  }
}
void main()
{
  int a[N]={5,12,9,7,10),n=5,i;
  for(i=0;i  printf("%d",a);
  printf("\n");
  fun(a,n);
  for(i=0;i  printf("%d",a);
  printf("\n");
}

选项

答案1.错误:void fun() 正确:void fun(int*b,int n) 2.错误:m=j; 正确:m=i;

解析 本题中函数的功能是求出数组中最大数和次最大数。解题思路是首先求出数组中最大数和次最大数,然后将最大数和次最大数分别放到数组的第一位和第二位。
    第一个错误标识下“void fun(int * b,int n);”函数的定义语法有误,根据C语言语法函数定义后面不应该加“;”,所以“void fun(int * b,int n);”应该改为“void fun(int * b,int n)”。
    第二个标识符下for循环逐个对m个数据进行选择判断,原题中“m=0;”语句将m值设置为0,在循环中m的值
转载请注明原文地址:https://jikaoti.com/ti/1Kn0FFFM
0

最新回复(0)