2.2分段函数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y=
x
(x≥0)
3x3+1 (x<0 )
调用pow()和sqrt()函数
源程序:
#include "stdio.h" #include "math.h" main() { double x,y; printf("Enter x:"); %.2lf保留2位小数输出,%f scanf("%lf",&x); 保留6位小数输出 if(x>=0) y=sqrt(x); else y=3*pow(x,3)+1; printf("\nx=%.2lf,y=%f\n",x,y); }
第二章 用c语言程序编写程序
2.1 常量与变量 2.2 计算分段函数 2.3 for语句
2.2 计算分段函数
编程:【例3-1】输出a=3,b=9中大的数。
#include "stdio.h" main() { int a=3,b=9,max; /*使用if-else分支结构*/ if(a>b) max=a; else max=b; printf("max=%d\n",max); }
例: a+b>b+c等价于(a+b)>(b+c) a=b>c等价于a=(b>c) 2+a==b-a等价于(2+a)==(b-a)
—结合性:从左至右
例如:5>2>8
—关系表达式:用关系运算符将运算量链接起来 —关系表达式的值:真(1)和假(0)
计算这几个表达式的值: (1)5>2>9 0
(2)„a‟<„c‟ 1 (3)已知a=1,b=2,c=3 求a+b>b+c 0
输入输出格式说明的总结
printf() int——%d float——%f double——%f或%lf char——%c scanf() int——%d float——%f double——%lf char——%c
如何用printf( )和scanf( )函数
printf("输出一串字符"); 例:printf("这是hello"); printf("格式说明",变量名列表); 例: printf("a=%d,b=%d",a,b); scanf("格式说明",变量地址列表); 例: scanf("%d,%d",&a,&b);
输入: x=4,y=5
1. 格式控制: 用“ ” 括起来的字符串,包括两个部分 (1) 普通字符: 需要原样输入的字符(可有可无) (2) 格式说明: 由%和格式说明符组成,表示要输入数 据的数据类型 格式说明符只能用小写字母:如%d不能写成%D
例:int x, y; scanf ("x=%d, y=%d", &x,&y) ; int型数据用%d, float型数据用%f, double型数据要用%lf
期末考试时不用考虑,因为不用自己去写,系统自带了
math.h里包含的常用数学库函数及调用方式:
平方根函数sqrt(x)
4
sqrt(4)
绝对值函数fabs(x) |-2| fabs(-2) 幂函数pow(x,n) pow(1.1,2) 1.12 指数函数exp(x) exp(2.2) e2.2 以e为底的对数函数log(x) log(123.45) ln(123.45)
a=0; m=1;n=2;
阅读以下程序并思考所提出的问题: main() (1)程序能正确运行吗? { (2)此程序可实现什么功能? int a=6; if(a%2==0); 改正(1)去掉分号; printf("yes"); (2)将分号和printf(“yes”);加上{ } else printf("no"); ;也是一条语句,称为空语句, 什么也不做 }
scanf("%lf",&r); v=4.0/3*3.14*pow(r,3); 或v=4*3.14*pow(r,3) /3;
思考题
else可以省略吗? 例:判断一个是不是偶数,如果是,则输出这个数 if-else语句用于编写什么程序段? 双分支的选择结构
(2)程序中用到了if-else语句 一般形式: if(表达式) 真 语句1; else 语句1 语句2; 程序其他语句;
假
表达式
语句2
功能:
检测表达式,如果值为非0(真),则执行语句1,然后执 行程序其他语句;如果值为0(假),执行语句2,再执 行程序其他语句 双分支的if-else语句
注意事项:
切记!
2. 地址表列 :由若干个变量地址组成(如&a,不能写 成a),并与%开头的格式控制符一一对应.两个以上 时用逗号做间隔,个数,类型与格式说明保持一致 例:int x, y; scanf ("x=%d, y=%d", &x,&y) ;
3.当格式控制字符之间不包括其它字符,且输入的是 数值型数据(整形或实型)时,数据之间可以用空格, Tab键或回车键(<CR>)分隔; 例: int a, b; scanf ("%d%d", &a, &b); 输入:(1) 12 34(中间加了空格) (2) 12 34(中间加了Tab) (3) 12(加了回车) 34
if(x%2!=0)
程序改错2:输入x,计算并输出下列分段函数y的值 (保留一位小数)
1 , x 0 f ( x) x 0, x 0
#include "stdio.h" main() { int x; double y; printf("Enter x:"); scanf("%d",&x); /********found********/ if(x!=0); ;去掉 /********found********/ y=1/x; y=1.0/x; else y=0; printf("y=%.1f\n",y); }
if(表达式) 语句1; else 语句2; 程序其他语句;
例: if(x>0) {a=c/2; d=a+b;} else printf("good");
关于表达式: (1)表达式必须用圆括号括起来 (2)表达式通常使用关系表达式:
例:if(x>10)
(3)表达式可以是一个常量或一个变量: 例:if(1) /*表达式为真*/ if(0) /*表达式为假*/ if(x)/*只要x的值不是0,表达式就为真*/ 关于语句:
程序改错1:任意输入一个数,如果是奇数输出“奇 数”, 否则,输出“偶数”。
#include "stdio.h" main() { int x; printf("Enter x:"); scanf("%d",&x); /********found********/ if x%2!=0 printf("奇数"); else printf("偶数"); }
举一反三【3-2】编写程序,输入x,利用分段函数, 计算并输出y值。
y=
|x|
(x≤0)
ex (x>0)
提示:需要调用求实型数绝对值函数fabs和 指数函数exp。
源程序:
#include "stdio.h" #include "math.h" main() { double x,y; printf("Enter x:"); scanf("%lf",&x); if(x<=0) y=fabs(x); else y=exp(x); printf("\nx=%f,y=%f\n",x,y); }
可见,if-else 语句常用于计 算二分段函数
改错:求球的体积
#include "stdio.h" #include <math.h> main() { double r,v; printf("Enter r:"); scanf("%d",r); v=4/3*3.14*pow(r,3); printf(“v=%.1f\n",v); }
系统提供的库函数,在系统文件stdio.h中 (2) scanf使用初步 声明,所以在源程序开始时要使用预编译 处理命令#include <stdio.h> 调用格式如下: scanf(“格式控制字符串”,地址表列); 作用:按格式控制串的格式从终端为一个或多个不同 类型的变量赋值。
例:int x, y; scanf (“x=%d, y=%d”, &x,&y) ; &——叫取地址符
注意: 在输入和输出语句中,变量和格式说明的类型 及个数必须要一致
关于库函数的调用
(1)要在程序中包含相应的头文件 例如:#include <stdio.h>或 #include “stdio.h” #include是编译预处理命令 它的作用是将某个已经存在的头文件包含到程序中(因 为事先编好的函数被放在一个文件中,用的时候要把这 个文件包含到程序里面来,才能调用要用的函数) (2)常用的头文件 stdio.h:包含这个头文件,才能调用标准的输入输出函数 math.h:包含这个头文件,才能调用数学函数 (3)在TC编译环境中,调用scanf(),printf()时,#include <stdio.h>可省,但是在VC++编译环境不可以
程序说明
(1)程序中,用a>b比较a和b的值大小,是一种关系运算
注意:与=的区别
关系运算: —运算符: >, <, >=, <=, ==(等于),!=(不等于) —双目运算符
例如:x<=15
—优先级 (a) >, <, >=, <=同一级别, (b)==,!=同一级别 (c)>, <, >=, <= 的优先级高于==,!= (d)关系运算符优先级高于赋值运算符=,低于算数 运算符
举一反三【3-1】任意输入一个整数,如果能被3整 除,输出此数.否则,输出“不是3的倍数”。
#include "std",&x); if(x%3==0) printf("%d",x); else printf("不是3的倍数"); }
错误总结
scanf(“%d\n”,&a);不能加\n,否则,输入时也要输入\n main() { printf(“x”); int y; } float x; scanf(“%f,%f”,&x,&y); ==和=的区别 int a; if(a=3)不能实现比较 a==5;不能实现赋值
编程:【例3-2】计算分段函数
语句可以有一条,可以有多条,若有多条, 必须用 { } 括起来,构成复合语句
c语言的基本语句
1. 表达式语句 : 由表达式加分号构成 如: x=12 加 ; x=12 ; ( 赋值表达式语句 ) 2. 函数调用语句 : 由一个函数调用加一个分号构成 如: printf ("very good! "); 3. 空语句 : 由一个分号构成 , 它什么也不做 4. 复合语句 : 用 { } 括起来的语句序列
如 { int temp ; temp = x ; x=y; y = temp ; }
;
注意: 1.复合语句是一个整体, 相当于一条语句 2. 一个复合语句中可以包含其他的复合 语句 3. 在复合语句的花括号后不要再加分号
练习
下面不正确的语句是: x=y; x+y; a=12 ; 不能看作一条语句的是: { ;} {a=0;b=0;}