大学c语言第三章作业,第三章_C语言标准课件_ppt_大学课件预览_高等教育资讯网...

第三章 C语言 的数据类型、

运算符和表达式第一节 标识符定义,用来标识常量名、变量名、函数名、

数组名、文件名等对象的有效字符序列命名规则:

1)由字母(大小写)、数字、下划线

2)第一个 字符必须为字母或下划线如,ab name file1 _sum

5x Doc,Bao ei int

×

注意事项:

( 1) 区分大小写,即大写字母和小写字母被认为是不同的字符。

如,name Name NAME

( 2) C语言的关键字是一类特殊标识符,它们具有特定的含义,已被 C语言做其他用途,即关键字不能做变量名、常量名、函数名、

文件名等

( 3),见名知意,,即选有相应含义的英文单词等作为标识符第二节 数据类型

1.概述

1)对,数据,的描述在程序中需要指定数据的类型即数据的组织形式,即 数据结构

2)对,动作,的描述值对数据的加工处理步骤与过程,即 算法

2.数据类型

C语言中,数据结构是以数据类型的形式来体现的。

数据类型是指数据的内在存储方式。

C语言提供了丰富的数据类型 p38

从另一个角度来看,C语言中的数据又可以分成:

常量变量第三节 常量整型常量(整数)

实型常量(实数)

字符常量(字符)

转义字符字符串常量如,123 -5 8

如,5.4 0.486

如,?aH?

如,?\n\012?

如,,China”

1.整型常量(整数)

表示形式正整数负整数十进制整型常量 0~ 9

八进制整型 常量 0~ 7

十六进制整型 常量 0~ 9,A~ F

如,整数 1234在 C语言中十,1234

八,02322

十六,0x4D2

2.实型常量(实数、浮点数)

小数形式指数形式表示形式

1)小数形式整数部分小数部分小数点格式,±整数部分,小数部分注意:

( 1) 当整数部分或小数部分为 0时,可省略不写,

但不能同时缺省(,0.0” 不能写成,,” )

( 2) 小数点是小数部分的标志,不能省略如,234.5 -3.6,156

-.034 0,78.

2)指数形式尾数部分指数部分

E或 e

格式,±尾数部分 e ±指数部分如,12.34e+9 表示

5.6789E-10 表示

-58.99e-6 表示

12.34× 109

5.6789× 10-10

-58.99× 10-6

注意:

( 1) 指数部分只能是整数,并且指数形式的 3个组成部分不能省略如,12.34e 5E e 5e3.6

( 2) 一个实数可以有多种表示形式如,789.989 表示 789.989e0

78.9989e1

7.89989e2

0.789989e3 等

e2

3.字符常量用一对单引号括起来的一个字符如,?aB>

注意:

( 1) 其中单引号只作为定界符使用,并不是字符常量的组成部分,即在输出字符常量时,一对单引号并不输出注意:

( 2) ‘ ’ ‘,‘ \’ 是不允许的

( 3) 在 C语言中,字符常量具有数值,在 ASCⅡ

代码表中,‘ a’的值为 97,‘ A’的值为 65

( 4) 字符常量在计算机内部以整数常量的形式存放,因此,字符常量与整型常量等价如,a=?D?+8; 等价于 a=68+6;

b=+?x?; 等价于 b=63+88;

4.转义字符常量在 C语言中,允许另一种特殊形式的字符常量,

即以一个,\” 开头的字符序列。意思是将,\”

后面的字符转换成为另外的意思。

转义字符都是以,\” 开头 p48

如,?\n\t\b\r\f?

\\\\”?

\101\x0A?

例,转义字符 1

main( )

{

printf(“boy\t\girl\n”);

printf(“\n 12 3\t 45\r6\t7\n”);

}

结果,boy

8列

girl

12 3 456 7

例,转义字符 2

main( )

{

printf(“\“\\I

say:\‘ Goodby!\?\\\”\n”);

}

5.字符串常量由一对双引号括起来的字符序列如,,Hello”,C Program”

“How are you!”

注意:

( 1) 字符串常量与字符常量的区别 如,,a”?a?

( 2) 容量不同

( 3) 占用内存空间大小不同 ‘ \0’

第四节 变量

1.变量和变量的地址变量 —— 在程序运行过程中,其值可以发生变化的量变量的地址 —— 定义变量后,变量在内存中存放的位置如,变量 y的值为 6,而 y的地址为 1800H

则说明 1800H存储单元中存放的值为 6

2.变量说明语句一般形式:

数据类型 变量名如,int age,total;

注意:

( 1) 可以在一个数据类型后说明多个相同类型的变量,变量名之间用,,,隔开,数据类型与变量名之间至少要用一个,,隔开注意:

( 2),;,位于最后一个变量之后

( 3) 必须放在变量使用之前,通常放在函数体开头部分

( 4) 变量一经说明,每个变量就有一个特定的类型,在编译时就对其分配相应的存储空间

3.整型变量 —— 用于存放整数的变量基本类型符 int -215~ 215-1 2个字节短整型 short int -215~ 215-1 2个字节长整型 long int -231~ 231-1 4个字节无符号型

unsigned int 0~ 216-1 2个字节

unsigned short 0~ 216-1 2个字节

unsigned long 0~ 232-1 4个字节例,整型变量的定义与引用

main( )

{

int a,b,x,y;

unsigned int m;

a=15; b=-8; m=10;

x=2*a-m;

y=2*b+m;

printf(“a+m=%d,b+m=%d\n”,x,y);

}

结果,a+m=20,b+m=-6

4.实型变量 —— 用于存放实数的变量单精度 float

双精度 double

长双精度 long double

P46表如,float a,b,c; /*定义 a,b,c为单精度实型变量 */

double x,y; /*定义 x,y为双精度实型变量 */

long double z; /*定义 z为长双精度实型变量 */

例,实型数据的舍入误差

main( )

{

float x,y;

x=1.23456789e10;

y=x+20;

printf(“x=%f\ny=%f\n”,x,y);

}

结果,x=12345678848.000000

y=12345678848.000000

5.字符型变量 —— 用于存放字符数据的变量类型符 char 0~ 255 1个字节如,char ch1,ch2; /*定义 ch1,ch2为字符变量 */

ch1=?a?; /*把字符常量 ‘a’赋给字符变量 ch1 */

ch2=?b?; /*把字符常量 ‘b’赋给字符变量 ch2 */

注意:

如,char c1=97;

int c1=?a?;

( 1)在 0~ 255内,字符型变量与整型变量可以通用注意:

( 2)一个字符既可以以字符形式输出,也可以以整数形式输出例,字符以整数形式输出

main( )

{ char c1,c2;

int c3,c4;

c1=97; c2=?b?;

c3=?a?; c4=98;

printf(“%c%c%c%c\n”,c1,c2,c3,c4);

printf(“%d%d%d%d\n”,c1,c2,c3,c4);

}

注意:

( 3)字符数据可以参与算术运算例 (1),大小写字母转换

main( )

{ char c1,c2;

printf(“Please input a letter:”);

scanf(“%c”,&c1);

c2=c1+?A?-?a?;

printf(“%c\t%c\n”,c1,c2);

}

例 (2):

main( )

{

char c;

c=?b?+?5?-?3?;

printf(“%c\n”,c);

}

第五节 变量赋初值

int a=3;

float f=3.5;

char c=?e?;

C语言规定,允许在定义变量的同时给变量初始化(即赋初指)

方法 1,int a;

a=3;

float f;

f=3.5

char c;

c=?e?;

如,int a,b,c=5;

/*定义 a,b,c为整型变量,其中 c的值为 5*/

如,int a=5,b=5,c=5;

/*定义 a,b,c为整型变量,初值均为 5*/

方法 2:被定义变量的一部分赋初值方法 3:对几个变量赋初值如,int a=b=c=5;

第六节 各类数值型数据间的混合运算转换规则,

double float

long

unsigned

int char,short

1.隐式转换:

例,10+‘ a?+i*f-d/e

设,i为整型 int

f为单精度实型 float

d为双精度实型 double

e为长整型 long

2.强制类型转换:(显式转换)

强制类型转换运算符 —— ( )

(类型名) 表达式如,int n; /*定义 n为整型变量 */

float d; /*定义 d为实型变量 */

d=sin((double)n); /*将 n转换为 double型 */

如,(double)a; /*将 a转换为 double型 */

(int)(x+y); /*将 x+y的值转换为 int型 */

第七节 算术运算符和算术表达式一、运算符简介 p55

二、算术运算符和表达式

1,基本运算符,+ - * / %

注意,

( 1) *不能省,也不能写成×或?

( 2) %参与运算量必须为整数,既它只适用于

int和 char型如,6%4 -6%4 6%-4

注意,

( 3) /用法与一般数学中用法规则不完全相同

① 参与运算的均为整数时,结果也为整数

② 如果运算中有一个是实数,则结果为 double型如,5/2 5/3 -7/4 8/-5 1/2

如,S= absinA 21

如,5.0/2 1/2.0 -7.0/4

2.优先级和结合性优先级,按运算符的优先级别高低次序执行如,a-b*c+d

结合性,,自左向右,

如,a+b-c-d

但也有一些运算符结合方向为,自右向左,

如,a=3

3.自增、自减运算符( ++,--)

++a,--a—— 在使用之前,先使变量 a的值加(减) 1

a++,a-- —— 在使用之后,再使变量 a的值加(减) 1

注意,

( 1) ++a,a++的区别

++a,a++ 都相当于 a=a+1

区别在于:

如,a=5; b=++a;

a=5; b++=a;

( 2) ++,--只能用与变量,不能用于常量或表达式注意,

如,2++ ( 2*b-1)--

( 3) 与其它运算符混合使用时,应注意结合方向

,自右向左,

如,-a++ -(a++)

(-a)++

例 1,

int i,j,k;

i=3;

j=i++;

k=++i;

最后 i= j= k=,请填空5 3 5

例 2:

main( )

{

int a,b,c;

a=3;b=5;

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

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

a=3;b=5;

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

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

}

4.赋值运算符和赋值表达式

( 1)简单的赋值运算符 ——,=”

如,a=5 /*把 5赋给变量 a*/

注意,

①,=“左边必须是变量,右边可以时变量、

常量、函数调用、表达式等如,a=5.66 y=23.5+a*b-c/d

b=c z=sqrt(3)+2*c

i=i+1

注意,

②,=” 与数学中的等号外观相同,但含义、作用不同,i=i+1在数学中不成立,但在 C语言中成立

③ 如果,=” 两侧类型不同,在赋值过程中要进行类型转换转换规则,不论赋值号两侧级别高低如何,

一律将赋值号右边的类型转换成左边的类型,然后再赋值具体规定:

a.整型变量 =实数如,a=5.99 则 i的值为,5

b.单、双精度变量 =整数如,float x;

x=2 则 x的值为,2.000000

c.整型变量 =字符数据

d.字符变量 =整型数据

( 2)复合的赋值运算符如,x+=4 /*先使 x+4,再赋给 x*/

x=x+4

如,b-=5

a*=b+2

m/=y-15

y%=2

令 b=8 a=2 m=30 y=17

则 b= a= m= y=,3 10 15 1

一般形式:

变量 =表达式

( 3)赋值表达式如,a=5

b=c*5+12

注意,

①,=“右边的表达式又可以是一个赋值表达式即出现多个,=” 的情况如,a=b=3 /*把 3赋给变量 b

最后变量 a的值为 3*/

如,a=b=c=d=3 表达式值为,

x=(y=6)+3 表达式值为,

z=(x=16)*( y=4) 表达式值为,

3

9

64

注意,

② 赋值表达式还可以包含复合运算符如,x+=y*=3

令 x=5;y=2

求 表达式最后值为,

x的值为,

y的值为,

11

6

11

5.逗号运算符和逗号表达式 ——“,,

一般形式:

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

如,2+3,3*5

则 表达式最后值为,15

注意,

( 1) 优先级最低如,x=2+3,x-4

则 表达式最后值为,1

注意,

( 2) 逗号表达式可以嵌套,即表达式 n本身也可以为一逗号表达式如,( x=2*5,x-3),x*4

则 表达式最后值为,40

( 3) 并非所有出现逗号的地方,就可以作为逗号表达式如,printf(“%d,%d,%d”,a,b,c);

printf(“%d,%d,%d”,(a,b,c),x,y);

习题例 1,main()

{

float a;

int b;

printf(“Enter a float number:\n”);

scanf(“%f”,&a);

b=(int)a%10;

printf(“%d\n”,b);

}

运行时输入,56.789

习题例 2,main()

{

int a=4,b,c;

a*=5+2;

printf(“%d\n”,a++);

a-=b=c=6;

printf(“%d,%d,%d\n”,a,b,c);

}

/*a=a*(5+2)*/

习题例 3,main()

{

int a=2;

a%=5-1;

printf(“%d\n”,a);

a+=a*=a-=a*=5;

printf(“%d\n”,a);

}

习题例 4,main()

{

int i=2;

i+=i-=i+i;

printf(“%d\n”,i);

}

习题例 5,main()

{

int a=5,b=2;

float x=4.5,y=3.0,u;

u=a/3+b*x/y+1/2;

printf(“%f\n”,u);

}

习题例 6,main()

{

int i=2,j;

(j=3*i,j+2),j*5;

printf(“j=%d\n”,j);

}

习题例 7,main()

{

int i=2,j=4;

printf(“%d\n”,(i=i+1,i+j,j+1));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值