版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主要内容输入输出语句基本数据类型算术运算符关系运算符简单的判断语句第 2 章 C语言程序设计入门转义字符与转义序列理解预处理程序标识符的含义破坏性读入和非破坏性读入致命性错误与非致命性错误本章重要概念2.2 简单C程序及其特点/* Exercise 2.16 Solution */#include int main() int x; /* define first number */ int y; /* define second number */ printf( Enter two numbers: ); /* prompt user */ scanf( %d%d, &x, &y ); /
2、* read values from keyboard */ /* output results */ printf( The sum is %dn, x + y ); printf( The product is %dn, x * y ); printf( The difference is %dn, x - y ); return 0; /* indicate successful termination */ /* end main */每个C程序必须有一个名为main()主函数使用的变量必须定义后在引用C程序用printf()函数把信息输出到显示器上每个语句以“;”结束。问题1: 输入
3、一个整数,判断它是奇数还是偶数int main() int integer; printf(Input an integer:); scanf(%d,&integer); if(integer%2=0) /*判断是否为偶数*/ printf(%d is an even integern,integer); if(integer%2!=0) /*判断是否为奇数*/ printf(%d is an odd integern,integer); 转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进
4、制数代表的字符例 转义字符举例main() printf(101 x42 Cn); printf(How are you?n); printf(C Programn); printf(Turbo C);运行结果:(屏幕显示)A B C”How are you?”C ProgramTurbo C例 main() printf(“Yb=n”); 运行结果:屏幕显示:=打印机输出:格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说
5、明: 修饰符 ,用于指定输出格式普通字符或转义序列:原样输出格式字符例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);输出结果: 3 4 a=3, b=4d,ix,Xoucse,Efg%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身int a=567; printf ( “%d”,a);int a=255; printf(“%x”,a);int a=65; printf(“%o”,a);int a=567; printf
6、(“%u”,a);char a=65; printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789; printf(“%e”,a);float a=567.789; printf(“%f”,a);float a=567.789; printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.789%思考题(1)printf(“%4d,%4d”,a,b); 若a=123,b=12345 则输出为: 如果数据位数小于m,则左端补空格,若大于m,则按实际输出。(2)long a=1357
7、90; printf(“%ld”,a); 长整型数据应采用%ld格式输出,若采用%d格式则出错。(3)int a=-1; printf(“%d,%o”,a,a); 输出为: 对于八进制输出不会输出带符号的数据,长整型数据用%lo格式输出,也可以指定宽度。如:printf(“%lo,%8o”,a,a);(4)int a=-1; printf(“%x,%o,%d”,a,a,a); 输出结果为:(5) float x=12.345; printf(x=%7.2f,x=%-7.2fn,x,x); 输出结果为: 123, 12345-1,177777ffff, 177777, -1135790 x= 1
8、2.35,x=12.35其它输出语句:int fprintf( FILE *stream, const char *format , argument .); int puts( const char* string );int putchar(int ch); 问题2: 输入一个整数,判断它是奇数还是偶数,并把结果保存到D盘根目录下a1.txt中。int main() int integer; FILE *fp; /*定义一个文件指针*/ fp=fopen(“d:a1.txt”,”w”); printf(Input an integer:); scanf(%d,&integer); if(i
9、nteger%2=0) /*判断是否为偶数*/ fprintf(fp,%d is an even integern,integer); if(integer%2!=0) /*判断是否为奇数*/ fprintf(fp,%d is an odd integern,integer); 格式输入函数格式: scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例 scanf(“%d”,&a); 输入:10 则 a=10例 scanf(“
10、%x”,&a); 输入:11 则 a=17例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入 a=12,b=24,c=36 1、用户可以指定输入数据的域宽,系统将自动按此域宽截取所读入的数据,如:scanf(“%3d%3d”,&a,&b);输入123456 ,系统自动将123赋值给a,将456赋值给b.2、输入实型数据时,用户不能规定小数点后的位数。scanf(“%7.2f”,&a);是错误的.3、从终端输入数值数据时,遇下述情况系统将认为该项数据结束:遇到空格、回车符或制表符(TAB),故可用它们作为数值数据间的分隔符;遇到宽度结束,如“%4d”表示只取输入数据的前
11、4列。遇到非法输入,如:假设a为整型变量,ch为字符型变量,对于: scanf(“%d%c”,&a,&ch); 若输入246a, 则系统将认为:a=246,ch=a4、在使用%c格式符时,输入的数据之间不需要分隔符标志;空格、回车符都将作为有效字符读入。scanf(“%c%c%c”,&a,&b,&c);输入boy ,b赋值给a,赋值给b,o赋值给c8、如果格式控制字符串中除了格式说明之外,还包含其它字符,则输入数据时,在与之对应的位置上也必须输入与这些字符相同的字符。如:scanf(“Enter a number: %d”,&x);输入格式 Enter a number:90scanf(“%d
12、%d”,&a,&b); 输入格式 122 23或 122回车23或 122 TAB 23 scanf(“%d,%d”,&a,&b); 输入格式 122,23 scanf(“a=%d,b=%d”,&a,&b); 输入格式 a=123,b=239、格式说明%*表示跳过对应的输入数据项不予读入。如:scanf(“%2d %*2d %2d”,&a,&b); 若输入12 345 67 则12赋给a,67赋给b,而345没有赋给任何数据.10、在标准C中不使用%u格式符,对unsigned型数据以%d,%x,%o格式输入。问题3.设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符
13、op 操作数2计算表达式的值,指定的算术运算符为加(+)。运行结果如下:int main() int num1,num2; char ch; printf(Please input :a+bn); scanf(%d%c%d,&num1,&ch,&num2); if(ch=+) printf(%d+%d=%dn,num1,num2,num1+num2); return 0;该程序存在什么问题?为什么32767+1=-32767 基本数据类型 标识符:用于标识变量名、符号常量名、数组名、函数名、 类型名、文件名的有效字符序列。标识符的组成:由字母、数字和下划线组成。必须由字母或下划线中任一字符开头
14、。标准C 规定有效长度为前31个字符。例如,以下为合法的标识符:nameNAME_a1x1Sum_2 以下不是合法的标识符: 12a以数字开头 #we以#开头 num$1包含$字符 sum 1中间有空格 数据类型数据类型基本类型构造类型指针类型空类型整型字符型实型枚举型单精度双精度数组结构体共用体 常量和变量常量整型实型字符型字符串型符号常量10#-123、56(非0开头)8#- 05 、0123、037L 16#-0 x15、0 x123 10#-1.23、0.56、-2.34指数形式-1.23e+3、-2E5单引号括起来。如A双引号括起来。如“A”#define PI 3.14159注意:
15、e字母前必须有数字,且e后的指数必须为整型。 C语言中用双引号将一串字符括起来称为字符串常量。 如 “IBM”、 “011”、“We are studying C”等。 字符串常量可以看作是一个数组,这个数组的每个元素是一个字符。 编译程序在编译源程序时自动在每个字符串末尾放空字符0,作为字符串结束标记。 要点:请区别”A”与A的不同。 因为它们各自在内存中存放的长度不同。 “A” A字符串常量AA 0ASCII码为0的字符/* 例 1: 求圆的周长和面积*/#include #define PI 3.14159 /*宏定义*/int main(void ) /*主函数*/float c, s
16、, i;printf(输入圆的半径:);scanf(%f, &i);c=2.0*PI*i;s=PI*i*i;printf(圆的周长:%fn, c):printf(圆的面积:%fn, s); return 0;符号常量变量整型实型字符型short 2B int 2B long 4B unsignedfloat 4Bdouble 8Blong double 10Bchar 1Bunsigned char 1Bshort 2B int 2B long 4B 注意:VC+环境下为:4B注意:VC+环境下为:8B变量例:inta, b, c;/*说明a, b , c为整型变量*/char ch;/*说明
17、cc为字符变量*/double x, y; /*说明x ,y为双精度实型变量*/ C语言要求: 程序里使用的每个变量都必须“先定义,后使用” ; 不同类型的变量应分开定义; 在同一程序的同一部分(同一对大括号中),不允许对同一变量做重复定义,也就是说,不允许有同名的变量。变量定义的位置在函数体开始的位置(数据说明部分),或者在函数外。变量的初始化在定义变量同时可以对变量赋予初值。例如:int num1=3, num2=4; float f1, f2=3.5; 定义后赋初值。例如: int num1,num2; /*定义整型变量num1和num2 */ num1=3; num2=4; /*为nu
18、m1赋初值为3,num2赋初值为4*/正确理解变量数学中的变量:取值可变的量。计算机程序中的变量: 数学含义指取值可变的量; 内存空间,数据类型决定系统分配给变量的内存空间的大小,以及该内存空间中数据的二进制编码规则例如: int num; 变量num定义时的数据类型决定,系统分配给a变量2个字节的内存空间,存储的二进制编码为有符号补码;整型数据的溢出/*例2: 阅读以下程序,指出程序运行结果*/#include int main(void) short int a,b;a=32767;b=a+1;printf(“a=%d,b=%d”,a,b); return 0; 因为a+1的类型为shor
19、t int类型,其表示范围为-3276832767;而a+1在16位计算机中的结果表示成二进制为1000 0000 0000 0000,最高位表示符号位,该二进制码是补码形式,是-32768的补码。a=32767,b=-32768为什么b的取值不是32768? /*第一种改法*/#include int main(void)long int a,b;a=32767;b=a+1;printf(“a=%ld, b=%ldn”,a,b); return 0; 如何更改?注意printf中%d是用于输出 int类型数据的,应该改为%ld.整型数据的溢出/*第二种改法*/#include int mai
20、n(void) short int a; long b; a=32767; b=a+1L; printf(“a=%d,b=%ld”,a,b); return 0;各类整型变量能表示的数值范围:类型 位数 数值范围 int 16 -215215-1 (-3276832767) short int 16 同上 long int 32 -231231-1(-2,147,483,6482,147,483,647) unsigned int 16 0216 (065535) unsigned short 16 0216 (065535) unsigned long 32 0232 (04,294,967
21、,285)必须记住必须记住0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1int符号位32767215-1=327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0注意:此时相当于215,由于刚才加1 则原值应等于215 -1=32767符号位为1表示负数,0表示正数。32768=215注意:在计算机中,用补码表示一个负数。在第一位为1表示负数,则上例为:-1。1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-327681 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1
22、取反加 1符号位:1表示负数相当于215=32768A)B)取反加 1-32768相当于 1-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 unsigned int1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1没有符号位。 unsigned int为无符号整型,没有符号位! 其大小为1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1加 111 0 0 0 0 0
23、0 0 0 0 0 0 0 0 0 0 0 相当于216原大小为: 216-1=65535思考题:1. void main() unsigned int x=65535; printf(“x=%d”, x); 2. void main() int x=-2; printf(“x=%un”,x); x=-1x=655342.5 算术运算符(p23页)+ 、- 、+(正)、-(负) * 、 / 、 %(取余)+(加)、-(减)右结合区别:y=i+;与 y=+i;左结合20/6=3; 20%6=2;左结合使用要点: 1)两个整型数相除,其结果为整型; 如:10/3=3 -5/3=-1 (负数采用“向
24、零取整”) 2)%运算符的两个操作数必须是整型; 如:7%4=3 特别情况: 0%5=0;5%0=5; -7%4=-3;-7%-4=-3; 7%-4=3。 即: %运算的符号只取决于第一个运算数的符号。 算术运算符x=30 x=24x=11x=1x=0 x=1y=25.0000/*例3:C:算术运算符示例*/#include int main(void) short int x,a=3;float y;x=20+25/5*2; printf(“x=%dn”,x);x=25/2*2; printf(“x=%dn”,x);x=-a+4*5-6; printf(“x=%dn”,x);x=a+4%5-
25、6; printf(“x=%dn”,x);x=-3/4%-6/5; printf(“x=%dn”,x);x=(7+6)%5/2; printf(“x=%dn”,x);y=25.0/2.0*2.0; printf(“y=%.4fn”,y); return 0; 2.6 关系运算符和关系表达式 关系运算符 小于 大于 = 大于等于 = 等于 != 不等于优先级高 相同低 相同例如 ca+b相当于 c(a+b) ab!=c相当于 (ab)!=ca=bd相当于 a=(bd)关系表达式: 用关系运算符将两个表达式连接起来的式子,叫关系表达式。例如: ab,x+yz,(x+y,z)(c+d)等关系表达式的值: 真 、假. 1 表示 真 ,0 表示 假 if 语句if 的三种基本形式:1、if(表达式) 语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论