使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的

admin2018-08-11  26

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。例如,有10个正整数如下:
初始数列为:6 5 7 23 18 5 8 21 45 38
第1组数为:6 5 7中值为:6替换后的数列为:6 6 723 18 5 8 21 45 38
第2组数为:5 7 23中值为:7替换后的数列为:66 7 2318 5 8 21 45 38
第3组数为:7 23 18中值为:18替换后的数列为:6 67 18 185 8 21 45 38
第4组数为:23 18 5中值为:18替换后的数列为:6 6 718 18 58 21 45 38
第5组数为:18 5 8中值为:8替换后的数列为:6 6 718 18 88 21 45 38
第6组数为:5 8 21中值为:8替换后的数列为:6 6 7 18 188 8 2145 38
第7组数为:8 21 45中值为:21替换后的数列为:6 6 7 18 18 88 21 4538
第8组数为:21 45 38中值为:38替换后的数列为:6 6 7 18 18 8 821 38 38
最终结果为:6 6 7 18 18 8 8 21 38 38
请改正程序中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define N10
int findmid(int a,int b,int c)
{int t;
t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));
/*********found*********/
return b;
}
void fun(int x[])
{int i,a,b,c,t[N];
/*********found*********/
for(i=0;i<N;i++)t=x
for(i=0;i<N-2;i++)
{a=t;b=t[i+1];c=t[i+2];
/*********found*********/
t[i+1]=findmid(a,b,c);
}
}
main()
{int i,x[N]={6,5,7,23,18,5,8,21,45,38};
for(i=0;i<N;i++)
printf("%d",x);
printf("\n");
fun(x);
for(i=0;i<N;i++)
printf("%d",x);
printf("\n");
}

选项

答案(1)return t; (2)for(i=0;i<N;i++)t[i]=x[i]; (3)x[i+1]=findmid(a,b,c);

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

最新回复(0)