给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。 例如,输入的数为:55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使

admin2015-12-22  41

问题 给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。
    例如,输入的数为:55  12  34,输出结果应当是:a=55.0,b=34.0,c=12.0。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include  
void fun(float:*a,float *b,float *c)
{
/**********found**********/
    float *k;
    if(*a<*b)
    {  k=*a;  *a=*b;  *b=k;)
/**********found**********/
    if(*a>*c)   
    {  k=*c;*c=*a;*a=k;}
    if(*b<*c)
    {  k=*b;*b=*c;*c=k;}
  }
  main()
  {  float:a,b,c;
  print:f("Input a b c:");scanf
("%f%f%f",&a,&b,&c);
  printf("a=%4.1f,b=%4.1f,c
=%4.1f\n\n",a,b,c);
  fun(&a,&b,&c);
  printf("a=%4.1f,b=%4.1f,c
=%41f\n\n",a,b,c);
}

选项

答案(1)float k; (2)if(*a<*c)

解析 函数对三个数进行两两比较,实现判断。
    (1)第一个标识下的变量k是在比较过程中,临时存放数据的变量,因此k不应是指针,所以将“float *k”改为“floatk”。
    (2)分析函数中第一个if语句,如果主函数中ac,则进行对调,又把大数放在c中,这样的逻辑显然是混乱的。因此第二个标识下“if(*a>*c)”应该改为“if(*a<*c)”。
转载请注明原文地址:https://jikaoti.com/ti/PKi0FFFM
0

最新回复(0)