问答题
下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。例如,若输入的数为:55 12 34,输出的结果应当是:a=55.0,b:34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>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; printf("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=%4.1f\n\n",a,b,c);}
【正确答案】正确答案:(1)noat k; (2)if(*a<*c)
【答案解析】解析:(1)观察程序中的k,在赋值语句中,k是以变量的形式进行赋值而非指针,所以将k定义为指针是错误的。 (2)此处if语句是为了将小于*c的值放入*c中,所以改为if(*a<*c)。