请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include vo

admin2019-03-19  30

问题   请编写函数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()
{/* 本函数用于打开文件,输入数据,
  调用函数,输出数据,关闭文件。*/
FTLE *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);}

选项

答案void fun (int*a, int*b,int*c, int *d) {int t; if(*a<*b){t=*a; *a=*b;*b=t;} if(*a<*c){t=*a; *a=*c;*c=t;} if(*a<*d){t=*a; *a=*d;*d=t;} if(*b<*c){t=*b; *b=*c;*c=t;} if(*b<*d){t=*b; *b=*d;*d=t;} if(*c<*d){t=*c; *c=*d;*d=t;} }

解析 首先在主函数main中我们需要的就是四个数字,这四个数字需要手动输入,件程序代码第13—15行,四个数字输入完城后就可以进入fun函数进行数据处理了。进入到fun函数中,只要从a到d进行比较,按照一开始的规则即可,如果a大于b,不变,比较a与c,若a小b,a与b交换位置,交换过后a就大于b了,这样就进行a与c的比较;a与c的比较同理,这样的循环比较,就能发现,每比较一次,较大的数字就能交换到a的位置,较小的数字就离a越来越远,也就是到了d的位置,这样就完成了题目所给出的要求了,最大的数字放在a中,最小的数字放在d中。当新的排序排好后,就可以返回主函数进行输出了。
转载请注明原文地址:https://kaotiyun.com/show/H6Rp777K
0

最新回复(0)