改错题
1. 下列给定程序中,函数fun()的功能是:根据输入的三条边长(整形),判断其能否构成三角形;构成的是等边三角形还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若能构成三角形函数,返回1;若不能构成三角形函数返回0。
请修改函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不能增行或减行,也不能更改程序的结构。
试题程序:
#include<stdio.h>
int fun(int x,int y,int z)
{
if(x+y>z&&y+z>x&&x+z>y)
{
//****found****
if(x==y&&y==z)
return 1;
else if(x==y||y==z||x==z)
return 2;
else 。
//****found****
return 3;
}
else
return 0;
}
void main()
{
int x,y,z,shape;
printf("\nInput x,y,z:");
scanf("%d%d%d",&x,&y,&z);
printf("\nx=%d,y=%d,z=%d\n",x,y,z);
shape=fun(x,y,z);
printf("\n\nThe shape:%d\n",shape);
}
【正确答案】(1)错误:return 1;
正确:return 3;
(2)错误:return 3;
正确:return 1;
【答案解析】 本题利用if语句判断三条边的关系,根据判断的结果,返回题干中要求的值。
(1)第一个标识下的语句“if(x==y&&y==z)”说明x,y,z三个值相等,即等边三角形,所以应该返回3,将“1”改成“3”。
(2)第二个标识下的else语句应该是除了等边及等腰三角形之外的三角形,所以应该返回1,应将“3”改成“1”。