《高级语言c编程基础.ppt》由会员分享,可在线阅读,更多相关《高级语言c编程基础.ppt(38页珍藏版)》请在三一办公上搜索。
1、高级语言程序设计C编程基础,上海理工大学 计算机基础教研室 2012年2月,本次课中需要解决的问题,数据类型常量与变量数据的输入与输出,例 main()int a,b,c;float ave;printf(“please input three numbers.”);scanf(“%d%d%d”,数据类型,计算机只能存放二进制数据。不同类型的数据如何区分和描述?由此产生数据类型。,在计算机中为了区别不同的数,使用了不同的表示方法。包括:整数的表示 实数的表示 字符数据的表示 数组的表示,数据在计算机中的存放,数据在计算机中采用二进制存放;一个字节8个二进制位,示意图如下:,数的表示范围:-27
2、27-1(-128127)显然,一个字节表示数的范围是有限的。要表示更大范围内的数,就要使用多个字节。,数据类型,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,整型,实型,字符型,有,无,有,常量与变量,常量:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define 符号常量 常量直接常量:整型常量 实型常量 字符常量 字符串常量,例 符号常量举例#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);,三种形式:十进制整数:
3、由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff,例 12 与 12L,例 30000 为int型 65536 为long int 型,整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是long int 型常量,整型常量(整常数),表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,实型常量的类型默认double型
4、在实型常量后加字母f或F,认为它是float 型,实型常量(实数或浮点数),定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,字符常量,如 A65,a97,048,n10,转义字符:反斜线后面跟一个字符或一个代码值表示,如 101-A 012-n 376-x61-a 60-0 483-(),例:A-101-x41-65,例 转义字符举例 main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);,例 main()printf(“Yb=n”);
5、,运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C,运行结果:屏幕显示:=打印机输出:,字符常量与字符串常量不同,定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志,例:char ch;ch=A;,字符串常量,常量与变量,变量:其值可以改变的量。变量是对程序中数据存储空间的抽象,变量与地址,程序中:int i;float k;,变量是对程序中数据存储空间的抽象,内存中每个字节有一个编号-地址,i,k,main()int a;a=10;a=a+15;printf(“%d”,a);,编译或函数调用时为其分
6、配内存单元,程序中使用变量名对内存操作,25,10,变量定义的一般格式:数据类型 变量1,变量2,变量n;,例:int a,b,c;float data;,决定分配字节数和数的表示范围,合法标识符,变量,注意:变量必须先说明其类型,否则程序无法为该变量分配存储空间。,变量(标识符)命名:,命名规则:(1)变量名只能由字母、数字或下划线组成;(2)变量名的第一个字符必须是字母或下划线;(3)变量名长度不超过32个字符(TC);(4)不要用保留字定义变量名(有32个保留字)。例:合法变量名:a、b1、_area、employee_name 不合法变量名:1-name、max one、float、*
7、account,例2 float a,b,c;c=a%b;/Illegal use of floating point in function main,例1 int student;stadent=19;/Undefined symbol stadent in function main,变量的使用:先定义,后使用,变量初始化:定义时赋初值,例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;Illegal,main()int a,b=2;float data;a=1;data=(a+b)*1.2;pri
8、ntf(“data=%fn”,data);,变量定义,变量定义位置:一般放在函数开头,占字节数随机器不同而不同,一般占一个机器字shortintlong可用sizeof(类型标识符)测量,实型变量 float:占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,例1:float a;a=111111.111;/*a=111111.1*/例2:double b;b=111111.111;/*b=111111.111*/,整型变量,字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算,例 a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=
9、!+G/*s=33+71;*/,没有字符串变量,用字符数组存放,#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);,运行结果:total=37.500000,ch1=d,例子,#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1
10、=%cn”,total,ch1);,格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,输入:10 则 a=10,例 scanf(“%x”,输入:11 则 a=17,格式输入函数,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”,输入 19991015 则1999yy,10 mm,15 dd,修饰符功能,l,修饰符,功 能,h,m,*,用于d,o,x前,指定输入为short型
11、整数,用于d,o,x前,指定输入为long型整数,用于e,f前,指定输入为double型实数,指定输入数据宽度,遇空格或不可转换字符则结束,抑制符,指定输入项读入后不赋给变量,例 scanf(“%d%o%x”,输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45 则12 h,30 m,45 s,输入分隔符的指定,一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 b,例 scanf(“a=%d,b=%d,c=%d”,输入
12、 a=12,b=24,c=36,用“%c”格式符时,空格和转义字符作为有效字符输入,如 scanf(“%c%c%c”,若输入abc 则ac1,c2,b c3,输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车 遇宽度结束 遇非法输入,说明:,如 scanf(“%f”,若输入123o.26 则 123 c,输入函数留下的“垃圾”:,例 int x;char ch;scanf(“%d”,执行:123输出:x=123,ch=10,例 int x;char ch;scanf(“%d”,执行:123输出:x=123,ch=10,解决方法:(1)用getchar()清除(2)用函数flushal
13、l()清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”,例 int x;char ch;scanf(“%d”,#include#include main()float a,b,c,s,area;scanf(%f,%f,%f,输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33,例 输入三角形边长,求面积,格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1),输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于
14、指定输 出格式普通字符或转义序列:原样输出格式字符:,格式输出函数,说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出,int a=567;printf(“%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(
15、“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,附加格式说明符(修饰符),.n,对实数,指定小数点后位数(四舍五入),修饰符,功 能,m,输出数据域宽,数据长度m,左补空格;否则按实际输出,-,指定在有符号数的正数前显示正号(+),+,输出数值时指定左面不使用的空位置自动填0,0,在八进制和十六进制数前显示前导0,0 x,#,在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型,l,对字符串,指定实际输出位数,输出数据在域内左对齐(缺省右对齐),课堂作业,分析程序运行结果:main()int a=5,b=7;float pi=3.1415926;char c=A;printf(“%d%dn”,a,b);printf(“%3d%3dn”,a,b);printf(“%fn”,pi);printf(“%8.2fn”,pi);printf(“%c,%d,%o,%xn”,c,c,c,c);,谢谢,