《C程序设计基础讲义2.ppt》由会员分享,可在线阅读,更多相关《C程序设计基础讲义2.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计语言程序设计语言C信息与计算科学教研室GCGSTAFF.SHU.EDU.CN第二章上机指导与解题分析 2.1 Turbo C 2.0集成开发环境的使用 进入进入集成开发环境集成开发环境 执行执行TC 2.0目录下目录下TC.EXE 程序的输入程序的输入 选择菜单File|New 运行程序运行程序 选择菜单Run|RunCtrl+F9 查看查看程序运行结果程序运行结果 选择菜单Run|User Screen 或按Alt+F5键 程序程序存盘存盘 选择菜单File|Save 或按F2键 程序的加载程序的加载 选择菜单File|Load或按F3键 2.1上机编程环境 输入编辑源程序 TEST
2、.C编译生成目标程序 TEST.OBJ连接生成可执行程序 TEST.EXE编辑 运行 编译连接 调试 单步 跟踪 断点2.2 Turbo C集成开发环境 程序编辑的块操作程序编辑的块操作 建立块:决定块首建立块:决定块首Ctrl+K,B 决定块尾决定块尾Ctrl+K,K 块复制块复制:Ctrl+K,C 块移动块移动:Ctrl+K,V 块删除块删除:Ctrl+K,Y 撤消块撤消块:Ctrl+K,H 临时进入临时进入DOS状态状态 进入:选择菜单File|Os shell 退出:键入命令EXIT 2.2 Turbo C集成开发环境文件保存文件保存 F2用户屏幕用户屏幕 ALT+F5语法出错及修正语
3、法出错及修正 程序有语法错误,编译时会出现编译出错框,按任意键后,出错信息显示在EDIT窗口下方 的Message窗口中。按F6键可使光标在EDIT和Message窗间切换 2.2 Turbo C集成开发环境Turbo C 2.0集成开发环境配置集成开发环境配置选择菜单Option|Directores出现对话框:选择菜单Option|Save保存新设置 Include directories:C:TCINCLUDE Library directores:C:TCLIB Output directory:E:Turbo C directory:C:TC Pickfile name:Curren
4、t Pickfile:2.2 Turbo C集成开发环境程序运行调试 简单调试简单调试:ECHO法法(加加PRINTF句句)程序的单步运行程序的单步运行菜单Run|Step Over或F8键(把函数作为语句)菜单Run|Trace into或F7键(跟踪进入函数内)程序运行到光标处程序运行到光标处光标移到指定行选Run|Go toCursor 或F4键 程序运行到断点处程序运行到断点处 设置断点设置断点:光标,Break/Watch|Toggle breakpoint或按Ctrl+F8键,出现红色光条 撤消所有断点撤消所有断点:Break/Watch|Clear breaks 2.2 Turb
5、o C集成开发环境 变量值的观察变量值的观察 单步运行时,可观察指定变量的值,指定的变量及值显示在Message窗口中 指定(增加)要观察的变量指定(增加)要观察的变量:Break/watch|Add watch或按Ctrl+F7健,删除所有观察变量删除所有观察变量:选择菜单Break/watch|Remove all watchs 删除某个观察变量删除某个观察变量:选中要删的变量后按Del或Break/watch|Delete watch 第三章 数据类型、运算符和表达式3.1 基本数据类型 char(1),int(2),unsigned(2),long(4)float(4),doubl(8
6、)3.2 常量 常量-程序运行过程中其值不能被改变的量。3.2.1 整型常量 3.2.2 实型常量 3.2.3 字符常量 3.2.4 字符串常量 3.2.5 符号常量3.2.1 字符常量1.字符常量是用一对单引号(作为定界符)括起来的 一个字符。A,a,5,?,+,!,$。字符不能是单引号 、双引号 、反斜杠。2.字符常量具有数值,即其 ASCII 代码值。C=A;与 C=65;等价。3.转义字符 一对单引号括起来,内部是 反斜线开头,后跟一个字符,如n。或 反斜线开头,后跟一个一到三位八进制数,或 后跟一个一到二位x开头的十六 进制数。(表 2.1)3.2.2 字符串常量1.字符串常量一对双
7、引号括起来的字符系列。例:hello!,program,a,123.452.存储形式 字符串的每个字符占一个字节,在其尾部自动 追加一个字符0。h e l l o !0h e l l o !0 104 101 108 108 111 33 03.2.3 整型常量整型常量即整常数1.整数 取值范围:一般占一个机器字,如字长两字节,则为 -32768 +32767 表示形式:十进制整数 以非0开头的整数 八进制整数 以0开头的整数 十六进制整数 以0 x或0X开头的整数 例:-123、456、0123、-0 x12300007FFF0001FFFF-1整数 int(2)长整数long(4)2.长整
8、数 取值范围:占四字节 2147483648 +2147483647 表示形式:在整数后面加字母L或l 例:456l、-0456l、0 x456l3.2.4 实型常量实型常量又称浮点数常量,只使用十进只使用十进制制,有两种表示形式:3.2.4 实型常量 十进制形式由正负号、整数部分、小数点、小数部分组成 例:0.0、12.34、0.123、.123、-123.0、-123.指数形式 由正负号、整数部分、小数点、小数部分、E(e)后带或不带正负号的整数组成合法:1e-5、-3.14157E+7、-28e-005、123.45E0 非法:E8、3E-5.6、.e2、4e、e单精度float 双精度
9、double 长双精度longdouble3.2.5 符号常量符号常量即用一个特定的符号来代表一个常量 定义:#define 符号常量符号常量 常量常量(字符串)例:#define R 5.179 先定义,后使用;符号常量一般用大写字母 例1:#define PRICE 35#define NUM 10#define SUM PRICE+NUM main()printf(total=%dn,SUM*2);结果:total=553.3 变量 变量:程序运行过程中其值可以改变的量。变量名和变量值:变量名(标识符)a 变量值 98变量存储单元地址100H 变量分为两类 普通变量:存放各种普通的数据
10、指针变量:存放地址3.3 变量3.2.1 整型变量 int 3.2.2 实型变量 float 3.2.3 字符变量 char3.2.4 指针变量 int*p float*p 标识符标识符 用来标识变量名、符号常量名、函数名、数组名、文件名的有效字符序列 标识符必须由字母或下划线开头,后跟字母或下 划线或数字,字母区分大小写 C 语言认标识符的前8位 变量须“先定义,后使用”,一般用小写字母 3.3.1 普通变量定义的一般形式:数据类型数据类型 变量名;变量名;例:int a;int a,b;3.3.2 定义普通变量时可以对它初始化 例:int a=3,b=2;1 整型变量数据类型所占位数数 值
11、 范 围int16-3276832767 (-215 215-1)short int16-3276832767 (-215 215-1)long int32-21474836482147483647(-231 231-1)unsigned int160 65535 (0 216-1)unsigned short160 65535 (0 216-1)unsigned long320 4294967295 (0 232-1)2 实型变量数据类型所占位数数值范围有效数字float3210-37 103867double6410-307 103081516long double12810-4931 1
12、049321819例2:main()float x,y;x=111111.111;y=222222.222;printf(%fn,x+y);运行结果为 333333.3281253 字符变量 说明字符变量使用 char 标识符 一个字符变量在内存中占一个字节 将一个字符常量赋值给一个字符变量,实际上 是把该字符的 ASCII 代码放到字符变量对应的 内存单元中去 字符数据与整型数据的存储形式相类似,可以 相互赋值或混合运算,一个字符数据既可以以 字符形式输出,也可以整数形式输出 例3:main()char c1,c2;c1=a;c2=b;printf(%c%cn,c1,c2);printf(%
13、d%dn,c1,c2);例4:main()int c1;char c2;c1=a;c2=98;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);运行结果:a b 97 984.关键字(保留字)C保留字(关键字)不允许作标识符 有四类,共32个 数据类型:char,int,unsigned,long,float,double,short 等14个。存储类别:static,auto 等5个。流程控制:if,else,do,for,while 等12个。运算符:sizeof.3.4 3.4 运算符与表达式运算符与表达式3.4.1 算术运算符及其表达式3.4.2 赋值运算
14、符及其表达式3.4.3 关系运算符及其表达式3.4.4 逻辑运算符及其表达式3.4.5 条件运算符及其表达式3.4.6 逗号运算符及其表达式3.4.7 和地址有关的运算符3.4.8 sizeof运算符及其表达式3.4.9 数据类型转换3.4.10 运算符优先级结合律运算符运算符,表达式表达式,句子句子 用运算符运算符和括号括号将运算对象运算对象(包括常量、变量和 函数等)连接起来符合C语言规则式子叫表表 达式达式。C 语言规定每个语句语句的最后必须有一个分号。i+a=3 i+;a=3;表达式可以语句中,语句不可以在表达式中。a=(b=4)+(c=6);a=(b=4;)+(c=6);错!表达式算
15、术,关系,逻辑,赋值,条件,逗号int x=1+2/3;0 xb)?c:d;x=1,y=2;3.4.1 3.4.1 算术运算符算术运算符 加、减、乘、除和取余运算符加、减、乘、除和取余运算符:+、-、*、/、%除号/-当两个整型数相除时,结果为整数(商的整数 部分)1/4=0.25?1/4=01.0/4=0.25 -当被除数和除数只要有一个是实型数时,结果 为实数的商。取余号%123%10,123/10%10,123/100%10 只能对整型数运算。2.自增、自减运算符自增、自减运算符:+、-用法 -前置运算前置运算:+或-用在变量之前,先将变量的 值增1或减1,再将该变量的新值用于表达式中
16、-后置运算后置运算:+或-用在变量之后,先将变量的 值用于表达式中,再将该变量的值增1或减1 例:i=5+j-;i=5+-j;i+j,i+j=i+(+j)只能用于变量,不能用于常量和表达式 合法:i+;-j;i=(j+)*5;非法:6-;i=(j*5)+;例3:main()int a=5,c;c=+a;/*a先增1,再运算*/c=c+a+;/*a先运算,再增1*/printf(a=%d tc=%dn,a,c);结果:a=7 c=123.取负运算符取负运算符:-3.4.23.4.2 赋值运算符1.基本赋值运算符:=a=3 a=a+1 a=b=c=12.复合赋值运算符:+=、-=、*=、/=、%=
17、、|=、=、=、=先运算,再赋值。a+=5 等价于 a=a+5 x%=8 等价于 x=x%8 n&=m n=n&m x*=y+7 x=x*(y+7)x =n+1 x=x =3.4.3 关系运算符A B A&B A|B !A !B1 1 1 1 0 01 0 0 1 0 10 1 0 1 1 0 0 0 0 0 1 1 0&x=0,1|-x=1&与|或!非x=1,0&x+=0,x=?特别注意:单目 双目,&|例5:int x=1,y=2,z=3;if(!x=0|y=0&z)printf(“Tn”);if(!x!=0&y=0&z)printf(“Fn”)3.4.4 逻辑运算符3.4.5 条件运算符
18、?:int x=3;printf(“%d”,x?1:2);1条件运算符优先于赋值运算符,比关系运算符和算术运算符的优先级低,如:min=(ab)?a:b2条件运算符的结合方向为“自右至左”。ab?a:bb?2.4:5(a、b为整型)若ab,表达式=2.4;若a=a&ch=z)?(ch-32):ch;printf(%cn,ch);3.4.6 逗号运算符,printf(“%d”,(x=1,x=2,x=3);例:(1)x=(3+14),40,y=10,y+20);(2)x=10+5,10+15 (3)x=(10+5,10+15)3.4.7&*运算符和地址有关的运算符:取址运算符&:取出内存单元的地址
19、 例:p=&i;i 的地址赋给指针p,即指针 p 指向了变量 i。取内容运算符*:取出指针所指向的变量的内容 例:y=*p;指针 p 指向的变量值赋给变量 y。*p=x;变量x的值赋给指针指向的变量例9 指针的概念main()int x,*p;p=&x;x=20;printf(x:%d n,x);printf(*p:%d n,*p);printf(&x:%x n,&x);printf(p:%x n,p);printf(&p:%x n,&p);运行结果:x:20*p:20&x:ffe0 p:ffe0&p:ffe2例10 分析下列程序的运行结果main()int a=10,b=8,c,d,*p1,
20、*p2;p1=&a;p2=&b;c=*p1+*p2;d=*p1-*p2;printf(a+b=%d n,c);printf(a-b=%d n,d);结果:a+b=18 a-b=23.4.8 sizeof运算符sizeof()1用于数据类型用于数据类型使用形式:使用形式:sizeof(type)数据类型必须用括号括住。如数据类型必须用括号括住。如sizeof(int)。)。2用于变量用于变量 使用形式:使用形式:sizeof(var_name)或或sizeof var_name 例例:int x=1;printf(“%d”,sizeof(x);printf(“%d”,sizeof(float);
21、3.4.9 数据类型的转换 不同数据类型的常量、变量混合运算时,要先转换成同一类型后进行运算。转换方法有两种:1.自动转换 表达式运算时的转换规则:long double 高 double float unsigned long int long int unsigned int int char,short int 低例11:10+a+I *f -d /e int char float float double long int int float float double double 赋值号两边的数据类型不同时的转换规则:赋值号右边的类型转换成左边的类型。当右边的 数据类型比左边长时,右
22、边的数据被截取所需的 长度2.强制转换 形式:(类型名类型名)操作数操作数 其中操作数操作数可以是常量、变量或表达式。例:(double)a (float)(x+y)(int)4.5/3例12:main()char c;int i;i=11361;/*0 x2c61*/c=i;/*0010110001100001*/printf(%c%d%x,c,c,c);运行结果:a 97 613.4.10优先级和结合性运算符的优先级和结合性 优先级优先级:操作数两边有两个运算符,首先参加优 先级高的运算符一侧的运算。单目算术关系逻辑条件赋值逗号(三目)结合性结合性:操作数两侧的运算符优先级相同时,C 规定
23、了各种运算符的结合方向,即“自左至右”或“自右至左”。例 y=2+3-4*5+6 5 -20 -15 +6 -93.5 数据输入输出 C语言本身不具备执行输入输出的语句,输入输出功能是通过调用函数实现的。3.5.1 格式化输入输出函数3.5.2 字符输入输出函数 3.5.1 格式化输入输出函数1.输出函数 printf()功能:向显示器输出信息 使用形式:printf(输出格式输出格式,输出表列);输出格式输出格式可由三部分组成:格式说明格式说明、按原样输出的字符按原样输出的字符、转义字符转义字符 输出表列是需要输出的一些数据,可以是表达式 例:int a=123;printf(a=%dn,a
24、);有多个输出数据,则:-输出表列中各输出间用逗号分隔 -格式说明与输出数据的个数相同且一一对应 如:int i=-5;float j=98;printf(i=%d,j=%-10.2f n,i,j);输出为:i=-5,j=98.00输出格式说明1.输出格式说明由%后跟一个格式字符格式字符组成:%d 以十进制整数的实际长度输出%f 以十进制实数形式输出,小数部分6位%c 输出单一字符%s 输出字符串%输出一个百分号%x 以十六进制无符号形式输出整数%o 以八进制无符号形式输出整数%u 以十进制无符号形式输出整数%e 以指数形式输出实数%g 选用%f和%e中输出宽度较短的一种格式2.输出格式选择项
25、 +结果右对齐 -结果左对齐 0 用于输出数值,不用位置填0 (缺省填空格)m 指定输出宽度(列数).n 对实数,表示输出n位小数 对字符串,表示从左端截取的字符个数 l用于输出长整型 L 用于输出长双精度型 例13:main()int a=345,b=-1;printf(a=%d,%x,%o n,a,a,a);printf(b=%u n,b);结果为:a=345,159,531 b=65535例14:main()float x=345.678;printf(x=%f%e%gn,x,x,x);printf(%f%n,1.0/3);结果为:x=345.678009 3.45678e+02 345
26、.678 0.333333%例15:main()printf(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA);结果为:CHINA,CH,CHIN,CHI 2.输入函数 scanf()使用形式 功能:从键盘接受输入信息 使用形式:scanf(输入格式输入格式,地址表列地址表列);输入格式输入格式可由二部分组成:格式说明格式说明、按原样输出的字符按原样输出的字符 格式说明格式说明和输出函数中的输出格式相似。地址表列地址表列由需输入的变量的地址变量的地址,或字符串首字符串首 地址地址列表组成。如:int i;scanf(%d,&i);运行时输入:14
27、有多个数据输入,则:-地址表列中各输入间用逗号分隔 -格式说明与输入变量的个数相同且一一对应 -输入数据时,数据之间以一个或多个空格分隔 如:int i,j;scanf(%d%d,&i,&j);运行时输入:3 4 当双引号中有按原样输入的字符,输入时应按原 样键入。如:scanf(a=%d,b=%d,&a,&b);运行时输入:a=3,b=4 用%c格式输入字符,则空格和转义字符都作为 有效字符输入 如:scanf(%c%c%c,&c1,&c2,&c3);运行时应输入:abc 不应输入:a b c 输入实数时,不能规定精度。如:scanf(%7.2f,&a);不允许。输入格式说明1.输入格式说明
28、由%后跟一个格式字符格式字符组成:%d 用于输入十进制整数%x 用于输入十六进制整数%o 用于输入八进制整数%c 用于输入单个字符%s 用于输入字符串,以非空白字符开始,空 白字符结束%f 用于输入实数,可用小数或指数形式2.输入格式选择项 l 用于输入双精度型 L 用于输入长双精度型 m 指定输入数据所占宽度(列数)*指定输入项在读入后不赋给相应的变量例16:执行下列语句,输入 e main()输出结果是什么?char x,y,z,w;scanf(“%c”,&x);y=x+2;z=x-3;w=x-a+A;printf(x=%c y=%c z=%c w=%c,x,y,z,w);结果:x=e y
29、=g z=b w=E例17:执行下列语句后,输入:10,20 10 20 输出结果是什么?main()int a,b,c;scanf(“%d,%d”,&a,&b);c=+a+b-;printf(a=%d,b=%d,c=%d,a,b,c);结果:a=11,b=19,c=313.5.2 字符输入输出函数1.字符输出函数 putchar()常用形式:putchar(c)c可以是字符型和整型量,包括转义字符。功能:向终端(显示器)输出一个字符。如:#include stdio.h main()char a;a=b;putchar(65);putchar(n);putchar(a);结果:A b2.字符输入函数 getchar()常用形式:getchar()功能:从终端(或系统隐含指定的输入设备)输入一 个字符 例18:从键盘输入一个小写字母,转换为大写字 母输出。main()char c;printf(Enter character:);c=getchar();putchar(c-32);作业与上机实验 1.上机实验:P70 2.1 2.2 2.作业:P90 3.2 3.4 3.6 3.7 3.15 3.16 3.17 3.21 3.22 3.25 3.26 3.12 3.18 3.28
限制150内