《C语言程序设计d》课件-第二讲 数据对象与计算_第1页
《C语言程序设计d》课件-第二讲 数据对象与计算_第2页
《C语言程序设计d》课件-第二讲 数据对象与计算_第3页
《C语言程序设计d》课件-第二讲 数据对象与计算_第4页
《C语言程序设计d》课件-第二讲 数据对象与计算_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

西安电子科技大学计算机学院1一个温度转换的问题已知华氏温度(用f表示)到摄氏温度(用c表示)的转换公式为:c=5/9×(f-32),写一个程序将输入的华氏温度转换为摄氏温度,输出结果保留两位小数1.已知(输入):华氏温度f2.计算过程:c=5/9×(f-32)3.结果(输出):输出摄氏温度c西安电子科技大学计算机学院2问题转换为程序需要解决的问题1.c和f在程序中用什么名字表示(标识符问题)?2.c和f在程序中用什么数据类型表示?3.c和f的值如何给定?(输入和赋值问题)4.数学表达式c=5/9×(f-32)在C程序中如何表示及计算(C语言表达式、运算符、优先级…)?5.如何输出c的值?(输出、精度控制)西安电子科技大学计算机学院3目标用C语言程序解决简单计算问题掌握数据对象的表示方法掌握C语言表达式的写法掌握C语言输入/输出方法西安电子科技大学计算机学院4主要内容数据对象表示2.1基本字符、标识符、关键字2.2数据、类型、变量计算过程2.3运算符、表达式与计算用户交互2.4结果输出与数据输入小结西安电子科技大学计算机学院52.1基本字符、标识符、关键字解决数据对象命名问题在C语言中可以使用哪些字符?在C语言中给对象命名要遵循哪些规则?是否符合命名规则的名字都可以使用?西安电子科技大学计算机学院6基本字符数字字符:0~9大小写拉丁字母:a~z,A~Z;其他一些可打印(可以显示)的字符,包括:

~!%&*()_-+={}[]:;"'<>,.?/|\特殊字符,如空格符、换行符、制表符等1.在注释中可以使用2.在双引号内可以使用中文字符能否使用?西安电子科技大学计算机学院7对象命名规则程序中一个程序对象的名字称为标识符,该名字必须满足以下规则由字母、数字和下划线(_)构成的一个连续序列,不能有空白字符(键盘上的空格键、TAB键)第一个字符必须是字母或下划线"_"(注意下划线"_"与横线"-"的区别)区别大小写:NAME和name是不同的标识符西安电子科技大学计算机学院8标识符示例标识符合法性abcdA_great_machineBeijingkeymap3set_f2048::ab4C_Programming合法合法合法合法合法不合法不合法不合法西安电子科技大学计算机学院9标识符命名惯例尽量使用有意义的单词第一个字符尽量不使用下划线标识符由多个单词构成时可以每个单词首字母大写标识符不宜太长,可以适当使用简写保持命名风格的一致性几种常见命名规则驼峰命名法(Camel)混合使用大小写字母来构成变量和函数的名字例如:MyData匈牙利命名法(Hungarian)在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等例如:iMyData帕斯卡(Pascal)命名法:与骆驼命名法类似只不过骆驼命名法是首字母大写,而帕斯卡命名法是首字母小写例如:myData西安电子科技大学计算机学院10西安电子科技大学计算机学院11关键字C语言合法标识符中的一个特殊的小集合作为关键字的标识符在程序里具有语言预先定义好的特殊意义,不能用于其他目的不能作为普通的名字(标识符)使用西安电子科技大学计算机学院12C语言的32个关键字auto break

case

charconst continue

default

dodouble else enum externfloat for goto ifint long register returnshort

signed

sizeof staticstruct

switch

typedef unionunsigned

void volatile while西安电子科技大学计算机学院13问题转换为程序需要解决的问题1.摄氏温度c和华氏温度f在程序中用什么名字表示(标识符问题)?可以就用c表示摄氏度,f表示华氏度问题转换为程序(版本0)下面的程序正确吗?西安电子科技大学计算机学院14intmain(){f=20;c=5/9*(f-32);return0;}如何才能让C语言编译器识别c和f?[Error]'f'undeclared[Error]'c'undeclared

西安电子科技大学计算机学院152.2数据、类型、变量解决数据对象的存储和表示问题计算机对不同的数据类型有不同的存储和表示方法计算机能够表示的数值范围总是有限的

5.0和5在数学上是相同的,但在计算机内部表示上是不同的2356.4359是一个有限小数,但在计算机上表示时可能不够准确西安电子科技大学计算机学院16数据与类型C语言的基本数据类型包括整数类型实数类型字符类型程序中的每一个数据都必定属于某一种类型(基本类型或自定义类型)每一种数据类型都有表示方式(编码)和表示范围数据类型确定了数据对象支持的运算西安电子科技大学计算机学院17整数类型和整数的表示三种整数类型长整数longint

可以简写为long普通整数int短整数shortint

可以简写为short三种整数类型表示范围long≥int≥short,具体范围取决于不同的实现longintshort字节数442表示范围-231~231-1-231~231-1-215~215-1西安电子科技大学计算机学院18整数类型和整数的表示三种无符号整数类型长整数unsigned

longint

可以简写为unsignedlong普通整数unsigned

int短整数unsignedshortint

可以简写为unsignedshort三种整数类型表示范围unsignedlong≥unsigned

int≥unsignedshortunsignedlongunsignedintunsignedshort字节数442表示范围0~232-10~232-10~216-1西安电子科技大学计算机学院19整数常数的书写形式(int.c)十进制形式例如:123456,123,100八进制形式以0开头例如:0123456,0123,0100十六进制形式以0x开头例如:0x123456,0x123,0x100西安电子科技大学计算机学院20整数常数的书写形式示例八进制形式十进制值012345642798012383010064十六进制形式十进制值0x12345611930460x1232910x10025621实数类型和实数表示三种实数类型单精度浮点数:float双精度浮点数:double长双精度浮点数:longdouble三种实数类型的表示范围(IEEE标准)字节数指数位数尾数位数表示范围float4823-3.4×10−38~3.4×1038double81152-1.7×10−308~3.4×10308longdouble1615112-1.2×10−4932~3.4×104932浮点数表示方法任意二进制浮点数公式:N=±M×2±E其中,M为尾数(纯小数部分),整数E为指数,M与E都带符号。二进制浮点数特征:尾数的位数决定数的精度;指数的位数决定数的范围。西安电子科技大学计算机学院22指数符号指数E尾数符号尾数M

(定点整数)

(定点小数)西安电子科技大学计算机学院23实数常数的书写形式小数形式例如:12000000.0 0.00001指数形式例如:1.2E7 1E-5注意:以上形式表示的实数均被当做double类型存储,如果希望以float类型存储需要在后面加上F或f例如:12000000.0f,0.00001F,1.2E7F,1E-5FTips:在写程序时都使用double类型西安电子科技大学计算机学院24字符类型和字符的表示字符数据主要用于输入输出和文字处理字符类型:char字符类型在计算机中用一个字节的整数存储unsignedchar:0~255char:-128~127每一个字符都有唯一一个对应的整数,该整数称为这个字符的ASCII码西安电子科技大学计算机学院25ASCII码在计算机中每一个拉丁文字字母用一个0~127的数字表示,这个数字称为该字母的ASCII码ASCII字符集:所有大小写英文字母、数字、各种标点符号字符,还有一些控制字符,一共128个西安电子科技大学计算机学院27字符的书写形式1.用单引号括起的单个字符例如:'A','a','1'2.以字符对应的ASCII码表示//a,b都表示字符'A'chara,b;a='A';b=65;西安电子科技大学计算机学院28字符的书写形式3.用转义字符表示特殊字符反斜线(\)开头的转义字符用来表示ASCII字符集中的特殊字符注意:对未定义的转义字符直接输出反斜线后的字符转义字符实际输出的字符'\n'换行符号'\''单引号''\\'反斜线\'\"'双引号"西安电子科技大学计算机学院29字符串字符串不是C语言的一种数据类型用双引号括起的一系列字符:"CHINA""Beijing""University""Welcome\n"其本质是字符数组主要用于输入输出printf("HelloCProgram!\n");字符串中间不能换行"HelloCProgram""HelloCProgram"√×西安电子科技大学计算机学院30变量声明变量:用于存储程序的输入数据或计算结果的存储单元变量值在程序运行时可以改变变量声明:给存储单元定义一个名称及类型,便于程序中引用变量名必须是合法标识符变量必须有确定数据类型可以在一条语句中定义多个同类型变量可以在变量声明时赋值西安电子科技大学计算机学院31示例程序中的变量声明#include<stdio.h>intmain(){

doublef=50.0;

//声明存储华氏温度的变量并赋值

doublec;

//声明存储摄氏温度的变量

...}#include<stdio.h>intmain(){

doublef=50.0,c;

//一条语句中声明多个变量

...}32变量基本操作赋值操作——修改变量当前的值方法:使用赋值表达式(由操作符“=”构成的表达式)a=3.5b=5+3取值操作——获得变量现在的值方法:直接引用变量名称s=a+bprintf("s=%d\n",s);问题转换为程序(版本1)西安电子科技大学计算机学院33#include<stdio.h>intmain(){ doublef=20,c; return0;}数学运算c=5÷9×(f-32),如何转换成C语言表达式?C语言表达式如何计算?西安电子科技大学计算机学院342.3运算符、表达式与计算解决数学运算到程序的转换问题数学运算符在程序中如何表示?数学运算的规则在程序中如何实现?西安电子科技大学计算机学院35算术运算符运算符使用形式数学意义适用数据类型+一元或二元运算符一元表示正号,二元表示加法所有基本数据类型-一元或二元运算符一元表示负号,二元表示减法所有基本数据类型*二元运算符乘法运算所有基本数据类型/二元运算符除法运算所有基本数据类型%二元运算符模运算(求余数)整数类型西安电子科技大学计算机学院36算术运算符示例(operator.c)doublea=3.0,b=2.0;intc=4,d=2;表达式结果-a-3.0a+b5.0a-b1.0a*b6.0a/b1.5c/d2c%d0西安电子科技大学计算机学院37算术表达式由计算对象(例如数值的文字量、变量、函数调用等)、算术运算符及圆括号构成,基本形式与数学上的算术表达式类似-(28+32)+(16*7-4)25*(3-6)+234a*b+c/2a*sin(c*3.1416/180)西安电子科技大学计算机学院38算术表达式数学公式C语言表达式b2-4ac

a+b-cax-(b+c)b*b–4*a*ca+b-c(a+b)/(c+d)1/(1+x*x)a*x-(b+c)西安电子科技大学计算机学院39表达式求值给定了表达式中所有变量的值以后表达式的值如何计算?表达式的计算过程优先级—不同运算符哪个先算,哪个后算?结合性—相同优先级的运算符哪个先算,哪个后算?西安电子科技大学计算机学院40表达式求值优先级规则1.一元运算符优先级最高2.先乘除后加减3.括号中的表达式先计算运算符优先级一元+和-高*/%中二元+和-低当不确定运算符优先级时,用括号来指定运算顺序是避免错误的最好方法14-4表达式值10/5+4*6/2-(((2+6)*4)/(3+5))西安电子科技大学计算机学院41表达式求值结合性确定具有相同优先级的运算符相邻出现时表达式的计算顺序。C语言规定一元算术运算符自右向左结合;二元算术运算符自左向右结合,优先级相同时左边的运算符先计算。4*7/2-+-8(4*7)

/2(-(+(-8)))148问题转换为程序(版本2)下面的程序结果正确吗?西安电子科技大学计算机学院42intmain(){doublef=50;doublec;c=5/9*(f-32);return0;}c的计算结果是多少c=10?西安电子科技大学计算机学院43计算和类型以上计算涉及的问题类型对计算的限制混合类型计算和自动(隐式)类型转换强制(显式)类型转换13011.05/4+4*6/2=?1/3*3=?1*3/3=?1/3.0*3=?西安电子科技大学计算机学院44计算和类型类型对计算的限制1.两个相同类型数据使用二元运算符计算得到的结果类型相同。例如,两个整数运算结果仍然是整数1+24/21+121/3*35/4+4*6/20*3130西安电子科技大学计算机学院45计算和类型类型对计算的限制2.计算结果超出类型表示范围会导致"溢出"(overflow.c)#include<stdio.h>intmain(){ shorta=32765,b=5;

shortc=a+b;//c=? printf("c=%d\n",c); return0;}西安电子科技大学计算机学院46计算和类型混合类型计算和自动(隐式)类型转换两个不同类型数据使用二元运算符形成混合类型计算C语言里混合类型计算的方法是将混合类型计算中的某个运算对算转换为另一个运算对象的类型再计算转换原则是将表示范围小的类型转换为表示范围大的类型以避免丢失精度表示范围小 大类型shortintlongfloatdoublelongdouble西安电子科技大学计算机学院47计算和类型混合类型计算和自动(隐式)类型转换2+3*4.5=15.5234.53.0*13.52.0+15.5自动类型转换西安电子科技大学计算机学院48计算和类型强制(显式)类型转换任何类型均可相互转换,但转换可能丢失精度转换方式:(类型名)表达式强制类型转换是一元运算符,其优先级和其他一元运算符相同(高于二元运算符)(int)3.3*2.2

+4=(int)(3.3*2.2)

+4=类型转换不改变原来的值floata=3.3;intb=(int)a;//不改变a的值3*2.2+4=10.6(int)(7.26)+4=7+4=11西安电子科技大学计算机学院49计算和类型整数转浮点数不存在精度问题浮点数类型转换为整数时直接去掉小数部分(int)(3.3*2.2)+4=112.23.347*11+7.26强制类型转换西安电子科技大学计算机学院50问题转换为程序(版本3)#include<stdio.h>intmain(){doublef=50.0; //存储华氏温度的变量doublec; //存储摄氏温度的变量

c=5.0/9.0*(f-32);

//计算摄氏温度

return0;}西安电子科技大学计算机学院512.4结果输出与数据输入解决程序与用户交互的问题如何将计算结果展现给用户?如何让用户输入需要的数据?西安电子科技大学计算机学院52输出计算结果格式化输出函数printfC语言标准库函数调用形式:printf(格式字符串,其他参数);控制输出格式

输出类型输出精度对齐方式准备输出的值0个或多个所有基本类型变量或常量表达式或其他函数调用结果西安电子科技大学计算机学院53输出计算结果printf函数的格式字符串双引号括起来的字符串,其中包括:格式字符:用%引导格式字符,控制输出格式转义字符:按转义后的含义输出其他字符:直接输出格式字符串输出结果"firstprogram"firstprogram"first\nprogram"firstprogram西安电子科技大学计算机学院54输出计算结果用于输出整数的格式字符%d-以十进制输出带符号整数%o-以八进制输出无符号整数%x-以十六进制输出无符号整数inta=256,b=-180;格式字符串输出结果"a=%d,b=%d"a=256,b=-180"a=%x"a=100"a=%o"a=400西安电子科技大学计算机学院55输出计算结果用于输出浮点数的格式字符%f-以小数形式输出float/double型浮点数%e-以指数形式输出float/double型浮点数以上两种形式默认小数点后输出6位有效数字doublec=1234.567;floatd=2356.4359f;格式字符串输出结果"c=%f,d=%f"c=1234.567000,d=2356.435791"c=%e,d=%e"c=1.234567e+003,d=2.356436e+003西安电子科技大学计算机学院56输出计算结果输出浮点数的精度(小数位数)控制%.nf–n为整数,表示保留几位小数位数不足时末尾补零位数超出时四舍五入进位doublec=1234.567;floatd=2356.4359f;格式字符串输出结果"c=%.4f"c=1234.5670"d=%.3f"d=2356.436西安电子科技大学计算机学院57输出计算结果用于输出字符和字符串的格式字符%c-输出一个字符%s-输出一个字符串char*s="cprogramming";charch1='A',ch2='a';格式字符串输出结果"ch1=%c,ch2=%c"ch1=A,ch2=a"ch1=%d,ch2=%d"ch1=65,ch2=97"Ilove%s!"Ilovecprogramming!西安电子科技大学计算机学院58输出计算结果使用printf需要注意的问题1.格式字符串中没有%引导的格式控制字符时,不需要其他参数,直接输出字符串内容,转义字符按转以后实际意义输出格式字符串输出结果"firstprogram"firstprogram"first\nprogram"firstprogram西安电子科技大学计算机学院59输出计算结果使用printf需要注意的几个问题2.格式字符串中有%引导的格式控制字符时,其他参数的数量以及类型必须和格式控制字符一致。#include<stdio.h>intmain(){inta=123;doubleb=35.8;

printf(“a=%d,b=%d\n",a,b);printf("a=%d,b=%f\n",a);printf(“a=%d\n”,a,b);return0;}西安电子科技大学计算机学院60输出计算结果示例(printf_error.c)类型不一致时不会进行类型转换,而会将实际传入的值当作需要的类型来理解,因此可能出现非预期结果!!!!#include<stdio.h>intmain(){inta=123;doubleb=35.8;

printf(“a=%d,b=%d\n",a,b);//????…return0;}西安电子科技大学计算机学院61输出计算结果示例(printf_error.c)数量不一致时:1.如果缺少参数,会出现不可预知数据,取决于不同的编译器2.如果有多余参数,则被忽略#include<stdio.h>intmain(){inta=123;doubleb=35.8;

…printf("a=%d,b=%f\n",a);//????printf("a=%d\n",a,b);//????return0;}C997.19.6.1对以上问题的解释西安电子科技大学计算机学院62Thefprintffunctionwritesoutputtothestreampointedtobystream,undercontrolofthestringpointedtobyformatthatspecifieshowsubsequentargumentsareconvertedforoutput.

Ifthereareinsufficientargumentsfortheformat,thebehaviorisundefined.

Iftheformatisexhaustedwhileargumentsremain,theexcessargumentsareevaluated(asalways)butareotherwiseignored.Thefprintffunctionreturnswhentheendoftheformatstringisencountered通过编译选项来给出警告西安电子科技大学计算机学院63西安电子科技大学计算机学院64问题转换为程序(版本4)#include<stdio.h>intmain(){doublef=50.0; //存储华氏温度的变量doublec; //存储摄氏温度的变量

c=5.0/9.0*(f-32); //计算摄氏温度

printf("c=%.2f\n",c);

//输出摄氏温度return0;}西安电子科技大学计算机学院65如何得到用户输入温度转换程序存在的问题f是固定值,如果修改f的值需要重新编译能否让用户输入f的值再计算?#include<stdio.h>intmain(){

doublef=50.0;

//存储华氏温度的变量doublec; //存储摄氏温度的变量

c=5.0/9.0*(f-32); //计算摄氏温度printf("c=%.2f\n",c);//输出摄氏温度return0;}西安电子科技大学计算机学院66从键盘输入数据格式化输入函数scanfC语言标准库函数调用形式:scanf(格式字符串,其他参数);控制输入数据格式(类型,精度等)的字符串,以%引导接受输入值的变量地址(在普通变量前加取地址运算符&可得到变量地址)西安电子科技大学计算机学院67scanf函数的格式字符串格式控制字符接受输入值的变量类型要求的实际输入%dint十进制数%ldlong十进制数%ffloat十进制数,可以有小数点或指数%lfdouble十进制数,可以有小数点或指数%cchar一个字符西安电子科技大学计算机学院68scanf示例1intx;floaty;doublez;charc;scanf("%d%f%lf%c",&x,&y,&z,&c);printf("x=%

温馨提示

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

评论

0/150

提交评论