第3章 顺序程序设计_第1页
第3章 顺序程序设计_第2页
第3章 顺序程序设计_第3页
第3章 顺序程序设计_第4页
第3章 顺序程序设计_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第三章顺序程序设计

3.1顺序程序设计举例(略)

3.2数据的表现形式及其运算

3.2.1常量与变量■常量与符号常量

常量在程序运行过程中其值保持不变的量。符号常量用来代表一个常量的标识符。

#definePI3.1415926

例:

#definePI3.1415926main(){floatr=2,c;

c=2*PI*r;printf(“%f”,c);}■变量

其值可以改变的量。

变量的三要素:

变量名每个变量有一个名字,作为识别该变量的标识符。②变量的值每个变量有一个值,变量的值是随时可以改变的。

③变量的存储单元

每个变量占据一个内存单元,用于存放变量的值。

变量名

a

变量值

存储单元

3

变量的命名规则:由字母、数字和下划线组成以字母或下划线开头

a、x1、y_2、_b1、_1c合法

1x、a+2、Ф、Ω不合法

变量必须先定义后使用。程序中何时使用常量?何时使用变量?

3.2.2数据类型

在程序设计中需要根据需要选择合适的“类型”来定义变量。可选择的数据类型见图3.4

基本类型—整型﹑浮点型﹑字符型

枚举类型

空类型派生类型

3.2.3整型数据

■整型常量

即整常数,c的整常数有三种形式:

①十进制整数与数学中的整数一致,如:100,123,15等。

②八进制整数以0开头的整数,如:010,07,020等。

③十六进制整数以0x开头的整数,如:0x10,0xff,0x2a等。

■整型变量

用于存放整数的变量。分4种类型:

①基本型:inta16位,可表示的数值范围:-32768—3276732位,数值范围:-2147483648—2147483647

②短整型:shortintb16位,可表示的数值范围:-32768—32767

③长整型:longintc32位,数值范围:-2147483648—2147483647

④无符号型:加上unsigned

只存放正数。如:unsignedshortintx

变量x为无符号整数,16位全表示数码,数值范围:0—65535

在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;

例:

main()定义

{inta,b,c;a=100;b=50;使用

c=a+b;printf(“%d”,c);}

一般根据什么原则选择变量的类型?3.2.4字符型数据

■字符常量

用单引号括起来的一个字符。

’a’,’x’,’*’,’1’等除此外,以’\’开头的字符如’\n’,’\t’等称为转义字符,祥见书表3.1■字符型变量

用于存放字符的变量。

charc1,c2定义c1和c2为字符型变量

c1=’a’;c2=’b’;字符赋值字符型变量存放一个字符,占据一个字节■字符型数据的存储形式

存放ASCII码不是而是

如字符’a’在内存中存放97,’b’

存放98。与整数的存储形式一致,它们之间可以通用一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。如:32+’a’相当于32+97

若intx;charc;则x=’a’;c=97;x=97;c=’a’;都允许

■字符串常量

用双引号括起来的字符序列。

如:”abcde”,”china”

”a”也属字符串。注意”a”与’a’的区别。对于:

charc;c=”a”;

用法错误字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记’\0’

如:”china”

在内存中占6个字节。

china\0

C语言中专门的字符串变量,可用字符数组存放(以后介绍)。3.2.5实型数据

■实型常量

可使用两种形式表示:①小数形式:如1.23,3.141592615.48②指数形式:如1e-201.23e5

■实型变量

用于存放实数的变量分单精度和双精度两种:

floata,b

定义a和b为单精度型变量

32位,7位有效数字,10-38—1038

doublex,y

定义x和y为双精度型变量

64位,15位有效数字,10-308—10308

例:

main(){floatr,c;doubler,c;r=5;c=2*3.1415926*r;printf(“%f”,c);}

3.2.6各数值型数据间的混合运算

整型、实型、字符型数据间可以进行混合运算,如:

10-‘a’*1.5

运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则是:

将优先级低的类型转换到优先级高的类型

数据类型的优先级:高

doublefloatlongunsignde

intchar3.2.7算术运算符与算术表达式

■基本的算术运算符

+-*/%

■算术表达式

用算术运算符将运算对象连接起来的式子

用于表达数学公式的式子如:2*x+y-1/a

表达式经过运算最终得到一个值:

算术表达式的值■运算符的优先级与结合性

优先级:在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进行。

运算符的优先级关系为:高:*/%

低:+-

如:a-2*x先算*

2*(a+2)有括号的情况?

结合性:

如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向”处理。如:a-b+cb与-结合是从左到右,称“左结合性”。

b与+结合是从右到左,称“右结合性”。每个运算符都有相应的优先级和结合性。基本算术运算符都是左结合性。

计算表达式例:

2+’A’-1/2.01+3/2-2构造表达式例

2x2+3x-1

a+ba-b

a+ba-b

x+yx-ya+b/a-b?(a+b)/(a-b)2*x*x+3*x-1(*不能省)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/((x+y)/(x-y))(a+b)/(a-b)/(x+y)*(x-y)■强制类型转换可以用强制类型转换运算符将一个表达式的值转换成所需类型:如:

(int)(x+y)(float)(7%3)

应用举例:

若在TurboC下运行:

short

inta=200,b=300,c;c=a*b/100;?

可知,有自动转换和强制转换,当自动转换达不到目的时,可用强制转换。c=(long)a*b/100;c=(long)(a*b)/100;■自增、自减运算符

自增运算符:++

使变量值加1

自减运算符:--

使变量值减1

两种用法:

++i,--i先加(减)后用

i++,i--先用后加(减)两种用法对i效果一样,但表达式的值不同。例:假设i的原值为5:

j=++i;j=?

j=i++;j=?

注意:●++和--只能用于变量。

如:3++和(a+1)++

不合法●++和--为右结合性。

(-i)++

-i++

-(i++)

若i的原值是5,则该表达式的值是多少?

例:分析执行下列语句后的结果:

a=5;abcd

b=a++;c=--a-b++;d=(a++)-(++b)+c--;

5565067-26-1

两种特殊情况:①k=(i++)+(i++)+(i++)

②i+++j

是i+(++j)

还是(i++)+j?

i++虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。3.2.8赋值运算符和赋值表达式■赋值运算符

“=”称赋值运算符,其作用是将一个数据赋给一个变量。如:a=5

不要理解为“等号”。执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。

■赋值规则

如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:●实型→整变量舍去小数部分。

inta=5.5;a中为5。●整型→实变量数值不变,以浮点形式存储。●字符型→整变量放在整形变量低8位。保持原值不变原则。

inta=‘A’;■复合赋值运算符

在赋值运算符前加上其它运算符,可以构成复合赋值运算符。

a+=3——a=a+3b-=x+5——b=b-(x+5)x*=c-6——x=x*(c-6)y/=a*4——y=y/(a*4)k%=b-2——k=k%(b-2)

属于高效率运算符。■赋值表达式

主要实现赋值运算的表达式。

一般形式:

<变量>=<表达式>

如:a=5y=2*x+3a=a+1

不是衡等作用:将右边表达式的值赋给左边的变量。赋值表达式的值取左边变量的值。

赋值表达式右边的<表达式>可以是任何表达式,如:

a=(b=5)赋值表达式中包含赋值表达式赋值运算符的优先级低于所有算术运算符,且是右结合性。

a=(b=5)

与a=b=5

等效。

例:计算以下表达式的值:

a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=4.5)+(c=6.5)(a、b、c为整型变量)

a+=a-=a*a(设a的原值为3)

赋值表达式是C语言中的一个重要成分,在赋值表达式后加一分号就成为常用的赋值语句。如y=2*x+1;

赋值表达式作为表达式的一种,可以出现在任何表达式中,如:

x+2-(b/3-(a=k-5)+’b’

3.2.9逗号表达式

逗号也是一种运算符,用它对两个表达式实现连接运算。

3+5,6+8称逗号表达式。逗号表达式的一般形式:

表达式1,表达式2

取表达式2的值作为整个逗号表达式的值。如:a=3*5,a*4

逗号表达式的值为:60

一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如:

(a=3*5,a*4),a+5

因此,逗号表达式的一般形式可以扩展为:

表达式1,表达式2,表达式3,……,表达式n

取表达式n的值作为整个逗号表达式的值。

逗号运算符的优先级最低,且是左结合性。

逗号运算符只起到连接作用,没有实际操作。

3.3最简单的C程序设计

C程序最基本的成分是语句目前我们已掌握的语句:

变量说明语句:

inta,b,c;

表达式语句:

x+y;

特别地:

a=5;

赋值语句

可以编写简单程序如:

main(){intx,y;x=5;y=2*x*x+3*x-1;}

该程序语法上完整,但还缺少输出。

■数据的输出

用输出函数实现,其中的两种输出函数:

1.putchar函数(字符输出函数)用于输出一个字符。

如:

putchar(‘a’);putchar(100);charc=’b’;putchar(c);

例:输出单词Boy的完整程序:

#include“stdio.h”注意该语句的作用

main(){chara,b,c;a=’B’;b=’o’;c=’y’;putchar(a);putchar(b);putchar(c);}

2.printf函数(格式输出函数)

任意类型、任意格式、任意个数。例如:

inta=100,b=56;

printf(“a=%d,b=%d”,a,b);

普通字符格式说明格式控制

输出表列

输出结果:a=100,b=56“%”

后的字符称格式字符,不同格式字符对应不同的数据类型。

d格式符:按整数格式输出

几种用法:

%d

不指定宽度,按实际宽度输出

%md

按指定宽度输出,m为宽度

%ld

用于输出长整型数

例:

inta=125,b=453;longc=65535;printf(“a=%d,b=%5d,c=%ld”,a,b,c);

输出结果:

a=125,b=453,c=65535

%ld也可以按指定宽度输出:

printf(“c=%8ld”,c);

输出结果:c=65535注意:格式字符的类型要与对应的输出对象的类型一致。

c格式符:用于输出字符

charc=’A’;printf(“c=%c,%c”,c,’B’);

输出结果:c=A,B

输出对象既可以是字符变量、字符常量,还可以是整型表达式。

如:

inta=100;charb=’A’;printf(“\n%d,%c”,a,a);printf(“\n%c,%d”,b,b);

输出结果:

100,dA,65s格式符:用于输出字符串

%s

不指定宽度

%-ms

指定宽度,左靠齐

%ms

指定宽度,右靠齐

%m.ns

指定宽度m,只取左端n个字符,右靠齐

%-m.ns

指定宽度m,只取左端n个字符,左靠齐例:

printf(“1:%s”,”abcd”);

printf(“2:%8s”,”abcd”);printf(“3:%-8s”,”abcd”);

printf(“4:%8.3s”,”abcd”);printf(“5:%-8.3s”,”abcd”);1:abcd2:abcd3:abcd4:abc5:abcf格式符:按小数形式输出实数

%f由系统指定宽度(6位小数)

%m.nf指定宽度m,小数位数n,右靠齐

%-m.nf指定宽度m,小数位数n,左靠齐

注意:宽度包括符号和小数点。

例:

floata=3.141592654,b=14.326795,c=-125.2468;

printf(“\na=%f,b=%8.3f,c=%-10.2f”,a,b,c);

输出结果:

a=3.141592,b=14.326,c=-125.24

完整前面的程序:main(){intx,y;x=5;y=2*x*x+3*x-1;

printf(“\ny=%d”,y);}程序设计例:

编写程序计算如图中的电流I.

假设U=220,R1=30,R2=60,R3=45UIR1R2R3算法设计:

I=U/R1+U/R2+U/R3程序设计:

main(){

}I=U/R1+U/R2+U/R3;intU=220,R1=30,R2=60,R3=45;floatI;printf(“\nI=%f”,I);

正确的程序:

main(){intU=220,R1=30,R2=60,R3=45;floatI;I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“\nI=%f”,I);}

考虑通用:

main(){intU,R1,R2,R3;floatI;

输入U,R1,R2,R3I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“\nI=%f”,I);}

■数据的输入

getchar函数(字符输入)

#include“stdio.h”main(){charc;c=getchar();等待键盘输入

putchar(c);}

scanf函数(格式输入)

与printf函数相反。用于输入若干任意类型的数据。

scanf(“%d%d%d”,&a,&b,&c);

格式控制

温馨提示

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

评论

0/150

提交评论