switch语句求分段函数
编程要求是:输入X,求分段函数: x∈[0,10)时,y=cos(x+3.0); x∈[10,20)时,y=cos^2(x+7.5); x∈[20,30)时,y=cos^4(x+4.0)。 如果x不在定义域内,输出“No define”,否则输出y,并保留5位小数。
方法一:#include <stdio.h>
#include <math.h>
int main() {
double x, y;
scanf("%lf", &x);
int n = (int)(x / 10);
switch (n) {
case 0:
printf("%.5f\n", y = cos(x + 3.0));
break;
case 1:
printf("%.5f\n", y = pow(cos (x + 7.5), 2)) ;
break;
case 2:
printf("%.5f\n", y = pow(cos(x + 4.0), 4));
break;
default:
printf("No define\n");
}
return 0;
}
方法二:#include <stdio.h>
#include <math.h>
int main() {
double x, y;
scanf("%lf", &x);
int n = (x >= 0) + (x >= 10) + (x >= 20) + (x >= 30);
switch (n) {
case 1:
printf("%.5f\n", y = cos(x + 3.0));
break;
case 2:
printf("%.5f\n", y = pow(cos (x + 7.5), 2)) ;
break;
case 3:
printf("%.5f\n", y = pow(cos(x + 4.0), 4));
break;
default:
printf("No define\n");
}
return 0;
}
方法三:#include <stdio.h>
#include <math.h>
int main() {
double x, y;
printf("请输入 x 的值: ");
scanf("%lf", &x);
switch((int)x / 10) {
case 0:
if(x >= 0 && x < 10) {
y = cos(x + 3.0);
} else {
printf("No define");
return 0;
}
break;
case 1:
if(x >= 10 && x < 20) {
y = pow(cos(x + 7.5), 2);
} else {
printf("No define");
return 0;
}
break;
case 2:
if(x >= 20 && x < 30) {
y = pow(cos(x + 4.0), 4);
} else {
printf("No define");
return 0;
}
break;
default:
printf("No define");
return 0;
}
printf("%.5lf\n", y);
return 0;
}
提示:(1)double类型在C语言中可以使用%lf进行格式化输入,也可以使用%f进行格式化输出。在scanf函数中,使用%lf进行double类型的变量输入是正确的,而在printf函数中,虽然%lf也可以接受,但为了确保兼容性和清晰性,通常推荐使用%f进行输出。
(2)在使用pow函数时需要在程序开头用#include指令将<math.h>头文件包含到本程序模块中。
(3)%.5lf表示小数点后保留5位