/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun计算下列分段函数的值: x*x+x x<0且x≠-3 f(x)= x*x+5x 0≤x<10且x≠2及x≠3 x*x+x-1 其它 ------------------------------------------------------*/ #include "stdio.h" float fun(float x) { /**********ERROR**********/ float y /**********ERROR**********/ if (x<0 ||x!=-3.0) y=x*x+x; else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=x*x+5*x; else y=x*x+x-1; /**********ERROR**********/ return x; } main() { float x,f; printf("Input x="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%f\n",x,f); }
时间: 2023-07-01 21:21:13 浏览: 64
修改后的程序如下:
```c
#include <stdio.h>
float fun(float x) {
float y;
if (x < 0 && x != -3.0)
y = x * x + x;
else if (x >= 0 && x < 10.0 && x != 2.0 && x != 3.0)
y = x * x + 5 * x;
else
y = x * x + x - 1;
return y;
}
int main() {
float x, f;
printf("Input x=");
scanf("%f", &x);
f = fun(x);
printf("x=%f, f(x)=%f\n", x, f);
return 0;
}
```
主要错误如下:
1. 在函数`fun`中,`float y`语句缺少分号。
2. 在`if`语句中,应该使用`&&`而不是`||`,因为题目要求`x<0且x≠-3`,这意味着当`x`小于0并且不等于-3时,条件才为真。
3. `return`语句应该返回变量`y`的值,而不是返回`x`的值。
阅读全文