第2章用C语言编写程序第6章数据类型和表达式_第1页
第2章用C语言编写程序第6章数据类型和表达式_第2页
第2章用C语言编写程序第6章数据类型和表达式_第3页
第2章用C语言编写程序第6章数据类型和表达式_第4页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2 2章章 用用C C语言编写程序语言编写程序第第6 6章章 数据类型和表达式数据类型和表达式6.1 6.1 基本数据类型基本数据类型C语言中的数据类型语言中的数据类型: 数据结构数据结构数据在计算机中的存储形式数据在计算机中的存储形式 )( 空类型指针类型共用体类型结构体类型数组类型构造类型枚举类型双精度型单精度型浮点型实型字符型整型基本类型数据类型变量和数据类型变量和数据类型三种基本数据类型:三种基本数据类型:整型、实型和字符型整型、实型和字符型u 在程序运行的过程中,其值可以改变的量称为变量在程序运行的过程中,其值可以改变的量称为变量u 变量必须变量必须 “先定义、后使用先定义、后使

2、用”u 变量定义的一般形式是:变量定义的一般形式是: 类型名类型名 变量名表变量名表例如例如: (参见教材(参见教材p19) int a, b, sum; /*定义定义a,b为整型变量为整型变量*/ float r, a; /*定义定义r,a为实型变量为实型变量*/ char c; /*定义定义c为字符变量为字符变量*/#include /*求面积求面积*/void main( ) float r,a; printf(“输入圆半径:输入圆半径:”); scanf(“%f”,&r); a=3.14*r*r; printf(“圆面积圆面积=%fn”,a);#include /*求两个数之和求两个数

3、之和*/void main( ) int a,b,sum; a = 123; b = 456; sum = a + b; printf( sum is %dn, sum ); 变量赋初值变量赋初值(P20P20)变量赋值的方式分为两种:变量初始化变量赋值的方式分为两种:变量初始化 1、先说明,再赋值。如:、先说明,再赋值。如: int a,b; a=10; b=20; 2、说明变量的同时赋值。这称为变量的、说明变量的同时赋值。这称为变量的初始化初始化 int a=10,b=10; float f=3.56; (等价于(等价于 float f; f=3.56;) int a=3,b=3,c=3;

4、 (对对a、b、c都进行初始化都进行初始化) int a,b,c=5; (只对变量只对变量C进行初始化进行初始化) int a=b=c=3; () char c=a;格式化输出函数(格式化输出函数(p21p21)printf函数函数(格式输出函数格式输出函数) 是系统提供的库函数,在系统文件是系统提供的库函数,在系统文件stdio.h中声明中声明 printf函数的一般格式如下,函数的一般格式如下,格式:格式:printf(printf(“格式控制字符串格式控制字符串”,输出参数,输出参数1,1, , ,输出参数输出参数n)n)功能:按指定格式向功能:按指定格式向显示器显示器输出数据输出数据l

5、格式控制串格式控制串 是用双引号括起来的字符串,用于指定输出格式。是用双引号括起来的字符串,用于指定输出格式。 格式格式说明总是由说明总是由“%”字符开始,如:整型用字符开始,如:整型用%d, 实型用实型用%f等。等。l输出参数输出参数 可以是变量或表达式,可以是变量或表达式, 要输出的数据多个时以要输出的数据多个时以“,”分隔分隔#includevoid main( ) int a,b,sum; a = 123; b = 456; sum = a + b; printf( sum is %dn, sum ); 格式化输出函数(格式化输出函数(p21p21)printf函数函数(格式输出函数格

6、式输出函数) 输出参数必须和格式控制字符串中的格式控制说明的输出参数必须和格式控制字符串中的格式控制说明的类型、个数以及位置一一对应(输出多个参数时)类型、个数以及位置一一对应(输出多个参数时) 普通字符:输出时要原样输出普通字符:输出时要原样输出#includevoid main( ) int a,b,sum; a = 123; b = 456; sum = a + b; printf( “a=%d,b=%d,sum=%dn, a,b,sum ); 格式化输入函数(格式化输入函数(p25p25)scanf函数函数(格式输入函数格式输入函数) 是系统提供的库函数,在系统文件是系统提供的库函数,

7、在系统文件stdio.h中声明中声明 scanf函数的一般格式如下:函数的一般格式如下:格式:格式:scanfscanf( (“格式控制字符串格式控制字符串”,输入参数,输入参数1,1, , ,输入参数输入参数n)n)功能:按指定格式从键盘读入数据,存入地址表指定的功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中存储单元中, ,并按回车键结束并按回车键结束l格式控制串格式控制串 是用双引号括起来的字符串,用于指定输入格式。是用双引号括起来的字符串,用于指定输入格式。 格式格式说明也是由说明也是由“%”字符开始,如:整型用字符开始,如:整型用%d, 实型用实型用%f等。等。l输入表列输

8、入表列 输入参数是变量地址,变量名前加地址符输入参数是变量地址,变量名前加地址符&#includevoid main( ) float r,a; printf(“输入圆半径:输入圆半径:”); scanf(“%f”,&r); a=3.14*r*r; printf(“圆面积圆面积=%.2fn”,a);格式化输入函数(格式化输入函数(p25p25)scanf函数函数(格式输入函数格式输入函数) 输入参数必须和格式控制字符串中的格式控制说明输入参数必须和格式控制字符串中的格式控制说明的类型、个数以及位置一一对应(输入多个参数时)的类型、个数以及位置一一对应(输入多个参数时) 普通字符:在输入时要原样

9、输入普通字符:在输入时要原样输入#includevoid main( ) int a,b,sum; printf(“输入输入a,b:”); scanf(“%d,%d”,&a,&b); sum = a + b; printf( “a=%d,b=%d,sum=%dn, a,b,sum ); scanf(“%d,%d”,&a,&b); scanf(“%d%d”,&a,&b); scanf(“a=%d,b=%d”,&a,&b); 课程回顾课程回顾三种基本数据类型:三种基本数据类型:整型、实型和字符型整型、实型和字符型 定义形式定义形式: int a, b, sum; /*定义定义a,b为整型变量为整型

10、变量*/ float r, a; /*定义定义r,a为实型变量为实型变量*/ char c; /*定义定义c为字符变量为字符变量*/ printf函数函数(格式输出函数格式输出函数) printf(“sum=%d”,sum); scanf函数函数(格式输入函数格式输入函数) scanf(“%f”,&r);#includevoid main( ) int a,b,sum; printf(“输入输入a,b:”); scanf(“%d,%d”,&a,&b); sum = a + b; printf( “a=%d,b=%d,sum=%dn, a,b,sum ); 常用数学库函数(常用数学库函数(p25

11、) C语言处理系统提供了许多事先编辑好的函数,语言处理系统提供了许多事先编辑好的函数,供用户在编程时调用,这些函数称为库函数。调用供用户在编程时调用,这些函数称为库函数。调用库函数一定要用库函数一定要用include命令将相应的头文件包含命令将相应的头文件包含到源程序中到源程序中 输入输入/ /输出函数:输出函数:#includestdio.h#include 数学处理函数:数学处理函数: #includemath.h#include u常用的数学库函数:常用的数学库函数:平方根函数:平方根函数:sqrt(x)绝对值函数:绝对值函数:fabs(x)幂函数:幂函数: pow(x,n)指数函数:指

12、数函数: exp(x)对数函数:对数函数: log(x)#includevoid main( ) int a,b,sum; a = 123; b = 456; sum = a + b; printf( sum is %dn, sum ); 6.2 6.2 常量和变量常量和变量 (P96)(P96)6.2.1 常量和符号常量常量和符号常量常量常量 在程序运行的过程中,其值不能改变的量称为常量在程序运行的过程中,其值不能改变的量称为常量 常量又分为不同的类型:常量又分为不同的类型:如:如:45,6,-34,-6为为整型整型常量;常量; 5.6,7.9,-7.78,2.0为为实型实型常量;常量; a

13、,b,d为为字符型字符型常量;常量;6.2 6.2 常量和变量常量和变量 (P96)(P96)6.2.1 常量和符号常量常量和符号常量符号常量符号常量 用一个标识符代表一个常量用一个标识符代表一个常量 如:如:#define PI 3.1415926标识符:标识符:用来标识变量名、常数名、数组名、函用来标识变量名、常数名、数组名、函数名、文件名等的有效字符序列。数名、文件名等的有效字符序列。例例6-1:计算球的表面积和体积:计算球的表面积和体积(符号常量的使用)(符号常量的使用)# include # define PI 3.1416void main( ) double r,s,v; pri

14、ntf(“input r: ”); scanf(“%lf”,&r); s=4.0*PI*r*r; v=4.0/3.0*PI*r*r*r; printf(“s=%f,v=%f,s,v);符号常量不能改变,符号常量不能改变,即不能被重新赋值。即不能被重新赋值。符号常量名习惯上用符号常量名习惯上用大写大写 ,变量名用小写,变量名用小写,以示区别。以示区别。在程序中不要太多使用常量,应尽量使用变量和符号常量在程序中不要太多使用常量,应尽量使用变量和符号常量5.1.2 5.1.2 基本基本数据类型数据类型整型整型有符号整型有符号整型 无符号整型无符号整型 数据长度数据长度int unsigned int

15、 16或或32位位short int unsigned short int 16位位long int unsigned long int 32位位实型(浮点型)实型(浮点型)单精度浮点型单精度浮点型 float 32位位双精度浮点型双精度浮点型 double 64位位字符型字符型char 8位位基本基本数据类型数据类型整型整型整型数据类型:整型数据类型:int扩展的整数类型:扩展的整数类型:有符号整型有符号整型(正数或负数正数或负数) 无符号整型无符号整型int unsigned intshort int unsigned short intlong int unsigned long int

16、类型名类型名 数据长度数据长度 取值范围取值范围int 32位位 -2147483648 2147483647 -231 231-1short 16位位 -32768 32767 -215 215-1long 32位位 -2147483648 2147483647 -231 231-1unsigned 32位位 0 4294967295 0 232-1unsigned short 16位位 0 65535 0 216-1unsigned long 32位位 0 4294967295 0 232-16.3 6.3 数据的输入和输出数据的输入和输出 (P100)(P100)6.3.1 整型数据的输

17、入和输出整型数据的输入和输出 调用调用scanf()函数函数和和printf()函数函数输入和输出时,应根据数输入和输出时,应根据数据类型使用相应的格式控制说明,并且可以加据类型使用相应的格式控制说明,并且可以加宽度限定词宽度限定词%md或者或者%-md,指定整型数据的输出宽度。,指定整型数据的输出宽度。 %d,按照整数的实际长度输出。前面讲过!,按照整数的实际长度输出。前面讲过! %md,m为指定的输出字段的宽度。如果数据的位数小于为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格(右对齐);如果大于,则左端补以空格(右对齐);如果大于m,则按照实际位数,则按照实际位数输出。输出。

18、(此格式用来对齐输出的数据)(此格式用来对齐输出的数据) 若若a=123; d=12345; 则:则: printf(“%4d,%4d”,a,b); 输出:输出: 123,12345 ( 代表空格)代表空格) %ld,输出长整型数据。,输出长整型数据。如:如:long a=135790; printf(“%ld”,a);xt1-2基本基本数据类型数据类型实型实型实型(浮点型)数据实型(浮点型)数据单精度浮点型单精度浮点型 float双精度浮点型双精度浮点型 double 存储存储 数据精度数据精度 取值范围取值范围 (有效数字有效数字)float 4字节字节 七七/八位八位 (10-38 10

19、38)double 8字节字节 十六位十六位 (10308 10308 )6.3 6.3 数据的输入和输出数据的输入和输出 (P100)(P100)6.3.2 实型数据的输入和输出实型数据的输入和输出 用来输出实数,以小数形式输出。有以下几用来输出实数,以小数形式输出。有以下几种用法种用法 %f,不指定字段宽度,由系统自动指定,不指定字段宽度,由系统自动指定,使整数部使整数部分全部输出,并输出分全部输出,并输出6位小数。位小数。注意注意:并非全部数据都是:并非全部数据都是有效数字,单精度实数的有效位数一般为有效数字,单精度实数的有效位数一般为7位,双位,双 精度有精度有效位数为效位数为16位。

20、位。%m.nf,指定输出数据共占,指定输出数据共占m列,其中有列,其中有n位小数。如果位小数。如果数值长度小于数值长度小于m,则左补空格。,则左补空格。%-m.nf与与%m.nf基本相同,只是输出的数值向左端靠,基本相同,只是输出的数值向左端靠,右端补空格右端补空格输出如下:输出如下:123.456001*123.456001*123.46*123.46 *123.46例例4.8 输出实数时指定小数位输出实数时指定小数位#inclucevoid main() float f=123.456; printf(“%f *%10f *%10.2f*%.2f*%-10.2fn”,f,f,f,f,f);

21、xt1-1共共10位位,小数占小数占2位位,小数点占小数点占1位位实型数据输出示例实型数据输出示例# include int main(void) double d = 3.1415926; printf(%f, %en, d, d); printf(%5.3f, %5.2f, %.2fn, d, d, d); 一共一共5位,小数位,小数3位,小数点一位位,小数点一位lxt23-pingguo基本基本数据类型数据类型字符型字符型字符具有数值特征:字符具有数值特征: 字符型数据在内存中占用一个字节,用于存储它的字符型数据在内存中占用一个字节,用于存储它的ASCIIASCII码。可以用字符常量或相

22、应的码。可以用字符常量或相应的ASCIIASCII码表示字符码表示字符 A A 65 65 (ASCII (ASCII码码) ) 0100 00010100 0001( (二进制二进制) ) 字符变量的定义形式如下:字符变量的定义形式如下: char c1,c2;char c1,c2;可以用下面的语句对可以用下面的语句对c1c1、c2c2赋值:赋值: c1=A; c1=A; /把字符常量把字符常量A A赋值给字符变量赋值给字符变量c1c1 c2=b; c2=b; 字符型变量的等价关系字符型变量的等价关系 char c;char c; c = A; c = A; 等价于等价于 c = 65;c

23、= 65;字符型常量字符型常量字符常量字符常量a A 9 + $ ASCII字符集(附录字符集(附录2)列出所有可用的字符(列出所有可用的字符(256个)个)每个字符:惟一的次序值(每个字符:惟一的次序值( ASCII 码)码)0-9 升序排列升序排列A-Za-z字符的数值特征字符的数值特征字符字符ASCII 码码对字符进行运算对字符进行运算 对字符的对字符的ASCII 码进行运算码进行运算例如:例如:A 的的 ASCII 码码 65则:则:A+1=66,对应字符,对应字符 B转转义义字字符符反斜杠后跟一个字符或数字反斜杠后跟一个字符或数字字符常量,代表一个字符字符常量,代表一个字符 n 10

24、1 x41 A %所有字符都可以用转义字符表示所有字符都可以用转义字符表示6.3.3 6.3.3 字符型数据输入输出字符型数据输入输出字符型数据的格式控制说明是字符型数据的格式控制说明是%c使用使用scanf() 和和 printf()函数,输入输出一个字符函数,输入输出一个字符char ch;scanf(%c, &ch);printf(%c, ch);使用使用getchar() 和和 putchar()函数,输入输出一个字符函数,输入输出一个字符char ch;ch = getchar( );putchar(ch); 例例 向字符变量赋以整数向字符变量赋以整数.#include void m

25、ain() char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2); printf(%d %dn,c1,c2);运行结果为:运行结果为:a b97 98 一个字符型数据既一个字符型数据既可以以字符形式输可以以字符形式输出,也可以以整数出,也可以以整数形式输出形式输出可以改为这两句:可以改为这两句:c1=a;c2=b; 例例 大小写字母的转换大小写字母的转换#include void main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %cn”,c1,c2);运行结果为:运行结果为:A

26、 B小写字母在小写字母在ASCII码表中排在大写字码表中排在大写字母的后面,每个小母的后面,每个小写字母比其相应的写字母比其相应的大写字母的大写字母的ASCII码大码大32例例6-3(2) 6-3(2) 输入输出字符示例输入输出字符示例# include void main( ) char ch1, ch2, ch3; scanf(%c%c%c, &ch1, &ch2, &ch3); printf(%c%c%c%c%c, ch1, #, ch2, #, ch3);AbCA#b#CA bCA# #b例例6-3(1) 6-3(1) 输入输出字符示例输入输出字符示例# include void ma

27、in( ) char ch1, ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2);AbA#b例例6-4 6-4 输出字符型数据输出字符型数据# include void main( ) char ch = b; printf(%c, %dn, b, b); printf(%c, %dn, 98, 98); printf(%c, %dn, 97, b-1); printf(%c, %dn, ch - a + A, ch - a + A ); b的的ASCII码码98b, 98b, 98a, 97B,

28、 666.4.1 6.4.1 自动类型转换(非赋值运算)自动类型转换(非赋值运算)整型、整型、浮点浮点型型(单、双精度单、双精度)、字符型数据间可以混合运算、字符型数据间可以混合运算在运算时,不同类型的数据要先转换成同一类型在运算时,不同类型的数据要先转换成同一类型(系统自动完(系统自动完成)成),然后进行运算。转换的规则如下图所示:,然后进行运算。转换的规则如下图所示:根据数据类根据数据类型的优先级别来确定。型的优先级别来确定。高高 double float long unsigned 低低 int char,short运算时数据向最高级别转换运算时数据向最高级别转换设设 int i; fl

29、oat f; double d; long e; 则式子则式子 10+a+i*f-d/e 的结果为的结果为double型型5.4.2 5.4.2 强制类型转换强制类型转换强制类型转换运算符强制类型转换运算符类型转换运算符类型转换运算符: (类型名类型名)转换形式转换形式:(类型名类型名) 表达式表达式如:如:(double)a /* 将将a的值转换成的值转换成double类型类型 */ (int)(x+y) /* 将将x+y的值转换成整型的值转换成整型 */ (float)(5%3) /* 将将5%3的值转换成的值转换成float型型 */在强制类型转换时,得到一个所需类型的中间变量,原来在强

30、制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。变量的类型未发生变化。 例如例如 (int)x 而不要写成而不要写成 int(x)例例 float a; int cfloat a; int c; a=3.34;a=3.34; c=(int)a+2; c=(int)a+2; 结果是结果是5 5总结:类型转换有两种:总结:类型转换有两种:1、自动类型转换、自动类型转换 2、强制类型转换、强制类型转换表达式:由运算符和运算对象(操作数)组成的有表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运意义的运算式子,它的值和类型由参加运算的运算符和运算

31、对象决定。算符和运算对象决定。运算符:具有运算功能的符号运算符:具有运算功能的符号运算对象:常量、变量和函数等表达式运算对象:常量、变量和函数等表达式算术表达式、赋值表达式、关系表达式、逻辑表达算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等式、条件表达式和逗号表达式等 6.5 6.5 表达式表达式 6.5.1 6.5.1 算术表达式算术运算符算术表达式算术运算符单目单目 + - + -双目双目 + - * / %注意注意/ 整数除整数,得整数整数除整数,得整数1/4 = 0,10/3 = 3% 模模(求余求余): 针对整型数据针对整型数据5%6 = 5,9%4 = 1

32、,100%4 = 0+ 和和 u单目运算符,单目运算符, +10 和和 10u双目运算符,双目运算符, x+10 和和 y 10 双目运算符两侧操作数的类型要相同,否则,自动类型双目运算符两侧操作数的类型要相同,否则,自动类型转换后,再运算。转换后,再运算。自增运算符自增运算符+和自减运算符和自减运算符- -自增、自减运算符自增、自减运算符+ - + - (单目运算)(单目运算)作用:使变量值加作用:使变量值加1 1或减或减1 1。如:。如:+I +I 等价于等价于 i=i+1i=i+1两种形式:两种形式:u 前置前置 +i,-i (+i,-i (先先使使i i值值+1+1或或-1-1,再使用

33、再使用i i值)值)u 后置后置 i+,i- (i+,i- (先使用先使用i i值值, , 再再使使i i值值+1+1或或-1-1)例例 i=3; k=+i; i=3; k=+i; i=3; k=i+; i=3; k=i+; a=3; b=5; c=(+a) a=3; b=5; c=(+a)* *b; b; a=3; b=5; c=(a+) a=3; b=5; c=(a+)* *b; b; /i=4,k=/i=4,k=4 4 /i=4,k=/i=4,k=3 3 /a=4,c=2/a=4,c=20 0 /a=4,c=1/a=4,c=15 5注意:前置和后置的区别,注意:前置和后置的区别,i值有不

34、同吗?值有不同吗?/*使用循环方式求使用循环方式求1-100的和(累加)的和(累加)*/#includevoid main() int i,sum; sum=0; i=1; while(i=100) sum=sum+i; i+; printf(和为和为: %dn,sum); 改成下列形式行不?改成下列形式行不?+i;自增运算符自增运算符+和自减运算符和自减运算符- -int n;n+ +n n- -n (只适合变量运算)(只适合变量运算)使变量的值增使变量的值增1或减或减1+n n+ n = n + 1-n n- n = n - 1取变量的值作为表达式的值取变量的值作为表达式的值+n:n =

35、n + 1;取;取n值作为表达式值作为表达式 +n 的值的值n+:取:取n值作为表达式值作为表达式 n+ 的值;的值;n = n + 1算术运算符的优先级和结合性算术运算符的优先级和结合性单目单目 + - + -双目双目 * / %双目双目 + -高高低低从右向左从右向左-5 + 3%2 = (-5) + (3%2) = -43 * 5 % 3 = (3*5) % 3 = 0-i+ -(i+)6.5.2 6.5.2 赋值赋值表达式表达式1. 1. 赋值运算符赋值运算符赋值符号:赋值符号:= = 2. 2. 赋值表达式赋值表达式变量标识符变量标识符= =表达式表达式 x = 3*4;作用:将一个

36、数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量赋值时将表达式的类型转换成变量的类型再赋值。赋值时将表达式的类型转换成变量的类型再赋值。 优先级较低,结合性从右向左优先级较低,结合性从右向左 x = y = 3例例 float a; int cfloat a; int c; a=3;a=3; c=a+2; c=a+2;例例 3=x-23=x-2* *y; y; ( ) a+b=3; a+b=3; ( )x = (y = 3)6.5.2 6.5.2 赋值赋值表达式表达式3. 3. 复合赋值运算符复合赋值运算符u在等号之前加上其它运算符,可以构成复合的运算符在等号之前加

37、上其它运算符,可以构成复合的运算符u形式:形式:运算符运算符=u种类:种类:+= -= += -= * *= /= %= /= %= u实例:实例:a+=3a+=3a=a+3a=a+3x x* *=y+8=y+8x=xx=x* *(y+8)(y+8)x%=3x%=3x=x%3x=x%3例例: a=b=c=5: a=b=c=5 a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) printf(“%d”,a=b); printf(“%d”,a=b);/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/表达式值表达式值1111,c=6,a=1

38、1c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6/完成赋值和输出双重功能完成赋值和输出双重功能赋值表达式赋值表达式例例: : 赋值表达式的复合运算赋值表达式的复合运算 若若a=12 则则a+=a- =a*a a=a-a*a=-132 a=a+(-132)=-2646.5.6 6.5.6 逗号表达式逗号表达式(P114)(P114)逗号运算符和表达式逗号运算符和表达式形式:形式:表达式表达式1,表达式表达式2,表达式表达式n结合性结合性: 从左向右从左向右优先级优先级: 15逗号表达式逗号表达式的值:等于的值:等于“表达式表达式n”的值的值用途:用途

39、:常用于循环常用于循环for语句中语句中例例 a=3*5, a*4例例 x=(a=3, 6*3) x=a=3, 6*a例例 已有已有a=1;b=2;c=3; printf(“%d,%d,%d”,(a,b,c),b,c); /表达式值表达式值60, a=15 /赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达式值表达式值18,x=3 /3,2,3int a, b, c;a=2, b=3, c=a+b(a=2), (b=3), (c=a+b);加法:加法:0100累加和累加和sum = 0;for(i = 0; i = 100; i+) sum = sum + i

40、;逗号逗号表达式的用途表达式的用途for(i =0, sum = 0; i = 100; i+) sum = sum + i;for(i = 0, sum = 0; i = 100; i+) sum += i; 复合赋值表达式复合赋值表达式x=3, 表达式表达式y值?值?y= (x+) + (+x) + (x+) 实例实例y= ( a=3, b=a+, a/2 ) a值值,b值值,y值?值? 先计算所有的前置增量操作先计算所有的前置增量操作: x=4计算表达式值计算表达式值: y=12再计算所有的后置增量操作再计算所有的后置增量操作: x=5, x=6x=3, 表达式表达式y值?值?y= (+

41、x) + (+x) + (+x) 先前置先前置: x=4, x=5, x=6计算表达式值计算表达式值: y=18a=3; b=3, a=4; a/2计算表达式值计算表达式值: y=2C C语言程序是结构化的程序语言程序是结构化的程序C语言程序由三种基本结构组成语言程序由三种基本结构组成顺序结构:顺序结构:a=3; b=5; c=a+b;选择结构选择结构: if else , switch 循环结构循环结构: for , while 顺序结构程序与选择结构程序顺序结构程序与选择结构程序顺序结构程序顺序结构程序选择结构程序选择结构程序/*求两个数的和求两个数的和*/#include void ma

42、in( ) int a, b, c; scanf( “%d, %d”, &a, &b ); c = a+ b; printf( “c = %d n”, c ); /*求两个数的最大值求两个数的最大值*/#include void main( ) int a, b, max; scanf( “%d, %d”, &a, &b ); if ( a b ) max = a; else max= b; printf( “max = %d n”, max );程序顺序执行,且每条语句都程序顺序执行,且每条语句都执行一次执行一次根据条件,只执行满足条件的语句。根据条件,只执行满足条件的语句。某些语句可能执行

43、不到。某些语句可能执行不到。循环结构程序循环结构程序循环结构程序循环结构程序#include void main( ) int a, b, sum; scanf( “%d, %d”, &a, &b ); sum = a+ b; printf( “sum = %d n”,sum); /*求求0100累加和累加和*/#include void main( ) int i, sum=0; for ( i=0; i=100; i+) sum=sum+i; printf( “sum = %d n”, sum );在给定条件成立时,反复执行某程序段(循环体语在给定条件成立时,反复执行某程序段(循环体语句)

44、,直到条件不成立时,结束循环句),直到条件不成立时,结束循环例例2-5 2-5 程序程序p26p26例例2-5: 计算银行存款利息计算银行存款利息 # include # include void main( ) int money, year; double rate, sum; printf(请输入存款金额请输入存款金额: ); scanf(%d,&money); printf(请输入存款年限请输入存款年限: ); scanf(%d,&year); printf(请输入存款利率请输入存款利率: ); scanf(%lf,&rate); sum=money*pow(1+rate),year)

45、; printf(到期本息合计到期本息合计: %.2fn,sum); printf(n);scanf(%d,%d,%lf, &money, &year, &rate);顺序结构程序设计举例顺序结构程序设计举例例例 说明程序设计的步骤与注意事项说明程序设计的步骤与注意事项#include #include void main() int a,b,c; a=5;b=7; float x,y,z; c=a*b; z=sqrt(x+y); scanf(%f,%f,&x,&y); printf(“%d,%dn,c);printf(“x=%f,y=%f,z=%fn,x,y,z);顺序结构程序设计举例顺序结

46、构程序设计举例a=5;b=7;float x,y,z;scanf(%f,%f,&x,&y);z=sqrt(x+y); printf(“%dn,c);程序中有几处错误?程序中有几处错误?#include #include void main() float a,b,c,s,area; printf(“请输入三角形的三个边长:请输入三角形的三个边长:”); scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c

47、,s); printf(“三角形面积三角形面积=%7.2fn,area);例输入三角形边长,求面积例输入三角形边长,求面积输入:3,4,6输出:a=3.00, b=4.00, c=6.00, s=6.50area=5.33)()()()(21csbsassareacbas输入数据输出数据分析分析: a,b,c:表示三角形的三边。表示三角形的三边。 s:中间变量。中间变量。 s=1/2*(a+b+c) area:三角形面积。三角形面积。 以上变量均为实型。以上变量均为实型。变量定义文件包含预处理命令s=1/2*(a+b+c)s=(a+b+c) /2 设置几个变量?变量类型是什么?设置几个变量?变

48、量类型是什么?选择结构程序选择结构程序/*求两个数的最大值求两个数的最大值*/#include void main( ) int a, b, max; scanf( “%d, %d”, &a, &b ); if ( a b ) max = a; else max= b; printf( “max = %d n”, max );根据条件,只执行满足根据条件,只执行满足条件的语句。某些语句条件的语句。某些语句可能执行不到。可能执行不到。6.5.3 6.5.3 关系表达式关系运算符关系表达式关系运算符比较两个操作数,比较的结果:真比较两个操作数,比较的结果:真 假假x y x y x = y x !

49、= y优先级优先级 算术运算符算术运算符 = = != 赋值运算符赋值运算符左结合左结合a b = cd = a bch a + 1 d = a + b c3 = x b)= cd = (a b)ch (a + 1)d = (a + b) c)(3 = x) b = cd = a bch a + 1d = a + b cb - 1 = a != c3 = x b) max=a ; else max=b ;其中:其中:“ab”是关系表达式,是关系表达式,“”关系运算符关系运算符如果如果a=5,b=3,满足条件,满足条件ab,则执行语句,则执行语句 max=a;如果如果a=2,b=3,不满足条件,

50、不满足条件ab,则执行语句,则执行语句max=b;2.2.3 if-else2.2.3 if-else/*求两个数的最大值求两个数的最大值*/#include void main( ) int a, b, max; scanf( “%d, %d”, &a, &b ); if ( a b ) max = a; else max= b; printf( “max = %d n”, max );2.3.1 2.3.1 程序解析程序解析例例2-4 分段计算水费分段计算水费要解决的问题:要解决的问题:输入输入x计算分段函数计算分段函数输出输出y,并保留,并保留2位小数位小数 415( )32.510.5

51、15xxyf xxx2.3.3 if - else2.3.3 if - else语句语句if (表达式表达式) 语句语句1else 语句语句2if (x 15) else y = 2.5 * x - 10.5;y = 4 * x / 3;2.3.1 2.3.1 程序解析求分段函数程序解析求分段函数 /*例例2-4 居民用水居民用水*/#include void main ( ) double x, y; printf(Enter x (x=0):n); /* 输入提示输入提示 */ scanf(%lf, &x); /* 调用调用scanf函数输入数据函数输入数据 */ if (x =0):9.

52、5f(9.500000)=12.67Enter x (x=0):15f(15.000000)=20.00Enter x (x=0):21.3f(21.300000)=42.75软件测试的基本思想软件测试的基本思想 p24p24软件测试软件测试精心设计一批测试用例精心设计一批测试用例 输入数据,预期输出结果输入数据,预期输出结果 ,然后分,然后分别用这些测试用例运行程序,看程序的实际运行结果与预别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。期输出结果是否一致。input x:2.5f(2.50)=0.4input x:0f(0.00)=0.0if(x != 0) y =

53、1/x;else y = 0;if(x =0):9.5f(9.500000)=12.67Enter x (x=0):15f(15.000000)=20.00Enter x (x=0):21.3f(21.300000)=42.756.5.5 6.5.5 条件表达式条件表达式p113p113y = (x0) ? x+2 : x*x;if ( x0 ) y=x+2;else y=x*x; x+2 x0y = x2 xb) ? a : b;if ( ab ) z = a;else z = b;问题:编程序求问题:编程序求1+2+100之和之和分析:分析: 1、设一个变量、设一个变量sum存放和,并初始

54、化为存放和,并初始化为0; 2、设置变量、设置变量i, 让其从让其从1100,将这,将这100个数一个一个加到个数一个一个加到sum中,中,加加100次,而且每次都做同样的操作:次,而且每次都做同样的操作: sum=sum+i;i+;(i从从1增加到增加到100) 3、当、当i增加到增加到101时,停止计算;最后时,停止计算;最后sum中的值就为所求的值中的值就为所求的值 顺序结构和选择结构程序是每条语句最多执行一次,顺序结构和选择结构程序是每条语句最多执行一次,不能解决这个问题,因此要用到循环结构不能解决这个问题,因此要用到循环结构 循环结构是用于处理大量的有规律的重复操作循环结构是用于处理

55、大量的有规律的重复操作sum=1+2+100;分析:分析:sum=0 i=1sum=sum+1=1sum=sum+2=1+2=3sum=sum+3=3+3=6sum=sum+4=6+4=10sum=sum+100=4950+100=5050u一般形式:一般形式:for ( 表达式表达式1 ; 表达式表达式2 ; 表达式表达式3 ) 循环体语句循环体语句u执行流程:执行流程:表达式表达式2循环体语句循环体语句假假(0)真真(非非0)for表达式表达式1表达式表达式32.4.2 for2.4.2 for语句循环语句语句循环语句1.1.先求解表达式先求解表达式1 1,只执,只执行一次行一次2.2.判

56、断表达式判断表达式2 2,若其值,若其值为真为真( (非非0)0),则执行循,则执行循环体语句,并接着执环体语句,并接着执行表达式行表达式3 3;若为假;若为假(0)(0),则结束循环,执,则结束循环,执行行forfor语句下面一条语语句下面一条语句句sum=0;for (i=1;i=100;i+) sum=sum+i;实现实现C语句的重复执行语句的重复执行此处无此处无分号分号;uforfor语句一般应用形式语句一般应用形式:for( 循环变量赋初值循环变量赋初值; 循环条件循环条件; 循环变量增值循环变量增值) 循环体语句循环体语句 #include void main() int i,su

57、m=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum);for (表达式表达式1;表达式;表达式2;表达式;表达式3) 求求 1+2+100抽取具有共性的算式:抽取具有共性的算式:sum = sum + i sum初值为初值为0,该算式重复,该算式重复100次,次,i从从1变到变到100设设i为循环变量,则:为循环变量,则:指定循环起点的表达式指定循环起点的表达式1:i = 1给出循环条件的表达式给出循环条件的表达式2:i = 100设置循环步长的表达式设置循环步长的表达式3:i+循环体语句:循环体语句:sum = sum + i;for(i=1; i=10

58、0; i+)sum =sum+i;2.4.3 2.4.3 指定次数的循环程序设计指定次数的循环程序设计/*计算计算1 + 2 + 3 + + 100 */#include void main ( ) int i, sum; sum = 0; /* 置累加和置累加和sum的初值为的初值为0 */ for ( i = 1; i = 100; i+ ) /* 循环重复循环重复100次次 */ sum = sum + i; /* 反复累加反复累加 */ printf( “sum = %dn”, sum); /* 输出累加和输出累加和 */源程序求源程序求 1+2+1+2+100+100sum=5050

59、for(i=1,sum=0; i=100; i+) sum=sum+i;例例2-7: 计算计算1 + 2 + 3 + + n #include void main ( ) int i, sum; printf (“Enter n: ”); scanf (“%d”,&n); sum = 0; /* 置累加和置累加和sum的初值为的初值为0 */ for ( i = 1; i = 100; i+ ) /* 循环重复循环重复100次次 */ sum = sum + i; /* 反复累加反复累加 */ printf( “sum = %dn”, sum); /* 输出累加和输出累加和 */扩展程序扩展程

60、序: 求求1+2+n的和的和作业题作业题2-2. 编写程序编写程序: 从键盘上输入摄氏温度,输出对应的华氏温从键盘上输入摄氏温度,输出对应的华氏温度。度。2-5. 编写程序编写程序: 从键盘输入两个整数,交换这两个变量的值从键盘输入两个整数,交换这两个变量的值并输出结果。并输出结果。 提示:设置中间变量,用于交换数据。提示:设置中间变量,用于交换数据。2-7. 编写程序编写程序: 将一个小于将一个小于256的十进制数正整数转换成的十进制数正整数转换成3位八进制数。位八进制数。 (选做选做) 提示:采用提示:采用“除除8取余数取余数”的方法,将十进制数除以的方法,将十进制数除以8得得到商和余数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论