
C语言课件基本的程序语句课件.ppt
127页第第第第2 2章章章章 基本的基本的基本的基本的程序程序程序程序语句语句语句语句著名计算机科学家沃思提出:程序=数据结构+算法程序=数据结构+算法一个程序包括以下两方面内容:(1)对数据的描述在程序中要指定数据的类型和数据的组织形式,即数据结构2)对操作的描述即操作步骤,也就是算法C语言课件-基本的程序语句例如:学生各科成绩及总分排队问题1) 成绩的存放 ––– 以数组形式(2) 排队方法 ––– 算法在此, 存放数据的方式直接反映了一种程序语言的数据表达能力C语言的数据结构是以数据类型形式出现的C语言的数据类型可分为: 基本数据类型、构造数据类型、指针数据类型、空类型C语言课件-基本的程序语句2.1数据类型及取值范围数据类型及取值范围基本数据类型整型字符型(char)实型空类型(void)有符号整型(int)有符号长整型(long int)有符号短整型(short int)无符号整型(unsigned int)无符号长整型(unsigned long int)无符号短整型(unsigned short int)单精度(float)双精度(double)C语言课件-基本的程序语句标识符就是一个名字,用于标志某个事物,由字母、数字、下划线组成且由字母或下划线开头的字符串。
标识符可用来命名变量及作为常量名、函数名、类型名、标号和其他各种用户定义的对象命名一个程序内不得有重复名,不允许使用与C语言系统关键字(保留字)相同的标识符如如: _sum, sum, stu_name, price30等为合法的标识符2.2 标识符、变量和常量 标识符、变量和常量2.2.1 2.2.1 标识符标识符C语言课件-基本的程序语句下面的标识符是不合法的:Number-of-moves(含有非法字符-)piece flag(含有非法字符空格)5_6_7(数字开头)C语言课件-基本的程序语句在定义标识符时应注意以下几点:1. 为了增加可读性,应尽量"见名知意" 如:sum,area,day,name等等2. 对标识符的命名应"常用取简、专用取繁"3. 应尽量避免使用容易混淆的字符例如: O(大写字母)o(小写字母)0(数字) I(大写字母)l(小写字母)1(数字) Z(大写字母)z(小写字母)2(数字)C语言课件-基本的程序语句C语言关键字列表 autobreakcasechar constcontinuedefaultdo doubleelseenumextern floatforgotoif intlongregisterreturn shortsignedsizeofstatic structswitchtypedefunion unsignedvoidvolatilewhileC语言课件-基本的程序语句1..C语言区分大小写语言区分大小写如:Price 和 price,系统会认为是两个不同的标识符。
2.标识符的长度一般不超过.标识符的长度一般不超过8个字符个字符具体情况视不同系统而定设允许8个字符则: student_ namestudent_ number为同一名字注意:注意:C语言课件-基本的程序语句2.2.2 2.2.2 变量和常量变量和常量变量程序执行过程中可以不断改变其值的一种量变量包括变量名变量名和变量值变量值变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定一、变量一、变量C语言课件-基本的程序语句C语言中, (1)(1) 变量须先定义变量须先定义变量须先定义变量须先定义, , , ,后使用后使用后使用后使用如: int student student=30;则若写成student=30, 则未定义, 编译时指出其错可以在说明变量时赋初值如int i=9;错误 int a=b=c=9;正确 int a=9,b=9,c=9;C语言课件-基本的程序语句(2)(2) 一一一一旦旦旦旦变变变变量量量量被被被被定定定定义义义义, , , ,即即即即可可可可在在在在编编编编译译译译时时时时为为为为其其其其分分分分配配配配相相相相应数量的单元。
应数量的单元应数量的单元应数量的单元3) (3) 一一一一旦旦旦旦变变变变量量量量被被被被定定定定义义义义, , , , 其其其其类类类类型型型型便便便便确确确确定定定定则则则则可可可可检检检检查查查查其运算的合法性其运算的合法性其运算的合法性其运算的合法性如: a % b 表示a整除以b的余,则a,b必须为整型量变量的一般描述方法:类型关键字 变量名1,变量名2,…,变量名n;C语言课件-基本的程序语句基本数据类型所占字节数及其取值范围基本数据类型所占字节数及其取值范围(假定机器的假定机器的CPU的字长为的字长为16位位)C语言课件-基本的程序语句常量常量 程序运行过程中不能被改变的量一般的数据显式写法均表示常量一个数:20 整型常量 15.8 实型常量一个字符‘a’ 字符型常量 ‘2’ 字符型常量一个字符串 “fdjfk252” 字符串常量如:二、常二、常 量量C语言课件-基本的程序语句1. 1. 整型常量整型常量整型常量就是整型常数C语言提供了三种形式语言提供了三种形式:((1)) 十进制十进制如: 256, 308, -120等一般形式一般形式 [+]<数字数字>[<数字数字>[<数字数字>…]]其中: <数字>为0至9的数码之一;方括号中的内容可有可无。
如果有多位数字,第一个数字不能为0C语言课件-基本的程序语句((2)) 八进制八进制以数字0开头表示的整数如:0235, 0146,-012等.一般形式一般形式 [+]<数制符数制符><数字数字>[<数字数字>[<数字数字>…]]其中: <数制符>为数码0;<数字>为0至7的数码之一;方括号中的内容可有可无0235=2×82+3×8+5=157100146=1×82+4×8+6=10210-012=-(1×8+2)=-1010C语言课件-基本的程序语句((3)) 十六进制十六进制以"0x"开头的整型数如: 0x16, 0x1280x16=1×16+6=22100128=1×162+2×16+8=29610一般形式一般形式 [+]<数制符数制符><数字数字>[<数字数字>[<数字数字>…]]其中: <数制符>为数码0x或0X;<数字>为0至9、a至f、A至F;方括号中的内容可有可无C语言课件-基本的程序语句① 八进制整数和十六进制的整数的数制符是必需的② 以上3种整型常量的表示形式均可冠以正号或负号③ 在整型常量的尾部加上字母l或L时,则为长整型常量④ 一个整型常量也可由它的值确定它的类型注意:注意:C语言课件-基本的程序语句2. 2. 实型常量实型常量实型常量就是实数。
1))浮点记数法浮点记数法(十进制形式十进制形式)::一个实数的表示包括数字和小数点如: 0.126, 523.64等C语言课件-基本的程序语句(2) 科学记数法科学记数法(指数形式指数形式)::一个实数的表示包括整数部分、小数点、小数部分和指数部分如: 12.57e-04、16e-3、1E1512 .57 e-04指数部分小数部分整数部分小数点C语言课件-基本的程序语句3. 3. 字符常量字符常量字符常量字符常量是用一对单引号括起来的单个字符如' a ', ' A ', 二者不一样注意:数字3和字符‘3’的区别,前者为整型常量,占2个字节;后者为字符常量,占1个字节,‘3’的值为51 由于C语言中的字符常量是按整数值存放的,因此,字符常量可以像整数一样在程序中参与运算‘A’+4 结果为:69 C语言课件-基本的程序语句4. 4. 字符串常量字符串常量字符串常量是用一对双引号括起来的若干个字符如:“ Good Morning!”,”128.7369”字符串存放时,在最后加上“\ 0" –– 空字符C语言课件-基本的程序语句于是:G o o dM ornin g ! \0注意: 字符常量‘A’和字符串常量“A”是不一样的。
A”A \0 但‘A’AC语言课件-基本的程序语句1. 字符串长度=实际字符个数+1,但最后\0不输出.printf (" Good Morning! ")此处不写 \0, 自动加上2. 单个字符的字符串不能赋给字符变量例例: char c;c= " a "; 是错误的注意:注意:C语言课件-基本的程序语句转转义义字字符符:以“ \”开头后接一个字符或n个字符代表了一种特殊字符常量 5. 5. 转义字符转义字符C语言课件-基本的程序语句字符形式\n\t\v\b\r\f \\ \' \ddd\xxh功能换行横向跳格(即跳到下一个输出区)竖向跳格退格回车走纸换页反斜杠字符“ \”单引号(撇号)字符1到3位8进制数所代表的字符1到2位16进制数所代表的字符特殊字符常量C语言课件-基本的程序语句符号常量就是用一个名字来代表一个常量符号常量就是用一个名字来代表一个常量1) 利用宏定义”#define”定义符号常量如: #define PRICE 30#define PI 3.1415926(2) 利用”const”来定义如: const float BT=0.001const int SUM=1006.6. 符号常量符号常量C语言课件-基本的程序语句例: #define PRICE 30main ( ){int num, total;num=10;total=num*PRICE;printf("total=%d",total);}符号常量(一般用大写,以区分变量)符号常量的用处: 提高可读性, 降低输入错误的可能性, 保证一致性.C语言课件-基本的程序语句 数组是一种具有相同数据类型的变量的集合。
一维数组的定义格式:<数据类型><数组名> [数组大小] ;如: int a[6]; 数组名: a 6个元素:a[0], a[1], a[2], a[3], a[4], a[5] 2.3 一维简单数组一维简单数组C语言课件-基本的程序语句运算符: 运算的符号表示C语言有丰富的运算功能,先简述之1. 算术运算符 +, –, , /, % , 等2. 关系运算符 >, <, = =, > =, <=, !=3. 逻辑运算符 !, &&, ¦¦ 4. 位运算符 <<, >>, ~, ¦, ^, &5. 赋值运算符 = 等6. 条件运算符 ? 等7. 逗号运算符 ,2.42.4 基本运算符、表达式及运算优先级基本运算符、表达式及运算优先级基本运算符、表达式及运算优先级基本运算符、表达式及运算优先级C语言课件-基本的程序语句8. 指针运算符 *, &9. 求字节数运算符 sizeof10. 强制类型转换运算符 (类型)11. 分量运算符 •, 12. 下标运算符 [ ]13. 其它运算符 如函数的调用( )C语言课件-基本的程序语句2.4.1 2.4.1 算术运算符算术运算符1. 基本的算术运算符基本的算术运算符+加法,正值如:3+6, +3–减法,负值如:6– 4, –5乘法如:38/除法如:8 / 5%求余如:7 % 4 的值为3C语言课件-基本的程序语句((1)) 两个整型数据相除两个整型数据相除 (结果取整结果取整)。
–5/ 3 – 1使用时千万注意 int / int 可能会出现数据丢失2))“ /” 中中,有一个有一个 float, 则结果为则结果为double型注:注:C语言课件-基本的程序语句2. 自增、自减运算符自增、自减运算符+ +自增1– –自减1+ +i: 先使i值+1,再使用i值;i+ +: 先使用i值,再使i值+1.C语言课件-基本的程序语句如:(1) i=5;j=++i;(2) i=5;j=i++;结果不同 (1) j=6,i=6 (2) j=5,i=6自增运算符(+ +)和自减运算符(– –)只能作用于变量注意:注意:C语言课件-基本的程序语句(1) 要慎用要慎用++、、 – –运算符 有关表达式使用中的问题说明有关表达式使用中的问题说明 对于表达式(i++)+(i++)+(i++) ; 我们可能会认为应从左至右: 3+4+5=12#include
i+i+i=9 然后再把6赋给i值如果表达式j=(i++)+(i++)+(i++);改为: j=(++i)+(++i)+(++i);则运行结果:则运行结果: i=6, j=18这是因为运算时是先取i的原值:3C语言课件-基本的程序语句(2) 在表达式中在表达式中,有的运算符为一个字符有的运算符为一个字符,有的为两个字符有的为两个字符一般地: 自左至右尽可能多地将若干字符组成一个运算符如: i+++j, 究竟理解为(i++)+j还是i+(++j)? #include
如:C语言课件-基本的程序语句3. 算术表达式算术表达式算算术术表表达达式式: 用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子运算对象运算对象: 常量、变量、函数等优先级优先级: ( ), , /, %, +, –结结合合性性: 同一优先级, 自左向右,为左结合性,反之为右结合性C语言课件-基本的程序语句例例: a b / c – 1.5 + 'a'–d e;类数值型数据间的混合运算: C语言允许双精度、单精度、整型及字符数据之间混合运算如:10+'a'+1.5–8765.1234 'b'是允许的但有一个规则:先转换成同一类型,再计算1)(1)(2)(2)(3)(4)(5)(6)(6)C语言课件-基本的程序语句double float高低 图中“ ” 表示必定转换如'a' +' b',先转换为int结果为 int转换方法: longunsignedint char, short即: 既使是同一种类型也按" "转换C语言课件-基本的程序语句 图中“ ” : 表示低, 高型数据运算时,均先转换为高型。
例: 10+' a'+if –d /e其中: i –– int f –– float d –– double e –– longC语言课件-基本的程序语句(1) 10+'a': 转为int, 结果为int(2) if: 转为double, 结果为double(3) (1)+(2) : 转为double(4) d /e : 转为double(5) (3) - (4) 转为double则运算时则运算时:C语言课件-基本的程序语句2.4.2 关系运算符和关系表达式关系运算符和关系表达式关系运算就是比较运算, 如: a>3为一比较运算, 若 a=5, 则 a>3成 立 结 果 为 “真 ”, 否则, 若 a=1,则a>3不成立,结果为假上述表达式: a>3 称为关系表达式C语言课件-基本的程序语句一、关系运算符及其优先次序关系运算符及其优先次序1. <、、 <=、、 >、、 >=为为同同一一优优先先级级, = =、、 !=为为同同一优先级一优先级,,但前者高于后者。
但前者高于后者2. 关系运算符优先级低于算术运算符关系运算符优先级低于算术运算符C语言提供了六种关系运算符 < <= > >= = = !=优先级为:C语言课件-基本的程序语句3. 关系运算符优先级高于赋值运算符关系运算符优先级高于赋值运算符如下图:算术运算符 (+、-、*、/、%)赋值运算符 (=) 关系运算符高低举例: c>a+b c>(a+b)a>b!=c (a>b)!=ca= =b 连接起来的式子C语言课件-基本的程序语句如: 当a=3, b=2, c=1时(a>b)= =c 成立 1b+cb 则a>b值为1, 所以d=1. f=a>b>c a>b为1, a>b>c为0,所以f=0.C语言课件-基本的程序语句在使用关系运算符时,应注意以下几点:在使用关系运算符时,应注意以下几点:1. 数数学学中中在在判判别别x是是否否在在区区间间[a,,b]时时,,习习惯惯写写成成a x b 在C语言中不能写成"a<=x<=b",而应写成 a<=x && x<=b &&是逻辑运算符(下一节介绍)C语言课件-基本的程序语句2. 在判定两个浮点数是否相等时,由于存储上的误差在判定两个浮点数是否相等时,由于存储上的误差,可能会得到错误的结果可能会得到错误的结果 如:1.0/15.0*3.0*5.0=1.0数学中为恒等式 1.0/15.0*3.0*5.0==1.0 C语言中结果可能为假 应改为下面的形式: fabs(1.0/15.0*3.0*5.0)<1e-5C语言课件-基本的程序语句2.4.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式、逻辑量连接起来的式子–––逻辑表达式。 C语言课件-基本的程序语句一、一、 逻辑运算符及优先级逻辑运算符及优先级三种: && (与)、¦ ¦ (或)、 ! (非)其意义见真值表 a b !a !b a&&b a ¦¦b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假 总结 真变假、假变真 全真为真 全假为假C语言课件-基本的程序语句a&&b 当a, b均为1时,才为1a ¦ ¦b 当a, b中有一个为1时,就为1!a 当a为1, !a为0,反之为1由此看到:¦ ¦和&&为双目运算符。 !为单目运算符C语言课件-基本的程序语句优先级定义:2. &&和和¦ ¦低于关系运算符,低于关系运算符,!高于算术运算符高于算术运算符1. !(非非)优先于优先于&&(与与),,&&优先于优先于¦ ¦即: !&& ¦¦例: !a&&b ¦¦x>y && c ((!a)&&b) ¦¦ ((x>y)&&c)! 高&& ¦ ¦ 低C语言课件-基本的程序语句二、二、 逻辑表达式逻辑表达式 1. 逻逻辑辑表表达达式式的的值值与与关关系系表表达达式式值值一一样样,,真真为为1,,假为假为0例: (1) a=4 则 !a 值为0.此处只要a 0,为真.则!a值为0.(2) a=4, b=5 a&&b为1 前面已定义了逻辑表达式,以下看一看逻辑表达式的值及具体的运算C语言课件-基本的程序语句(5) 4&&0 ¦¦2 为1. 总之,在逻辑运算中,非0值参加逻辑运算时被看成1处理.(3) a=4, b=5 a ¦¦b为1(4) a=4, b=5 !a¦¦ b为1C语言课件-基本的程序语句2. 一个逻辑表达式中的逻辑运算符并不是一定一个逻辑表达式中的逻辑运算符并不是一定全部执行全部执行.如: a&&b&&c. 则当a=0(假)时, b,c不需判断。 当a=1,b=0,则不需判c.又如: a ¦¦b ¦¦c. 当a=1时,b, c均不必判别C语言课件-基本的程序语句例如: 判断年号是否为闰年闰年必须满足下列条件中的任意一个:(2) 年号能被400整除1) 年号能被4整除但不能被100整除设用变量year表示年号 当((year%4= =0&& year% 100 !=0) ¦¦year%400= =0) 为1时,year为闰年,否则为非闰年则:C语言课件-基本的程序语句 当(year%4!=0) ¦¦ (year%100==0 && year%400!=0) 为1时, year为非润年如果要判别非闰年可在上述表达式前加非(!)运算符. 当!( (year%4= =0 && year%100!=0) ¦¦year% 400= = 0) 为1时,year为非闰年或者:即:C语言课件-基本的程序语句应用应用例一金陵就是南京设a表示"金陵",b表示"南京"即 a==b例二前天下雨并且打雷设m表示"前天下雨",b表示"前天打雷"即 m&&n例三a大于b,或者c不大于0即 a>b ¦¦ !(c>0) 或者 a>b ¦¦ c<=0C语言课件-基本的程序语句共有共有6个,分别如下:个,分别如下:1. ~作用:按位取反如如::a=10011010则:~a=011001012. <<作用:按位左移如如:a=10011010则:a<<2=01101000C语言课件-基本的程序语句3. >>作用:按位右移如:如:a=10011010, b=01010011则:a>>2=11100110 (a为有符号数)4. &作用:按位与(1&1=1, 1&0=0, 0&0=0)如:如:a=10011010则:a&b=00010010b=01010011b>>2=00010100 (b为无符号数)C语言课件-基本的程序语句5. |作用:按位或(1|1=1, 1|0=1, 0|0=0)6. ∧∧作用:按位异或(1∧1=0, 1∧0=1, 0∧0=0)如如:a=10011010则:a∧b=11001001b=01010011如如:a=10011010则:a|b=11011011b=01010011C语言课件-基本的程序语句 位运算符分为两类位运算符分为两类位运算符分为两类位运算符分为两类::1. 只有一个变量参与运算: ~, <<, >>2. 有两个变量参与运算: &, |, ∧ 位运算时,通常采用的是八进制或十六进制数。 位运算时,通常采用的是八进制或十六进制数位运算时,通常采用的是八进制或十六进制数位运算时,通常采用的是八进制或十六进制数C语言课件-基本的程序语句2.4.5 2.4.5 条件运算符条件运算符问题: 当判断条件不论是“ 真”是“ 假”, 均给同一变量赋值时,能否简化语句书写?条件运算符为 ? : 三目运算符C语言提供以下的条件运算符:C语言课件-基本的程序语句功能: 先判表达式1, 若非0,则值为表达式2的值,否则为表达式3的值一般形式表达式1?表达式2: 表达式3 max=a>b? a:b;当a>b. max a. 否则maxbC语言课件-基本的程序语句注: 1. 条件运算符优先于赋值运算符. 例: max=(a>b? a:b)可去掉( ) 2. 条件运算符低于关系运算符和算术运算符 例: max=a>b? a:b+1 max= a>b? a:(b+1)并不是 max=(a>b? a:b)+1C语言课件-基本的程序语句 3. 条件运算符结合性为从右至左. 如: a>b? a:c>d ? c:d 相当于 a>b? a:(c>d? c:d)C语言课件-基本的程序语句4. 条件表达式不能取代一般的if语句,只有当if 的两 个分支为给同一变量赋值时才可替代if, 而if (a>b) printf("%d", a); else printf ("%d", b)不可用条件表达式代替但可表示为: printf("%d", a>b? a:b);C语言课件-基本的程序语句5. 表达式1、表达式2、表达式3可类型不同。 main ( ) { char ch; scanf ("%c", &ch); ch=(ch>='A' && ch<='Z')? (ch+32):ch; printf("%c", ch)}例4.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换然后输出最后得到的字符C语言课件-基本的程序语句运行结果如下: A aC语言课件-基本的程序语句符号" = "为赋值运算符2. 整整整整型型型型数数数数据据据据赋赋赋赋给给给给实实实实型型型型变变变变量量量量, ,数数数数值值值值不不不不变变变变, ,但但但但按按按按实实实实数数数数形式存放形式存放形式存放形式存放. . 1. 1. 将将将将实实实实型型型型数数数数据据据据( (无无无无论论论论单单单单, ,双双双双精精精精度度度度) )赋赋赋赋给给给给整整整整型型型型变变变变量量量量时时时时, ,舍弃小数舍弃小数舍弃小数舍弃小数. .赋值时,两边类型若不一致,则按以下规则转换:2.4.6 2.4.6 赋值运算符和赋值表达式赋值运算符和赋值表达式C语言课件-基本的程序语句4. 将将将将intintlong int, long int, 进行符号扩展。 进行符号扩展进行符号扩展进行符号扩展 即: 符号扩展, 低16位long 的低16位5. long int long int int int 则高则高则高则高1616位截断3. 字符型数据赋给整型变量时字符型数据赋给整型变量时字符型数据赋给整型变量时字符型数据赋给整型变量时: :(2)字符带符号整型变量,则字符高位扩展1)字符无符号整型变量,则存入低8位,高8位补零C语言课件-基本的程序语句6. 将将将将unsigned int unsigned int 型型型型long intlong int高位补高位补高位补高位补0 0而位数相同部分赋值 unsigned int int unsigned long long unsigned short shortC语言课件-基本的程序语句原值传送,但数据大小不能超值 如: unsigned int a=32768; int b; b=a; 则b的值超出范围,系统赋予它一个另外的值 a与b的取值对应关系: a:0……32767……65535 b:0……32767 ……3276817. 非非非非unsigned unsigned 型型型型长长长长度度度度相相相相同同同同的的的的unsignedunsigned型型型型数数数数据据据据, ,原原原原样传送样传送样传送样传送( (包括符号位包括符号位包括符号位包括符号位) )C语言课件-基本的程序语句一一、、复复合合赋赋值值运运算算符符::在在" =="号号之之前前加加一一个个其其它运算符。 它运算符C语言规定:凡是二目运算符均可构成复合运算符例: a+=3; 相当于 a=a+3 x=y+8; 相当于 x=x (y+8) x%=3; 相当于x=x%3 C语言课件-基本的程序语句一般形式一般形式: <变量变量> <赋值运算符赋值运算符> <表达式表达式>二、赋值表达式二、赋值表达式例: x=10 为一赋值表达式 其中<表达式>又可以是一个赋值表达式例: x=(y=10) 相当于 y=10;x=y 由于赋值号为右结合性,于是" ( ) "可省略, 即为:x=y=10;C语言课件-基本的程序语句例: a + = a – =aa (设a12)又: a=5+(c=6) c=6, a=11 a=(b=4)+(c=6) b=4, c=6, a=10 a=(b=10)/ (c=2)b=10,c=2, a=5进一步,还可用复合赋值运算符作下列运算:步骤: aa144. a – =a a a=a –a a=12 –144= –132 a + = –132 a = a+(–132) = –264C语言课件-基本的程序语句2.4.7 2.4.7 强制类型转换运算符强制类型转换运算符形式: (类型名) (表达式)可利用强制类型转换运算符将一个算术表达式转换为所需类型C语言课件-基本的程序语句例如: (double) a 将a转换为double(int) (x+y) 将x+y转换为int(float) (5%3) 将5%3转换为float注: 1. 括号不能省略括号不能省略括号不能省略括号不能省略。 否则: intx 会理解为变量intx. 又如: (int) (x+y) 若省略: (int)x+y会变成只将x转成整型.C语言课件-基本的程序语句 2. 转换后的类型数据由系统分配一个中间变量转换后的类型数据由系统分配一个中间变量转换后的类型数据由系统分配一个中间变量转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变存放,而原变量类型不变存放,而原变量类型不变存放,而原变量类型不变 若有: float x; 则: (int)x; x本身仍为实型,而(int)x由一个中间变量(整)存放x的整数部分C语言课件-基本的程序语句例例: #include 但可用(int)x%3来解决C语言课件-基本的程序语句 一般形式一般形式: : 表达式表达式1 1, , 表达式表达式2 2其计算规则: 先计算表达式1,再计算表达式2,最后值为表达式2的值例:a=35, a 4则: 先计算3 5, a15, a 4=60,结果为602.4.8 2.4.8 逗号运算符和逗号表达式逗号运算符和逗号表达式C语言课件-基本的程序语句又如: (a=35, a 4), a+5 扩展形式:扩展形式: 表达式表达式1, 表达表达2, …,表达式表达式n,结果为20(作为逗号表达式的值)(3) a+5a 即 20a.(1) 3 5=15a(2) a 4=60 (此时a值仍未变)结果为表达式n的值 C语言课件-基本的程序语句 (1) x=(a=3, 63) 赋值表达式, x的值18;(2) x=a=3, 6 a 逗号表达式, x的值3. 逗号表达式主要用于某些语句中需一次计算多个表达式值的情况如在循环语句中 函数调用中的实参之间虽然用的是逗号间隔,但不是逗号表达式。 如: printf ("%d, %d, %d", a, b, c);注意:注意:C语言课件-基本的程序语句一. 表达式语句printf (“a=%d\n”,a);表达式加上一个分号(;). 如: i=i+1; i++; x+y; 其函数调用也可理解为表达式语句.2.4.9 C2.4.9 C语言基本语句结构语言基本语句结构空语句空语句 ; 任何事情都不做.C语言课件-基本的程序语句二. 复合语句用{ } 括起来的一系列语句 如: { z=x+y; t=z/100; printf ("%f", t); }C语言课件-基本的程序语句三三. 控制语句控制语句––改变语句的执行顺序改变语句的执行顺序共有共有5种控制语句种控制语句:(1) if ( ) ~ else ~ (条件)(2) switch ( ) ~ (多分支)(4) while ( ) ~ (循环)(5) do ~ while (循环)(3) for ( ) ~ (循环)( )表示条件, ~表示语句C语言课件-基本的程序语句(1) continue ; (结束本次循环)(2) break ; (中止整个循环或switch结构)(3) goto <标号> ; (转移)(4) return ; ( 函数返回)四、转向控制语句四、转向控制语句:C语言课件-基本的程序语句2.5 C2.5 C语言的基本输入输出函数简介语言的基本输入输出函数简介 前面已论述: C语言本身无输入/ 输出语句, 由函数实现,如printf等。 一般:C语言提供了一些标准的输入/输出函数–––系统函数C语言课件-基本的程序语句2.5.1 printf 函数函数––格式输出函数格式输出函数一、一、printf的一般形式的一般形式 C语言中使用得最多的一种输出函数,它可一次按格式输出多个不同类型的数据printf(格式控制序列,输出表列);输出表列 ––– 用“ ,”号隔开的变量或表达式序列,其变量的值按对应的格式控制符所指定的格式输出C语言课件-基本的程序语句格式控制序列–––用双引号“ ...”括起来的格式符序列格式控制序列由格式说明符和普通字符组成2. 普通字符普通字符 原样输出1. 格式说明符格式说明符: 由%接格式字符组成 如: %f, %d等C语言课件-基本的程序语句例: a=3; b=4; printf("a=%d, b=%d", a, b); …结果: a=3,b=4无论 a, b中位数多少, 均为上述形式:如: a=123,b=45C语言课件-基本的程序语句二、格式字符二、格式字符不同类型的数据输出,用不同格式字符:1.1. d d格式符格式符––––十进制整数输出。 十进制整数输出1) %d: 按数据的实际长度输出2) %md: m表示输出字段宽度若实际位数 若串长小于m,则左补空格 允许一定的编辑即允许%ms, %–ms, %m.ns, %–m.ns四种形式, 每一形式的意义如下: 例: printf("%s", "CHINA");结果: CHINAC语言课件-基本的程序语句(3) %m.ns,输出占m列,但只取字符串中左端n个字符这n个字符输出在m列的右侧,左补空格4) %–m.ns,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格如果n>m,则m自动取n值,即保证n个字符正常输出2) %–ms, 如果串长小于m,则在m列范围内,字符串向左靠,右补空格C语言课件-基本的程序语句7.7. f f格式符格式符––––––以小数形式输出单、双精度实数,以小数形式输出单、双精度实数,有以下几种形式有以下几种形式: : %m.nf, 指定输出的数据共占m列,其中有n位小数如果值长度小于m,则左端补空格 %–mn.f, 与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格 %f, 不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数f %m.nf %–m.nfC语言课件-基本的程序语句8. 8. e e格式符格式符––––––以指数形式输出单以指数形式输出单, ,双精度实数双精度实数基本形式基本形式: %e: %e结果: 1.23456可有%m.ne和%–m.ne的形式9. g格式符––根据实数大小自动选择f格式,或e格式输出单双精度实数。 e+02例: printf (" %e ", 123.456)C语言课件-基本的程序语句printf格式字符总结格式字符总结格式字符d以带符号的十进制形式输出整数(正数不输出符号)oxucsfeg以8进制无符号形式输出整数(不输出前导符o)以16进制无符号形式输出整数(不输出前导符0x)以无符号10进制形式输出整数以字符形式输出,只输出一个字符说明输出字符串以小数形式输出单、双精度数,隐含输出6位小数以标准形式输出单、双精度数,数字部分小数位数为6位选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0C语言课件-基本的程序语句 许多情况与具体机器或系统有关,最好机器上一试表表2.5.1 附加格式说明字符附加格式说明字符字符说明用于长整型整型,可加在格式符d、o、x、u前面数据最大宽度对实数,表示输出n位小数; 对字符串,表示截取的字符个数输出的数字或字符在域内向左靠m(代表一个正整数).n(代表一个正整数)–字母1C语言课件-基本的程序语句2.5.2 scanf函数函数功能: 在标准输入装置(键盘)上按指定格式 输入各种类型的数据地址表列 –––变量的地址或字符串首地址。 形式: scanf(格式控制序列, 地址表列)格式控制序列–––同printf(…..)用&(变量名)表示取<变量名>的地址如:&a, &b等等C语言课件-基本的程序语句例: main( ) { int a, b, c;printf("please input 3 number:\n") scanf(" %d%d%d ", &a, &b, &c); printf(" %d,%d,%d\n" , a, b, c); }运行,机器等待你输入:please input 3 number:3 4 5↙3, 4, 5 C语言课件-基本的程序语句1.scanf函数用地址量接受数据函数用地址量接受数据2. 输入数据的间隔为输入数据的间隔为↙ ↙,Tab, 空格空格, 不能为不能为“ ,”.3. 允许在格式符中插入附加字符格式字符允许在格式符中插入附加字符格式字符及附加字符的定义如下表及附加字符的定义如下表.注意注意注意注意C语言课件-基本的程序语句scanf格式字符格式字符格式字符d用来输入十进制整数oxcsfe用来输入八进制整数。 用来输入十六进制整数用来输入单个字符说明用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束字符串以串结束标志‘ \0’作为其最后一个字符用来输入实数,可以用小数形式或指数形式输入和f作用相同,e与f可以互相替换C语言课件-基本的程序语句scanf附加的格式说明字符附加的格式说明字符字符说明用于输入长整型数据(可用%ld, %lo, %lx), 以及double型数据(用%lf或%le)用于输入短整型数据(可用%hd, %ho, %hx)表示本输入项在读入后不赋给相应的变量h域宽(为一正整数)*l指定输入数据所占宽度(列数)C语言课件-基本的程序语句4. 对于输入对于输入unsigned型数据型数据,不用不用%u,而用而用%d, %o, %x.5. 指定数据长度时指定数据长度时,系统自动截取系统自动截取scanf(" %3d%3d ", &a, &b);例如:int a, bprintf("a=%d, b=%d", a, b)则当输入123456789 后显示: a=123, b=456C语言课件-基本的程序语句7. 输入数据不能规定精度输入数据不能规定精度. 6. 在在%后加后加“ *”表示跳过相应的数据表示跳过相应的数据则当输入为12 345 67↙则a12 b67scanf("%2d %*3d%2d", &a, &b);scanf (" %7.2f ", &a);是错误的C语言课件-基本的程序语句8. 在格式控制中除格式说明符外若还有其它字符在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入。 则应按顺序原样输入例: scanf(" %d, %d", &a, &b);则必须输入 21, 28↙又如: scanf("a=%d, b=%d, c=%d", &a, &b, &c);则输入: a=34, b=58, c=100C语言课件-基本的程序语句提示提示::输入格式要求比较严格,稍有疏忽,输入格式要求比较严格,稍有疏忽,就会出错就会出错例:int a, bscanf(" %d, %d ", &a, &b);printf("a=%d, b=%d", a, b);则结果显示:a=12345, b=23266(或其他不定的数)显然b的结果是错误的若输入:12345↙(或12345 23456↙)应输入:12345, 23456↙C语言课件-基本的程序语句形式: putchar (c );功能: 向终端(一般为显示器)输出一个字符,其中c为 字符型或整型变量用该函数时,须用预编译命令: #include "stdio.h "2.5.3 putchar 函数函数 —字符输出函数字符输出函数注意注意注意注意C语言课件-基本的程序语句举例:结果: BOY#include "stdio.h"main( ){char a, b, c;a='B' ; b='O' ; c='Y';putchar(a); putchar(b); putchar (c);}C语言课件-基本的程序语句 putchar(a); putchar(' \n '); putchar(b); putchar(' \n '); putchar(c); putchar(' \n ');*利用putchar还可输出其它转义字符结果: B O Y putchar(' \101 '); 输出Aputchar(' \ ’ ' ); 输出’putchar(' \015 '); 输出↙ *若将最后一行改为:C语言课件-基本的程序语句3.5.4 getchar 函数函数形式: getchar( )功能: 从标准输入装置(键盘)上输入一个字符要求: 有#include "stdio.h"预编译命令C语言课件-基本的程序语句例: #include "stdio.h" main ( ) { char c;printf(”please input a char:\n") c=getchar (); putchar (c ); }C语言课件-基本的程序语句程序举例程序举例例1: 输入三角形三边, 求三角形面积。 C语言课件-基本的程序语句程序如下:程序如下:程序如下:程序如下:#include
