第二章 数据类型、赋值语句、输入输出_第1页
第二章 数据类型、赋值语句、输入输出_第2页
第二章 数据类型、赋值语句、输入输出_第3页
第二章 数据类型、赋值语句、输入输出_第4页
第二章 数据类型、赋值语句、输入输出_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 数据类型、赋值语句、输入输出2.1 C语言的词法记号 1关键词类型标识、函数名、语句 2标识符变量名、文件名、数组名 3常量 数值、字符、符号 4字符串常量 5定界符" " 、 6运算符算术、逻辑、比较 7分隔符()、空格【例2.1】C语言的一个简单例子。 #include <stdio.h> main() int a,b,sum; printf("Enter two numbers:"); scanf("%d%d",&a,&b); sum=a*5+82/(b-6); printf("Th

2、e sum is %dn",sum); 其中:int关键词sum标识符6、5、3常量Enter two numbers字符串" "字串定界符+、-、*、/、( )运算符( )分隔符 C的关键字: auto break case char const continue default do double else enum extern float for goto If int long register return short signed sizeof static struct switch typedef union unsigned void vola

3、tile while 标识符:用户自行定义的字符串。用来标识常量、变量、函数、标号等。标识符命名规则:由字母或下划线开头,后跟零个或多个字母、下划线和数字的符号序列。1.不能是C的关键字 2.第一个字符必须是字母或下划线3.中间不能有空格。4.长度一般不超过32个字符。5.区分大小写。MyAge,myage代表不同的标识符*所有符号必须先定义/说明而后使用 分隔符: ( ) * . : = ; #2.2 数据类型. 整型数据基本型: int短整型: short int或short长整型: long int或long 无符号整型: unsigned int 无符号短整型: unsigned sh

4、ort 无符号长整型: unsigned long整型的表示范围:数据类型位数数的范围intshortlongunsignedunsigned shortunsigned long161632161632-32768-32767-32768-32767-2147483648-21474836480-655350-655350-4294967295. 实型数据单精度:float双精度:double浮点型的表示范围:数据类型有效数字所占位数数的绝对值范围Float673210-381038Double15166410-30810308字符型:char 一般用8位来存放一个字符,存放的是该字符的AS

5、CII码值(即整数 )。可把字符型看作一种特殊的整型 2.3 常量和变量1常量指在程序运行过程中,其值不能被改变的量。 整型常量:由一个或多个数字组成,可以带正负号。其中以字母o开头的为八进制数,以0x或0X开头的为十六进制数,否则就是十进制数。 下列常量都是合法常量:32767 -314 0 o516 o17 0x1c0d 0x4600在整数后跟有l或L时,表示该整型常量是长整型的 49876L 0X4F8DAl 浮点常量:表示有十进制形式和指数形式两种下列常量都是合法的浮点常量: 3.14 -9.568 1.5E5(1.5×105) 2.9E-7注意:指数形式的浮点常量E或e前面

6、必须有数字,E后面必须为整数。因此,E8、6E7.8都不是合法的浮点常量。 字符型常量:用单引号括起来的单一字符如S、s,它们分别代表大小写字母s。一个字符常量的值就是该字符的ASCII码值,如2的值就是50特殊形式的字符型常量(C的转义字符控制格式)字符含 义ntvbrf,xhhddd换行横向跳格(Tab)竖向跳格退格回车换行但不回车反斜杠单引号1到2位十六进制数1到3位八进制数字符串常量:双引号括起来的零个、一个或多个字符序列,如,I am student。 编译程序自动地在每一个字符串末尾添 加串结束符 0, 上述字符在内存中如下: Iamstudent02. 变量其值可以改变,用标识符

7、来标识,在使用之前必须加以说明(定义其类型)。变量的特性:Ø 每个变量由标识符标识,变量按变量名存取。Ø 每个变量都有自己的类型。Ø 在任一时刻,一个变量只有唯一确定的值,当一个变量被重新赋值后,就用新值代替了内存单元中的旧值。Ø 变量中的值可通过变量名多次被引用。 Ø 类型说明语句: <类型标识符> <变量名> ,<变量名> ;例如:int i; /* i为整型变量*/short c,d,e; /*c,d,e为短整型*/unsigned long p,g; /* p,g为无符号长整型 */float x,y

8、; /* x,y为单精度型*/double z; /* z为双精度型*/char ch1,ch2; /* ch1,ch2为字符型*/ 2.4 运算符和表达式1. 算术运算符:+、-、*、/、%(取余)、+(自增)、-(自减) /、%的运算 6/4=1; /* 整型相除 */ 6/4.0=1.5; /* 实型相除 */ 6%4=2 ; /* 整除取余 */ 下面是由算术运算符构成的算术表达式: 2*3.14*r (5+6)/2.0-u*v+p%q+、-的运算 (使变量的值+1或-1;不能用于常量或表达式) +i, -i (i=i+1; i=i-1 先改变I值) i+, i- (i=i, i=i+

9、1; i=i, i=i-1 后改变I值) 应注意的问题设i=3; 那么:k=i+; 则:k=3,i=4若k=(i+)+(i+)+(i+) 则:k=9,i=6易误为:k=12,i=3,4,5,6若k=(+i)+(+i)+(+i) 则:k=18,i=6易误为:k=15,i=4,5,6若i+j 是(i+)+j还是i+(+j)? C规定:自左至右结合,即(i+)+j 若printf("%d,%d",i,i+); 则按自左至右结合,应输出3,3; 但多数 C系统在处理函数调用时是自右至左运算的,输出应为4,3 例:若是 i=3; 那么 j=+i; (j=4,i=4) 对具体 C系统

10、上机一试便知 那么 j=i+; (j=3,i=4)2. 关系运算符: >、>=、<、<=、=、 != 优先级低于算术运算符。 若关系成立,则表达式值为非零; 若不成立,则表达式值为零。 i>5 ch<=,z, i=count time!=p+q在C语言中用整型变量替代了逻辑量。3. 逻辑运算符:&& 、 | 、! a>b && c<d x=1 | !b !(sex=,M, && age<20) && 若左右两个操作数均为非零,则返回值 为非零,否则返回值为假。 | 若左右两个操

11、作数有一个为非零,则 返回值为非零,否则返回零。 ! 把非零操作数转换为零,而把零 操作数转换为非零。 C语言中,&& 和 | 是短路运算符号 。4. 赋值运算符:=Ø 赋值语句:为变量提供数据 <变量> <表达式> Ø 复合赋值运算符:在 = 之前加上某些特定运算符 +=, -=, *=, /=, %=, <<=, >>=, &=, =, |=如: i+=j+8 等价于 i=i+(j+8) x*=3 等价于 x=x*3 p%=2 等价于 p=p%2 5. 条件赋值表达式 :变量名<条件>?

12、<表达式1>:<表达式2>含义:若<条件>的值为非零,取值为<表达式1> , 否则取值为<表达式2> 。如: max=(a>b)?a:b /* 若a>b,maxa 否则maxb */ 6. 逗号运算符及逗号表达式 如: a=3*8,a+2, 先求a=3*8,得24,然后求解a+2,得26。 又如:x=3*5,x*4; /* x=3*5=15,x=x*4=60 表达式的值为60 */ (x=3*5,x*4),x+5;/*(x=3*5=15,x*4),x=x+5=20 表达式的值为20*/ 须注意:并非任何地方出现逗号都是逗号

13、运算符, 如:printf("%d,%d,%d",a,b,c); 逗号只作为分隔符,不作为运算符用; 而printf("%d,%d,%d",(a,b,c),b,c);中的 (a,b,c)中逗号便是逗号运算符7. 类型转换规则:类型自动转换:double float long unsigned int char ,short 表示必定的转换 表示运算对象不同类型时的转换当赋值表达式左边变量的数据类型级别高于右边表达式的级别时,仍按上述规则转换,否则,就要把右边高级别表达式的数据类型转换成左边低级别变量的数据类型。类型强制转换:(类型名)<表达式>

14、; 例如: k=(float) i i=(int)(k-j) 说明:如 i 是整型,则k 是float型,但i 仍保留为整型。2.5 变量初始化和赋值语句1. 变量初始化C允许在说明变量的同时对其进行赋值,成为变量初始化例如: int sum=0; /*sum为整型,初始值0*/ float pi=3.1416; char c=,w,;也可对被说明变量的一部分初始化,如: int i,sum=0,j;2. 赋值语句由赋值表达式加上一个分号组成,如: sum=a+b;而sum=a+b 则是一个赋值表达式。下列语句都是赋值语句: x=0.3; y=z=-1; y=y*(z+1);2.6 数据输出调

15、用标准io库函数时,须用预编译命令:#include 将标准输入输出函数"stdio.h" 包括在用户源程序首 即:#include "stdio.h"1. 格式输出函数 printf( ) 格式: printf("格式控制",输出表列);"格式控制".格式说明符,.普通字符输出表列变量或表达式输出项,","分隔 .格式说明符:"%<可选参数> <说明符>" .可选参数 ±m.nL/l参数功 能-mm.nL/l-左对齐,指定宽度m +右对齐,

16、>m时按实际宽度 指定小数/指数n位/n个字符左截子串 指定为long数据 . 说明符符号功 能do,uxcsfeg带符号十进制int数 无符号八.十进制int数无符号十六进制int数字符形式输出int/char数据输出字符串(串在双引号中)输出小数形式实数(小数6位)输出指数形式实数(指数5位)自选宽度最小的f/e格式,无尾0.普通字符:按照原样输出的字符【例2.2】整型数据的输出。 #include <stdio.h> main() int a=12; long b=2269978; printf("a=%d,a=%6d,a=%-6d,a=%6dn",

17、a,a,a); printf("b=%8ldn",b); printf("%d,%o,%x,%un",a,a,a,a); printf("n"); 输出结果为: a= 12,a= 12,a= 12 b= 2269978 12,14,c,12【例2.3】字符的输出。 #include <stdio.h> main() char c=A; int i=87; printf("%c,%dn",c,c); printf("%d,%cn",i,i); printf("%-5c,%5c

18、n",c,c); 输出结果为: A, 65 87,W A , A2. 字符输出函数putchar 格式:putchar(c); 功能:输出字符变量c的值 2.7 数据输入1. 格式输入函数scanf( )格式: scanf("格式控制",地址表列);"格式控制"%附加说明符<说明符>地址表列 &变量名,.附加说明符表参数功 能lhm*输入long int/double数据输入short数据指定输入数据的宽度输入不赋值给相应变量.说明符表 说明符功 能d,o,xcsfe输入十.八.十六进制整数据输入字符形式int/char数据

19、将串送串数组中,以空格为界输入小数形式实数输入指数形式实数.有关说明Ø 指定数据宽度,系统自动截取输入数据 例:scanf("%3d%3d",&a,&b);若输入:123456 系统自动将123a,456b Ø 输入数据不能指定精度 例:scanf("%7.2f",&a); 若输入:1234567 使12345.67a是非法的 Ø "地址表列"必须是变量地址,不能是变量名 例:scanf("%3d,%3d",&a,&b); 若:scanf(&qu

20、ot;%3d,%3d",a,b); 是非法的 Ø 出现非"说明符"字符,输入数据时必须原样照写 例:scanf("%3d,%3d",&a,&b); 输入:123,456 数据间","分隔 例:scanf("%3d:%3d",&a,&b); 输入:123:456 ":"分隔 Ø 空格和转义字符都是有效字符 例:scanf("%c%c%c",&a,&b,&c); 若输入:X Y Z 则:a=X,b= ,c=YØ 输入数值型数据时,遇空格、回车、Tab键、指定宽度、非法输入;数据输入结束 例:scanf("%d%c%f",&a,&b,&c);输入:12A56o.7 a=12, b=A, c=56【例2.4】输入语句实例。 #include <stdio.h> main() int i,j; float f1,f2; char c1,c2; short h; long l; scanf("%c%c",&c1

温馨提示

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

评论

0/150

提交评论