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

admin2017-07-27  17

问题 请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
  注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
1  #include<stdio.h>
2   void NONO();
3   void fun(int *a,int *b,int *c,int*d)
4     {
5  }
6   main()
7  {int a,b,c,d;
8  printf(’’请输入4个整数:’’);
9  scanf(’’%d%d%d%d’’,&a,&b,&c,&d);
10   printf(’’原始顺序:%d,%d,%d,%d\n’’,a,b,c,d);
11  fun(&a,&b,&c,&d);
12  printf(’’处理后:%d,%d,%d,%d\n’’,a,b,c,d);
13   NONO();
14   }
15  void NONO()
16   {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
17    FILE *fp,*wf;
18   int i,a,b,c,d;
19  fp=fopen(’’in.dat’’,’’r’’);
20   wf=fopen(’’out.dat’’,’’w’’);
21  for(i=0;i<5;i++)
22   {fscanf(fp,’’%d%d%d%d’’,&a,&b,&c,&d);
23   fun(&a,&b,&c,&d);
24   fprintf(wf,’’a=%d,d=%d\n’’,a,d);
25 }
26  fclose(fp);
27  fclose(wf);}

选项

答案3 void fun (int *a,int*b,int*c,int*d) 4 {int t; 5 if(*a<b){t=*a;*a=*b;*b=t;} 6 if(*a<*c)(t=*a; *a=*c;*c=t;} 7 if(*a<*d){t=*a; *a=*d;*d=t;} 8 if(*b<*c){t=*b; *b=*c;*c=t;} 9 if(*b<*d){t=*b;*b=*d;*d=t;} 10 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/H7Dp777K
0

最新回复(0)