问答题
综合应用
请编写函数fun :在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何
内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
void NONO();
void fun(int *a, int *b, int *c, int *d)
{
}
main()
{ int a, b, c, d;
printf("请输入4个整数: "); scanf("%d%d%d%d", &a,&b,&c,&d);
printf("原始顺序: %d,%d,%d,%d/n", a, b, c, d);
fun(&a,&b,&c,&d);
printf("处理后: %d,%d,%d,%d/n", a, b, c, d);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, a, b, c, d ;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for( i=0; i<5; i++ )
{
fscanf(fp, "%d %d %d %d", &a, &b, &c, &d);
fun(&a,&b,&c,&d);
fprintf(wf, "a=%d,d=%d/n", a, d);
}
fclose(fp) ;
fclose(wf) ;
}
【正确答案】 int max,min;//临时存放最大值、最小值
max=min=*a;//初始化为*a
if(max<*b)//与*b比较,如果max比*b,修改max,如果min比*b大,修改min,下同
max=*b;
if(min>*b)
min=*b;
if(max<*c)
max=*c;
if(min>*c)
min=*c;
if(max<*d)
max=*d;
if(min>*d)
min=*d;
*d=min;
*a=max;
【答案解析】【考点分析】
主要考察考生对临时变量的初始化及使用,以及如何比较多个数的大小
【解题思路】
通过初始化指定最大值,最小值,再使用当前的最值与剩下的值比较,若比最大值大,修改最大值;若比最小值小,修改最小值。