兄弟看一下这个,我的函数调用那块逻辑错了,输入2结果是4

int main()
{
int a,b;
scanf("%d", &a);
int hanshu1();
int hanshu2();
int hanshu3();
if (a >= 1 && a < 3)
b = hanshu1(a);
else if (a >= 3 && a < 5)
b = hanshu2(a);
else if (a >= 5 && a < 9);
b = hanshu3(a);
printf("函数的值为%d\n", b);
return 0;
}

int hanshu1(int x)
{
int y = (2 * x) + 4;
return y;
}
int hanshu2(int x)
{
int y = sqrt(x*x + 4);
return y;
}
int hanshu3(int x)
{
int y = (x * x) + (3 * x) - 6;
return y;
}

你最后一个else if的条件括号后面多了一个分号;
这就导致了你实际上运行的一直都是hanshu3(a)这个语句