清华大学C语言课件-数据变量与输入输出_第1页
清华大学C语言课件-数据变量与输入输出_第2页
清华大学C语言课件-数据变量与输入输出_第3页
清华大学C语言课件-数据变量与输入输出_第4页
清华大学C语言课件-数据变量与输入输出_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

Lesson2数据、变量与输入输出#include<stdio.h>#definePI3.1415926doubleS(doubler){ return4*PI*r*r;}doubleV(doubler){return4.0/3.0*PI*r*r*r;}intmain(){ doubler;

scanf("%lf",&r);

printf(“表面积为:%lf,体积为:%lf\n",S(r),V(r));return0;}这些都是C语言的标识符标识符只能由字母、数字和下划线组成,且不能以数字开头。用来标识变量名、符号常量名、数组名、函数名、结构名、自定义类型名等。注意:关键字不能作为标识符。C语言区别标识符的大小写字母,大小写不同的标识符是不同的。标识符尽量取成有意义的名字,以便阅读程序方便。例:判断下列标识符号合法性sumSum

M.D.JohndayDate3daysstudent_name#33 charlotus_1_2_3a>b_above$123M.D.John3days#33char$123a>b

.字符非法数字3不可作首字符

#字符非法

char是关键字

>字符非法$不可作首字符在VC中(标识符)的有效长度可达到255我们先来看看C程序中的一些基本元素是怎样使用的:#include<stdio.h>#definePI3.1415926doubleS(doubler){ return4*PI*r*r;}doubleV(doubler){return4.0/3.0*PI*r*r*r;}voidmain(){ doubler;

scanf("%lf",&r);

printf(“表面积为:%lf,体积为:%lf\n",S(r),V(r));}这些都是C语言的关键字

C语言的关键字共有32个,属于C编译器的控制命令;根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。32个C语言关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile程序设计语言的基本规则

常数变量运算符表达式函数什么是语言规则?为什么要有这些规则?

把自然语言描述问题的方式转换为C语言的形式表达给计算机规则表达式常数变量函数运算符31常数3、5和3.6的存放空间是否相同?变量a如何表示?如何存放?计算机如何知道3.6和a之间的关系?

和sinx如何输入?如何存放?计算机如何识别“=”?运算结果放在哪里?计算机完成上述计算,首先要解决数据的输入和存放问题问题数据属于不同类别AfricaThequickbrownfoxTRUE数据非数值数值整型非整型9002.129999/12/20032.175123JackieChanchar数据类型非数值数值整型intshortintlongintdoublefloat非整型3C的基本数据类型2数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作基本数据类型说明:数据类型所占字节数随机器环境不同而不同,上表以VC++6.0为例1、常量在程序运行中,其值保持不变的量称为常量整型100,125,-100,0,0101,0x41,实型3.14,0.125,-3.789,-2.67e-12字符型‘a’,‘b’,‘2‘,‘\101‘,‘\x41‘字符串“a”,“ab”,”1232”常量的表示方法:C语言表示数据的基本形式符号常量:用标识符代表常量定义格式:#define

符号常量常量例符号常量举例#definePRICE30main(){

int

num,total;num=10;total=num*PRICE;

printf("total=%d",total);}运行结果:total=300符号常数定义规则#defineMAXSIZE20#defineWELCOME"Welcometoyou!"#definePI3.1433整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff问题:0123=(

)100x123=()100xff=()10问题:0123=(83

)100x123=(291)100xff=(255)10实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5

实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型指数实型数据在输出时,按规格化形式输出字符常量定义:用单引号括起来的单个普通字符或转义字符.字符常量的值:该字符的ASCII码值存储形式:1字节如‘a’‘A’‘?’‘\n’‘\101’'''5''p''$'

有效的字符型值"2"

'2'

正确'2'+'2'=4X值符号值符号值符号0空字符44,91[32空格45-92\33!46.93]34"47/94^35#48~570~9

95-36$58:96`37%59;97~122a~z38&60<123{39'61=124|40(62>125}41)63?126~42*64@127DEL(Delete键)43+65~90A~Z

如‘A’——65,‘a’——97,

‘0’——48,‘\n’——10如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------65转义字符:反斜线后面跟一个字符或一个代码值表示例转义字符举例main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}运行结果:屏幕显示:=打印机输出:¥C允许以’\’开头的特殊字符12字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中的存储形式aa\0例‘a’“a”例空串“”\0例:charch;

ch=“A”;例:charch;

ch=‘A’;

int

x=23;23FF024BytesRAM例:

inta=2,b,c=4;floatdata=3.67;charch=‘A’;

intx=1,y=1,z=1;

intx=y=z=1;例1

intstudent;

stadent=19;//Undefinedsymbol‘statent’infunctionmain

例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain

变量定义位置:一般放在函数体中或复合语句中所有执行语句前面。变量初始化与赋值:定义时给以数据叫初始化,语句中给值,叫赋值,根据使用情况,初始化时,可以不给值。给变量赋值,除了给一个直接的值以外,还可以通过计算获得。如:inta=5,b=8,c;floatx1=6.27,x2,x3=5.94;

charch='a',kk='A';2.变量与内存概念:其值可以改变的量每一个变量有名字,类型,大小和值变量名对应于它在内存中的位置当一个新的值被放进变量时,它将替换掉以前的值从内存中读取变量的值不会改变它变量定义的一般格式:x=90;90printf(“%d”,x);合法标识符决定分配字节数和数的表示范围变量初始化:定义时赋初值变量的使用:先定义,后使用整型变量占字节数随机器不同而不同,一般占一个机器字short≤int≤long可用sizeof(类型标识符)测量实型变量float:占4字节,提供7位有效数字double:占8字节,提供15~16位有效数字字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/没有字符串变量,用字符数组存放例

main()

{intx,y,z,w;

unsignedintk;

x=10;y=-20;k=30;

z=x+k;w=y+k;

printf(″x+k=%d,y+k=%d\n″,z,w);}程序上机运行结果为:

x+k=40,y+k=10例main()

{charc1,c2;

c1=′a′;c2=′b′;

c1=c1-32;c2=c2-32;

printf(″%c%c″,c1,c2);}

运行结果为:

AB有符号负整数

-10符号位11111111111101101111111111110110RAM11111111111111111111111111111111低地址(首地址)低地址(首地址)符号位00000000000010100000000000001010RAM00000000000000000000000000000000低地址(首地址)低地址(首地址)有符号正整数

1011111111111111111111111111111111RAM11111111111111111111111111111111无符号整数的所有二进制位都存放数值。无符号整数

4294967295u0111111111111111111111111111111110000000000000000000000000000000int型最大:+2147483647最小:-214748364801111111111111111000000000000000short型最大:+32767最小:-3276811111111111111110000000000000000最大65535最小:0unsignedshort型1111111111111111111111111111111100000000000000000000000000000000unsignedint型最大:4294967275最小:00111111111111111111111111111111110000000000000000000000000000000long型最大:+2147483647最小:-21474836481111111111111111111111111111111100000000000000000000000000000000unsignedlong型最大:4294967275最小:0一个字节0111111111111111111111111111111110000000000000000000000000000000a=a+1;(-2147483648)整型有符号数的溢出inta=1;00000000000000000000000000000001inta=2147483647;inta=-2147483648;1000000000000000000000000000000001111111111111111111111111111111a=a-1;(2147483647)inta=-1;11111111111111111111111111111111浮点数的类型和大小在微机中,不同类型的浮点型数据在内存中占的字节数如下表:类型名称类型说明符字节数有效数字数值范围单精度float46~710-37~1038双精度double815~1610-307~10308长双精度longdouble1018~1910-4931~104932浮点数的存储浮点型数据在内存中按指数形式存放。举例

3.141590(0.314159)100(1)10数符小数部分阶符阶码+0.314159×10+1由此可见,小数部分的宽度决定了有效数字(精度),阶码部分的宽度决定了数值范围。#include<stdio.h>intmain(){ floatr=100; printf("r=%d\n",r); return0;}定点整数定点小数字符数据的存储在内存中,是把一个字符的ASCII码以二进制形式存放的,占一个字节。例如:charc1,c2;c1=‘a’;c2=‘b’;01100001字符a的ASCII码(值)为97c101100010字符b的ASCII码(值)为98c2与整型数据的存储形式类似,因此两者之间的转换非常方便,可以把字符数据当作整型数据来用。例

#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;

printf(“total=%f,ch1=%c\n”,total,ch1);}运行结果:total=37.500000,ch1=d变量的作用域:局部变量在定义的函数内或复合语句内有效实型数据的舍入误差由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差例:

main()

{floata,b;

a=123456,789e5;

b=a+20;

printf("%f",b);}输入输出是以计算机主机为主体而言的。输出:从计算机向外部输出设备输出数据。输入:从外部通过输入设备向计算机输入数据。C语言中数据的输入、输出是由函数来实现的。字符输入函数:getchar字符输出函数:putchar格式输入函数:scanf格式输出函数:printf它们的原型都在stdio.h

中主机键盘磁盘光盘扫描仪……显示器打印机磁盘……3输入和输出5#include<stdio.h>程序中必须包含stdio.h

头文件例:字符输出#include<stdio.h>main(){chara;intb;a=‘B’;b=79;

putchar(a);putchar(‘\n’);

putchar(b);putchar(‘\n’);

putchar(‘Y’);}BOY3输入和输出5使用说明putchar(字符);可以是以下数据:字符型变量整型变量字符型常量转义字符例:字符输入#include<stdio.h>main(){charc;c=getchar();

putchar(c);}aaabca989123使用说明:只读取一个字符该字符可赋给字符变量、整型变量或作为表达式的一部分输入/输出函数

(printf/scanf)用于接受和显示数据或信息#include<stdio.h>voidmain(){

intnum;

printf("请输入一个数:");

scanf("%d",&num);

printf("\n%d

的平方为

%d\n",num,num*num);}转换字符串转义序列格式输入、输出格式输出printf

按格式控制字符串规定的格式,向指定的输出设备输出输出表列中的输出项。使用说明格式控制字符串由双引号括起来的字符串,用于指定输出格式输出表列需要输出的数据列表,彼此间用逗号分隔可以是任意合法的表达式23.5s78120fRAM格式控制字符串

printf(“n=%5d,f=%5.2f\n”,n,f)普通字符原样输出格式说明符(转换规则)%[修饰符]格式字符指定数据的输出格式printf的格式字符格式字符功能d,i以十进制有符号形式输出整数(正数不输出符号)o以八进制无符号形式输出整数(不输出前缀)x,X以十六进制无符号形式输出整数(不输出前缀)u以十进制无符号形式输出整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G选用%f和%e格式中输出宽度较短的一种,不输出无意义的零c以字符形式输出,输出一个字符s输出字符串printf的修饰符修饰符意义l用于长整型和双精度实型数据,可加在格式字符d、o、x、u、f前面。m(正整数)数据最小宽度。n(正整数)对于实数,表示输出n位小数;对于字符串,表示截取的字符个数。-输出的数字或字符在域内向左靠,右边填空格。#当整数以八进制或十六进制形式输出时,输出前缀。可加在格式字符o、x前面。printf的格式说明符小结格式字符形式d,i%d,%md,%-md,%ld,%mld,%-mld,%i,……o%o,%mo,%-mo,%lo,%mlo,%-mlo,%#o,……x,X%x,%mx,%-mx,%lx,%mlx,%-mlx,%#x,……u%u,%mu,%-mu,%lu,%mlu,%-mluf%f,%mf,%m.nf,%lf,……e,E%e,%me,%m.ne,……g,G%gc%cs%s,%ms,%m.ns,……例:格式输出#include<stdio.h>main(){inta=97,b=-1;floatf=123.4;

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

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

printf(“%f,%e,%gEND\n”,f,f,f);}例:格式输出main(){inta=1,b=2,c=3;

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

printf(“%d,%d,%d\n”,a,b,c,a+b+c);}1,2,3,01,2,3格式说明符和输出项在数量和类型上应该一一对应。例:格式输出main(){inti=3;

printf("%d,%d\n",i,i++);}3,3不同的编译系统对输出表列中的求值顺序不一定相同。格式输入scanf

按格式控制字符串规定的格式,从指定的输入设备输入数据,并存放到地址表列中的各地址项指定的变量中使用说明格式控制字符串由双引号括起来的字符串,用于指定输入格式地址表列由若干个变量的地址组成23.5s78RAM格式输入 scanf(“%d,%d”,&a,&b)取地址运算符:&&<变量>得到变量在内存中的地址。FF00FF02abscanf的格式字符格式字符功能d,i以十进制形式输入有符号整数o以八进制形式输入无符号整数x,X以十六进制形式输入无符号整数u以十进制形式输入无符号整数f以小数形式或指数形式输入实数e,E,g,G同f,它们之间可以互换c输入单个字符s输入字符串scanf的修饰符修饰符意义l用于输入长整型和双精度实型数据,可加在格式字符d、o、x、u、f、e前面。h用于输入短整型数据。m(正整数)域宽,指定输入数据所占的宽度。*表示本输入项读入后不赋给相应的变量,即跳过该输入值。scanf的格式说明符小结格式字符形式d,i%d,%md,%ld,%mld,%i,……o%o,%mo,%lo,%mlox,X%x,%mx,%lx,%mlxu%u,%mu,%lu,%mluf%f,%mf,%lf,%mlfe,E,g,G%e,%me,%le,%mle,%g,……c%cs%s,%ms格式输入输入数据时采用的分隔符应与格式控制中的分隔符一致。例1:scanf("%d%f%d",&a,&b,&c);格式符中无普通字符时,可用空格、Tab键、回车键作分隔符。如:123.45678↙或12<Tab>3.45<Tab>678↙例2:scanf("%d,%f,%d",&a,&b,&c);必须采用格式:12,3.45,678↙例3:scanf("a=%d,b=%d",&a,&b);必须采用格式:a=12,b=345↙格式输入无符号整数可用%d、%o、%x格式输入。输入格式符带有*:表示该数据不赋值。例:scanf("%d%*d%d",&a,&c);键入:1234567↙则a=12,c=567,而34未赋值。数据输入时不可规定精度,但可确定宽度。例1:scanf(“%3f%3c”,&a,&b);

合法。例2:scanf(”%3.2f%3c”,&a,&b);

非法。格式输入举例:main(){cha

温馨提示

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

最新文档

评论

0/150

提交评论