填空题
1. 下列给定程序中函数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、(1)noat k;
(2)if(*a< *c)
【答案解析】[考点]
本题考查:变量定义,根据给定程序语句确定变量类型;if语句条件表达式。
(1)观察程序中的k,在赋值语句中,k是以变量的形式进行赋值而非指针,所以将k定义为指针是错误的。
(2)此处if语句是为了将小于*c的值放入*c中,所以改为if(*a< *c)。