方法一:构造范围的倍数表达式完成
1.任务和代码:
/*
*文件名称:fan_daun2.c
*作 者:末子灬秋风
*完成时间:2020年3月12日
*版本 号:vc++6.0
*
*问题描述:(x<2)y=x;(2<=x<6)y=x*x+1;(6<=x<10)根号下x+1;(x>=10)1/x+1;
*程序输出:输出y值
*/
#include<stdio.h> //包含文件
#include<math.h> //调用sqrt()函数时有用
//主函数
int main()
{
int x,t;
double y;
//输入
printf("请输入一个整数x:");
scanf("%d",&x);
//构造表达式
t=x/2;
//if单分支结构
if(x<0)
{
t=0;
}
//switch分支结构
switch(t)
{
case 0:
y=x; //x<2
break;
case 1:
case 2:
y=x*x+1; //x>=2&&x<6
break;
case 3:
case 4:
y=sqrt(x+1); //x>=6&&x<10
break;
default:
y=1.0/(x+1); //x>=10
break;
}
//输出
printf("函数的结果为:y=%.2lf\n",y);
//空一行
printf("\n");
return 0;
}
2.运行结果:
方法二:利用构造特殊的表达式,通过判断小条件的真假来完成
1.任务和代码:
/*
*文件名称:fan_daun3.c
*作 者:末子灬秋风
*完成时间:2020年3月12日
*版本 号:vc++6.0
*
*问题描述:(x<2)y=x;(2<=x<6)y=x*x+1;(6<=x<10)根号下x+1;(x>=10)1/x+1;
*程序输出:输出y值
*/
#include<stdio.h> //包含文件
#include<math.h> //数学库
//主函数
int main()
{
int x,t;
double y;
//输入
printf("请输入一个整数x:");
scanf("%d",&x);
//构造表达式
t=(x<2)+(x<6)+(x<10); //判断每个小条件的真假,即0还是1
//switch分支结构
switch(t)
{
case 3:
y=x; //x<2(全为真,即1+1+1=3)
break;
case 2:
y=x*x+1; //x>=2&&x<6(一假两真,即0+1+1=2)
break;
case 1:
y=sqrt(x+1); //x>=6&&x<10(两假一真,即0+0+1=1)
break;
case 0:
y=1.0/(x+1); //x>=10(全为假,即0+0+0=0)
break;
}
//输出
printf("函数的结果为:y=%.2lf\n",y);
//空一行
printf("\n");
return 0;
}
2.运行结果:
三,知识点总结:
1.C语言程序的基本结构
2.调用数学库的函数
3.switch语句的基本运用
4.通过构造特殊的表达式来简化程序,提高效率。
四,心得:switch的用法很多变,要有想象力,善于思考简便的方法简化计算。