给定程序MODI1.C中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正

admin2016-12-06  31

问题 给定程序MODI1.C中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:
    初始数列为:6  5  7  23  18  5  8  21  45  38
    第1组数为:6  5  7  中值为:6替换后的数列为:6 6 7  23 18 5 8  21 45 38
    第2组数为:5 7 23  中值为:7替换后的数列为:6  6  7 23 18 5 8 21 45 38
    第3组数为:7 23 18中值为:18替换后的数列为:6  6 7  18  18  5  8  21  45  38
    第4组数为:23 18 5中值为:18替换后的数列为:6  6  7 18  18  5   8  21  45  38
    第5组数为:18  5  8  中值为:8替换后的数列为:6  6  7 18   8   8  21  45  38
    第6组数为:5  8  21  中值为:8替换后的数列为:6  6  7  18  18 8  8  21 45  38
    第7组数为:8  21 45  中值为:21替换后的数列为:6   6   7   18   18 8   21   45 38
    第8组数为:21   45   38  中值为:38替换后的数列为:6   6   7   18   18   8    8 21   38   38
    最终结果为:6   6   7   18   18   8   8   21   38   38
    请改正程序中指定部位的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
1    #include  <stdio.h>
2  #define N 10
3  int findmid(int a,int b,int c)
4  {int t;
5  t=(a>b)?  (b> c? b:(a> c? c:a)):((a>c)?a:((b>c)?c:b));
6   /*********found*********/
7    return b;
8  }
9   void fun(int x[])
10   {int i,a,b,c,t[N];
11    /*********found*********/
12  for(i=0;i<N;i++)t=x
13   for (i=0;i<N-2;i++)
14  {a=t;b=t[i+1];c=t[i+2];
15   /*********found*********/
16   t[i+1]=findmid(a,b,c);
17    }
18    }
19  main ()
20   {int i,x[N]={6,5,7,23,18,5,8,21,45,38};
21  for(i=0 ; i<N;i++)
22  printf(’’%d’’,x);
23   printf(’’\n’’);
24    fun(x);
25  for(i=0;i<N ; i++)
26  printf(’’%d’’,x);
27   printf(’’\n’’);
28  }

选项

答案(1)return t; (2)for(i=0;i
解析 (1)函数findmid的功能是找到a、b、c三个数中的中间数,并存放在变量t中,因此应返回t。
(2)语法错误,句末缺少分号。
(3)本程序是对数组x进行操作,数组t只是用来暂时存放数组x中的元素,因此此处应为x[i+1]=findmid(a,b,c)。
转载请注明原文地址:https://jikaoti.com/ti/vEi0FFFM
0

最新回复(0)