C语言程序设计项目教程课件_第1页
C语言程序设计项目教程课件_第2页
C语言程序设计项目教程课件_第3页
C语言程序设计项目教程课件_第4页
C语言程序设计项目教程课件_第5页
已阅读5页,还剩397页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计项目教程化学工业出版社化学工业出版社C语言程序设计项目教程化学工业出版社化学工业出版社0C语言概述C语言的产生和发展C语言和其他计算机语言的比较C语言的特点C语言程序设计举例C语言的结构特点VisualC++6.0开发工具练习题本章主要内容:引言C语言概述本章主要内容:引言C语言的原型ALGOL60语言。(也称为A语言)1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL语言。1970年,美国贝尔实验室的KenThompson将BCPL进行了修改,起名“B语言”。1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出了一种新的语言,这就是C语言。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。1989年,由美国国家标准化协会(AmericanNationalStandardsInstitute)在此基础上制定了一个C语言标准,通常称之为89ANSIC。1994年,ISO又重新修订了C语言的标准,正式成为现行的C语言标准。一、C语言的产生和发展C语言的原型ALGOL60语言。(也称为A语言)一、C语言二、几种程序设计语言的比较机器语言:用二进制代码表达的计算机语言,指令用0和1组成。优点:计算机可以直接识别,不需要进行任何翻译,执行速度最快。缺点:可读性差,不便于交流与合作;严重地依赖于具体的计算机,可移植性差,重用性差。

汇编语言:用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码优点:能够直接访问与硬件相关的存储器或I/O端口;能够最大限度地发挥硬件的功能。

缺点:操作码量大,难于记忆,不好维护。二、几种程序设计语言的比较机器语言:用二进制代码表达的计算机二、几种程序设计语言的比较高级语言:语法和结构类似于普通英文,远离 对硬件的直接操作优点:算法语言,易学、易掌握;远离机器语言,与具体的计算机硬件关系不大,可移植性好,重用率高。

※※※C语言就是一种独立于机器,编码相对短,可读性强的高级语言。二、几种程序设计语言的比较高级语言:语法和结构类似于普通英文机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:1011010000000000加法

用助记符号描述的指令系统如ADDA,B程序设计是数据被加工的过程语法类似于英语如c语言c=a+b图表:计算机语言的发展过程机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0三、C语言的特点语言简洁、灵活,便于学习和使用。运算符类型丰富。数据类型丰富,并有多种数据结构。具有结构化的控制语句,层次清晰,便于使用、维护以及调试。高效率的目标代码。能对硬件进行编程。同汇编语言相比,用C语言写的程序可移植性好程序设计较自由,语法限制不严格。三、C语言的特点语言简洁、灵活,便于学习和使用。四、C语言的格式及结构特点【例0.1】编写程序,在计算机屏幕上显示Hello,World!

#include<stdio.h>main(){printf(“Hello,World!”);}主函数开始主函数体开始标志C语句主函数体结束标志C语句结束程序代码:分析几个简单的C程序四、C语言的格式及结构特点【例0.1】编写程序,在计算机【例0.2】编写程序求解123+456的和。#include<stdio.h>main(){ inta,b,sum; a=123;b=456; sum=a+b; printf(“sumis%d:\n”,sum); }定义变量,所有的变量的定义都要放在程序的声明部分“=”赋值语句,念做123赋值给a预处理命令,为调用printf()函数注意:没有“;”四、C语言的格式及结构特点分析几个简单的C程序运行后输出:sumis579

【例0.2】编写程序求解123+456的和。定义变量,所有的#include<stdio.h>#definePI3.1415926 main() { floatr,a,c; r=2.5; /*输入圆的半径*/ a=PI*r*r; c=2*PI*r; printf(“r=%f,a=%f,c=%f\n”,r,a,c);} 运行后输出:r=2.500000,a=19.634954,c=15.707963四、C语言的格式及结构特点练一练:分析下列程序的功能#include<stdio.h>运行后输出:r=2【例0.4】从键盘输入两个数,求其中的最大值。被调用的子函数主函数四、C语言的格式及结构特点分析几个简单的C程序#include<stdio.h>intmax(intx,inty);main() { inta,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); }intmax(intx,inty){intz; if(x>y)z=x; elsez=y; return(z); }【例0.4】从键盘输入两个数,求其中的最大值。被调用的主五、C语言的结构特点一个C程序由一个或多个函数组成,其中有且只有一个用“main”命名的主函数,程序都是从main函数开始到main函数结束。每个函数由{}表示开始和结束在其内部包含的是函数体。每个C语句以“;”(分号)结尾。C程序的书写格式比较自由。函数体中可以有定义和执行部分,定义部分必须放在执行部分的前面可以在程序的任何位置用“/*……*/”对C程序中的任何部分作注释。五、C语言的结构特点一个C程序由一个或多个函数组成,其中有且练一练:选择题『0.1』一个C程序的执行是从________。(A)本程序的main函数开始,到main函数结束。(B)本程序的第一个函数开始,到本程序文件的最后一个函数结束。(C)本程序的main函数开始,到本程序文件的最后一个函数结束。(D)本程序的第一个函数开始,到本程序main函数结束。『0.2』以下叙述不正确的是_________。(A)一个C源程序可由一个或多个函数组成。(B)一个C源程序必须包含一个main函数。(C)程序的基本组成单位是函数。(D)在C程序中,注释说明只能位于一条语句的后面。『0.3』C语言规定:在一个源程序中,main函数的位置___。

(A)必须在最开始 (B)必须在所有函数的后面

(C)可以任意 (D)必须在最后练一练:选择题填空题『0.4』函数体是有符号____开始,符号____结束。函数体的前面是____部分,后面是____部分。『0.5』一个C源程序中至少应包括一个_______。『0.6』在一个C源程序中,注释部分两侧的分界符分别为_____和_________。练一练:填空题练一练:观察以下程序,指出C程序的错误所在。#include<stdio.h>;main();floatr,s;/*/*risradius*/*/r=5.0s=3.14*r*r;printf(“%f\n”,s)main()后面没有“;”预处理命令,没有;注释不能再套一层注释每条语句后都要有“;”“{}”括起整个函数体练一练:观察以下程序,指出C程序的错误所在。main()后面没有“;【实验0.1】一个简单的C语言程序编写用printf语句将3个字符串:goodmorning,floppydisk,harddisk显示在计算机屏幕上的程序。【实验0.2】按照要求输入程序,查看程序运行的结果 输入并运行下面程序,分析其运行结果。

#include<stdio.h> main() { printf("和是%f",16.8+27.5);

printf("差是%f\n",16.8-27.5); printf("积是%f",16.8*27.5); printf("商是%f\n",16.8/27.5); }上机实验【实验0.1】一个简单的C语言程序上机实验【实验0.3】输入并运行下面程序,分析其运行结果。 按照下面的程序,输入到VisualC++6.0集成开发环境中,并分析运行结果#include<stdio.h>main(){ printf("表达式1的值:%f\n",99.7*0.26+4.25); printf("表达式2的值:%d\n",1/2+1/3+1/4+1/5); printf("表达式3的值:%f\n",3.5/(6.1+2.0*(2.9-1.4*2.7)));}【实验0.3】输入并运行下面程序,分析其运行结果。系统总体设计C语言的产生和发展C语言和其他计算机语言的比较C语言的特点C语言程序设计举例C语言的结构特点VisualC++6.0开发工具练习题本章主要内容:第1章系统总体设计本章主要内容:第1章1、关于程序知识储备人机能够对话,是因为计算机可以执行程序……人机进行对话所使用的语言,就是程序设计语言……程序是为了使计算机完成指定的任务而编写的具有特定语法规则的指令序列。C语言就是一种完成程序设计的高级语言。用C语言编写的程序叫做“源程序”,文件为*.c1.1程序和程序设计1、关于程序知识储备人机能够对话,是因为计算机可以执行程序…C语言程序编辑与运行流程开始编辑源程序编译连接程序编译连接有错?运行程序运行有错?结束修改程序调试程序真假假真注意上述过程都在IDE(集成开发环境)

中进行!程序员只需要在IDE中完成*.c的源文件的设计和程序的调试*.obj*.c*.exeC语言程序编辑与运行流程开始编辑源程序编译连接程序编译连接有2程序设计用程序设计语言来描述问题的求解过程,以及对其中参与运算的数据进行合理地组织和安排,就叫做程序设计。分析问题确定算法画流程图编写程序运行调试总结过程基本步骤程序设计=数据结构+算法知识储备1.1程序和程序设计2程序设计用程序设计语言来描述问题的求解过程,以及对其有穷性确定性可行性有一个或者多个输入输出算法描述常见工具:流程图N-S图1.2算法的概念及描述方法算法是针对提出的可行方案确定解决问题、完成任务的每一个细节步骤。好的算法有穷性算法描述常见工具:流程图1.2算法的概念及描述方开始框一般处理框判断框结束框流程线1.2算法的概念及描述方法

流程图开始框一般处理框判断框结束框流程线1.2算法的概念及描输入rr>0真假S=π·r2C=2π·r输出S,C

N-S流程图1.2算法的概念及描述方法输入rr>0S=π·r2输出S,CN-S流程图1.21.3C程序设计中的三种基本结构顺序结构——自顶向下,无分支,无转移选择结构——有分支,需条件判断循环结构——有转移,某些语句可重复执行当型循环直到型循环1.3C程序设计中的三种基本结构顺序结构——自顶(a)流程图表示法(b)N-S图表示法1.3C程序设计中的三种基本结构顺序结构(a)流程图(b)N-S图1.3C程序设计中的三(a)流程图表示法(b)N-S图表示法1.3C程序设计中的三种基本结构选择结构(a)流程图(b)N-S图1.3C程序设计中的三当条件判断表达式为真

循环体语句判断表达式循环体语句真假循环体语句直到判断表达式为假循环体语句判断表达式假真当型循环直到型循环1.3C程序设计中的三种基本结构循环结构当条件判断表达式为真循环体语主函数子函数语句dmainabcgkfhjiel自上而下,逐步细化模块化结构程序设计主函数dmainabcgkfhjiel自上而下,逐步细化模块1.4函数的定义和使用主函数:main(),是必须存在且唯一的,是程序执行的入口。从使用角度分:标准库函数:以程序库的形式直接提供给用户使用。

stdio.h……gets()、printf() math.h……sin()、sqrt()用户自定义函数:由用户自己建立定义。函数的分类1.4函数的定义和使用主函数:main(),是1.4函数的定义和使用函数的分类从函数形式分:无参函数:调用函数时主函数不将数据传送给被调函数。用于完成特定功能的操作。如:c=getchar()……有参函数:调用函数时在主调函数和被调函数之间有参数传递。如:putchar(c)、puts(str)、……两种函数分类是独立的注意1.4函数的定义和使用函数的分类从函数形式分:两实例

演示库函数的使用题目:求函数

的值,x的值通过键盘输入。#include<stdio.h>#include<math.h>main(){floatx,y;scanf("%f",&x);y=sqrt(fabs(x))+1;printf("%f",y);}数学函数:fabs(x):求x的绝对值。sqrt(n):计算n的平方根。输入输出函数:scanf(),printf()。调用标准库函数前要求使用include命令包含库函数所对应的头文件。实例库函数的使用题目:求函数实例

演示无参函数的定义及调用#include<stdio.h>voidprint_star();voidprint_text();main(){print_star();print_text();print_star();}voidprint_star(){printf("********************************\n");}voidprint_text(){printf("GoodMorning!\n");}无参函数的定义形式:【类型标识符】函数名(){说明部分;

语句部分

}无参函数的调用:函数语句:print_star();函数说明:函数要求必须“先定义后使用”,若函数的定义位置在调用之后,要求在主函数的上面要进行函数的原型说明,即说明函数名、函数返回值类型、形参类型及个数等。实例无参函数的定义及调用#include<stdio.h>函数调用语句主调函数被调函数函数体实参形参a)程序流向b)参数传递函数调用过程示意函数调用语句主调函数被调函数函数体实参形参a)程序流向b实例

演示有参函数的定义及调用main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("max=%d\n",c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}形式参数实际参数有参函数定义形式:类型返回值的类型名函数名(类型名形式参数1,…,类型名形式参数n){说明部分;语句部分;}函数调用格式:作为表达式出现在任何允许表达式出现的地方,参与运算。实例有参函数的定义及调用main()形式参数实际参数有参函数调用及return语句执行图示:main(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“max=%d\n”,c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}主调函数被调函数实例

演示有参函数的定义及调用函数调用及return语句执行图示:main()intma函数调用的三种方式按照函数在程序中出现的位置来分;作为表达式出现在任何允许表达式出现的地方,参与运算。 如:c=max(a,b);作为一条独立的语句完成特定的操作。 如:

printf("max=%d\n",c);作为函数的参数被其他函数调用。 如:printf(“%s\n”,strcpy(str1,”Redrose”));知识归纳:函数调用的三种方式按照函数在程序中出现的位置来分;知识归纳:知识归纳:函数的返回值是通过return语句传递的。return语句的一般形式:

return表达式;

return(表达式);知识归纳:函数的返回值是通过return语句传递的。函数返回值的注意事项返回值类型要与函数类型一致函数类型缺省时,系统自动按整型处理。一个函数中可以有若干个return语句,流程执行到哪里,就从哪里返回主调函数。若函数体内没有return语句,则执行函数到末尾,然后返回主调函数。当不需要返回值的时候,可以用void定义函数为空类型,表示无返回值。知识归纳:函数返回值的注意事项返回值类型要与函数类型一致知识归纳:调用函数与被调函数的相对位置关系如使用库函数,一般应在文件开头用: #include<……>

……函数调用遵循“先定义后调用”的原则。一般被调函数放在调用函数之前定义。若被调函数在调用函数之后定义,就必须在调用函数中对被调函数加以如下说明: 类型名被调函数名(参数类型1,参数类型2,……参数类型n);知识归纳:调用函数与被调函数的相对位置关系如使用库函数,一般应在文件开#include<stdio.h>intisleap(intyear){intflag;f(year%400==0||(year%4==0&&year%100!=0))flag=1;elseflag=0;returnflag;

}main(){inty;printf("\npleaseinputayear:");scanf("%d",&y);if(isleap(y)==1)printf("\n%disleap.",y);elseprintf("\n%disnotleap.",y);}形式参数实际参数参数传递练一练:分析下面程序功能,结构,函数定义及调用过程。#include<stdio.h>形式参数实际参数参数传递练一练:分析下面程序功能,结构,函数定义及调用过程。voidpchar(){printf("************************\n");}doublearea(doubler){doubles;s=3.14*r*r;returns;}doublevolume(doublear,doublehgt){doublevol;vol=ar*hgt/3;returnvol;}#include<stdio.h>#include<conio.h>doublearea(double);doublevolume(double,double);voidpchar();main(){doubler,h,s,v;clrscr();pchar();printf("inputtheradiusandheight:");scanf("%lf%lf",&r,&h);printf("\n");s=area(r);v=volume(s,h);printf("radius=%8.4lf,height=%8.4lf\n",r,h);printf("area=%8.4lf,volume=%8.4lf\n",s,v);pchar();}练一练:分析下面程序功能,结构,函数定义及调用过程。void练一练:#include<stdio.h>main(){intr1,r2;

doubles1,s2,s;r1=2;r2=5;s1=myarea(r1)s2=myarea(r2)

s=s2-s1;printf("%lf\n",s);}intmyarea(doubler){doubles;s=3.14*r*r;}修改错误:练一练:#include<stdio.h>修改错误:练一练:#include<stdio.h>floatmyaverage(float,float);main(){floatx,y,z;x=12;y=25;z=myaverage(x,y);printf("%lf\n",z);}分析下面的程序,写出程序的预期结果。floatmyaverage(floata,floatb){floatc;c=(a+b)/2;returnc;}练一练:#include<stdio.h>分析下面的程序,练一练:#include<stdio.h>【①】/*myarea()函数的原型说明*/【②】/*myvolume()函数的原型说明*/main(){doubler,h;doubles,v;r=5;h=10;【④】/*调用myarea()函数求圆面积*/【⑤】/*调用myvolume()函数求体积*/printf("volume=%lf\n",v);}根据程序功能要求,将程序补充完整。练一练:#include<stdio.h>根据程序功能要求练一练:doublemyarea(doubler){doubles;s=3.14*r*r;

returns;}doublemyvolume(doublear,doublehgt){doublevol;vol=ar*hgt;returnvol;}练一练:doublemyarea(doubler)练一练:程序设计。设有一个平行四边形,其顶点坐标依次为A(2,2)、B(4,6)、C(8,6)、D(6,2),编写程序,计算两个对角线AC、BD的长度。已知两点坐标(x1,y1)和(x2,y2),求两点间距离的公式为:程序要求定义函数mylength()计算两坐标点之间的长度。

练一练:程序设计。设有一个平行四边形,其顶点坐标依次为A(2任务一:“学生成绩管理系统”整体结构设计任务一:“学生成绩管理系统”整体结构设计功能需求分析步骤1:创建文件存放一批学生的成绩。本系统要求每一位学生至少存有4门课程的成绩和总评成绩及平均成绩。实现“添加”、“修改”、“删除”指定成绩记录的操作。能对一个已存在文件进行“打开”、“保存”等操作。能实现“分类查询课程成绩”、“查询全部课程成绩”等查询功能。能对学生成绩进行排名。能统计学生的“奖学金获得情况”,“未获学位情况”,“某门课程的总分及平均分”,“某门课程的学生成绩等级情况”等。菜单界面要求美观,大方,易于操作。能够安全退出系统。整个系统只有一个出口,程序只能通过该出口结束。功能需求分析步骤1:创建文件存放一批学生的成绩。本系统要求每分析设计步骤2:分析设计步骤2:实验

预习【实验1.1】上机运行以下程序,熟悉函数的调用方法。main(){intx,y,z;

x=4;y=12;z=6;fun(x,y,z);printf(“%x=%d;y=%d;z=%d\n”,x,y,z);}fun(inti,intj,intk){intt;t=(i+j+k)/3;printf(“t=%d\n”,t);}main(){inti,j,x,y,n,g;i=4;j=5;g=x=6;y=7;n=8;f(n,6);printf(“g=%d;i=%d;j=%d\n”,g,i,j);

printf(“x=%d;y=%d\n”,x,y);

f(n,8);

}f(inti,intj){

intx,y,g;

g=8;x=7;y=2;

printf(“g=%d;i=%d;j=%d\n”,g,i,j);

printf(“x=%d;y=%d\n”,x,y);}实验【实验1.1】上机运行以下程序,熟悉函数的调用方法。ma实验

预习【实验1.2】上机运行以下程序,了解程序的执行过程。#include<stdio.h>voidmyswap(int,int);main(){intx,y;x=2;y=4;myswap(x,y);printf("x=%d,y=%d\n",x,y);}voidmyswap(inta,intb){intc;c=a;a=b;b=c;

printf("a=%d,b=%d\n",a,b);

}写出运行以上程序后的预期结果。观察实际输出结果与预期结果是否相符。将函数myswap()中的a和b改为x和y,再观察运行结果,有什么不同。用单步执行的方法,了解程序执行过程中数据的变化情况。实验【实验1.2】上机运行以下程序,了解程序的执行过程。#i系统数据结构设计及运算第2章知识储备系统数据结构设计及运算第2章知识储备引导:分析C程序组成2.1常量与变量一个C程序是由一个或多个函数组成,函数体由若干条C语句组成,那么,C语句又是由什么组成?主函数……函数nC语句1C语句2……C语句n常量

变量C程序标识符引导:分析C程序组成2.1常量与变量一个C程序是由一个或#include<stdio.h>#definePI

3.1415926

main() { floatr,s,c; r=5; /*输入圆的半径*/ s=PI*r*r; c=2*PI*r; printf(“r=%f,s=%f,c=%f\n”,r,s,c);}实例

演示常量与变量使用举例直接常量符号常量整型常量:11、25、-1;实型常量:0.2、3.1415,3.0;字符常量:‘A’,‘a’(大小写代表不同的值)字符串常量:“nice”

、“good”;定义形式#define常量名常量值一般用大写字母是宏定义预处理命令,不是C语句,后面没有“;”#include<stdio.h>实例常量与变量使用#include<stdio.h>#definePI3.1415926 main() { floatr,s,c;

r=5;

s=PI*r*r;

c=2*PI*r; printf(“r=%f,s=%f,c=%f\n”,r,s,c);}实例

演示常量与变量使用举例定义变量rsc变量:变量赋值00000000000000000000000000000101变量参加运算重点:变量必须先定义后使用;变量的实质是内存的存储单元。#include<stdio.h>实例常量与变量使用决定了变量的数据结构及分配存储空间的大小。整型变量:存放整型数据实型变量:存放实型数据字符变量:存放字符型数据标识符是对变量、函数、数组等命名的符号。由英文字母、数字及下划线构成,并且首字符必须为字母或下划线。标识符的种类:关键字:C语言预先规定的标识符,每个都代表着某一固定含义。预定义标识符:预先定义并有特定含义的标识符用户标识符:用户自己命名的标识符。定义变量的格式:数据类型

变量名1,变量名2,……变量名n;分讲:变量的定义决定了变量的数据结构及分配存储空间的大小。标识符是对变量、函1.C语言允许在定义变量时对变量进行初始化,即对变量赋初值。 如:inta=2;

等价于inta;a=2;

2.对变量进行初始化,允许只对定义的变量的一部分赋初值。 如:inta,b,c=25; charch1=‘x’,ch2;3.C语言中若有几个变量初值相同,必须分别赋值。 如:inta=2,b=2,c=2;

不允许:inta=b=c=2;分讲:变量定义及初始化

变量在初始化之前,他的值是无意义的(值随机)1.C语言允许在定义变量时对变量进行初始化,即对变量赋初值注意标识符区分大小写练一练:练习:请找出不合法的标识符.unionabc_1232ab3d+babc8*stu_bc8abcdefghi-s10*&%$#注意标识符区分大小写练一练:练习:请找出不合法的标识符.un2.2C语言的数据类型C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int2.2C语言的数据类型C基本类型构造类型指针类型空类型v2.2C语言的数据类型1.整型数据类型整型常量

十进制数如:12、345、0、-5八进制数(以0开头)如:012、045十六进制数(0x开头)如:0x12、0x345整型变量基本型(int)短整型(shortint、short)长整型(longint、long)无符号型无符号整型(unsignedint)无符号短整型(unsignedshort)无符号长整型(unsignedlong)问题:0123=()100x123=()100Xff=()102.2C语言的数据类型1.整型数据类型整型常量 整型变量整形数据的所占存储空间的大小及表示数的范围说明:数据类型所占字节数随机器硬件和编译环境的不同而不同,上表以IBMPC机,和TurboC集成开发环境为例。类型符号关键字数值表示范围所占字节整型有无(signed)int2-32768~32767(signed)short2-32768~32767(signed)long4-2147483648~21474836472unsigned

int0~6553540~4294967295unsigned

longunsigned

short20~65535需要记忆整形数据的所占存储空间的大小及表示数的范围说明:数据类型所占#include<stdio.h>main(){intx=123,y=0123,z=0x123;printf(″%d,%d,%d\n″,x,y,z);/*以十进制格式输出*/printf(″%o,%o,%o\n″,x,y,z);/*以八进制格式输出*/printf(″%x,%x,%x\n″,x,y,z);/*以十六进制格式输出*/}实例

演示整型常量的表示方法#include<stdio.h>实例整型常量的表示方法实例

演示整型变量的定义及表示数范围举例#include<stdio.h>main(){inta,b;

longc,d;

unsignede,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;printf(″int:%d,%d\n″,a+b,a);printf(″long:%ld,%ld\n″,c+d,c);printf(″unsigned:%u,%u\n″,e+f,e);}运行结果:int:-32768,32767long:-2147483648,2147483647unsigned:0,65535当各种整型数取最大值时,如果再加1,则超出其所能表示的范围,结果为该类型取值范围的最小值。实例整型变量的定义及表示数范围举例#include<std整数在内存中的存储方式正整数:用原码的形式存储,符号位是“0”;负整数:用“补码”的形式存储,符号位为“1”;

-1用补码表示为:1111111111111111

有符号整型变量的取值范围是

-32768~32767(TurboC)3.无符号整数:最高位不再是符号位,整个16二进制数都用来存放整数。

1111111111111111表示65535整数在内存中的存储方式正整数:用原码的形式存储,符号位是“02.2C语言的数据类型2.实型数据类型1)实型常量:即实数或称浮点数。以十进制形式表示。实型常量的表示形式小数形式例如:0.15、.15、0.0、123.(注意:必须有小数点!)指数形式

小数E(或e)整数

说明:“小数”表示实数的数值位,即尾数部分。“E”代表十进制数的基数10。“整数”表示10的乘幂。注意:字母E之前必须有数字!1.23×1033.918e-0021.23E+0033.918×10-2123.00.003918举例:2.2C语言的数据类型2.实型数据类型1)实型常量:即实2.2C语言的数据类型2.实型数据类型2)实型变量类型所占字节有效数字数的取值范围定义举例单精度实型float46~7-10-37~1038floatx1,y1;双精度实型double815~16-10-307~10308doublex2,y2;例:floata;a=123456.789;/*a=123456.789063*/doubleb;b=123456.789;/*b=123456.789000*/2.2C语言的数据类型2.实型数据类型2)实型变量类型所实例

演示实型数据表示方法#include<stdio.h>main(){floata,b;doublec,d;a=12345.678;b=1.2345678e4;c=12345.678;d=1.2345678E4;printf(″%f,%e\n″,b,a);printf(″%f,%e\n″,d,c);}小数形式指数形式以小数形式形式输出以指数形式形式输出实例实型数据表示方法#include<stdio.h>小数2.2C语言的数据类型3.字符型数据类型字符常量概念:把ASCII码字符集里的一个字符用单引号括起来称为字符常量。例如:‘a’(ASCII码97);‘A’

(ASCII码65);‘1’(ASCII码49);‘!’(ASCII码33)字符常量的分类一般字符常量转义字符常量转义字符功能\n\t\v\r\f\b\\\’\”\ddd\xhh\0回车换行横向跳若干格(代表“Tab”键)竖向跳格回车符换页符退格符(代表“Backspace”键)反斜杠字符“\”单引号字符双引号字符三位八进制数代表的一个ASCII字符两位十六进制数代表的一个ASCII字符空值2.2C语言的数据类型3.字符型数据类型字符常量转义字符字符常量需要注意的事项区分大小写;例如‘A’和‘a’表示不同的字符常量。单引号内必须要字符:有且只有一个,‘(空格)’也是字符常量‘a’、“a”和a代表不同的意义注意字符常量需要注意的事项注意2.2C语言的数据类型3.字符型数据类型字符变量例:charc1,c2;c1=‘a’;c2=‘b’;数据在计算机中以二进制形式存放。字符数据在内存单元中存放的是其对应的ASCII码,且一个字符占用一个字节。C语言中允许字符常量像整型数据一样参与相关运算。字符ASCII码内存中的格式‘A’6501000001‘B’6601000010…………‘Z’9001100000‘a’9701100001‘b’9801100010…………‘z’12210000000部分字符ASCII表2.2C语言的数据类型3.字符型数据类型字符变量数据在计实例

演示字符变量举例main(){charc1,c2;c1='a';c2=98;printf(“%c,%d\n”,c1,c1);printf("%c,%d\n",c2,c2}字符型数据和整型数据是通用的。以字符形式输出。以整数形式输出(字符的ASCII码)。a,97b,98运行结果为:

实例字符变量举例main()字符型数据和整型数据是通用的。以实例

演示字符型数据进行算术运算#include<stdio.h>main(){charc1,c2;c1='a';c2='A';c1=c1-32;c2=c2+32;printf("%c,%c\n",c1,c2);}1.程序最终运行结果如何?2.若以整数形式输出变量c1,c2,则格式说明符应改为?思考问题实例字符型数据进行算术运算#include<stdio.h实例

演示转义字符的使用73例转义字符举例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”);}运行结果:屏幕显示:=实例转义字符的使用73例转义字符举例运行结果:(屏幕显示)实例

演示利用字符型数据输出键盘上没有的字符编写程序输出如下图形:▲▲▲▲▲▲▲▲▲▲#include<stdio.h>main(){charcx=30printf("%c\n",cxprintf("%c%c\n",cx,cx);printf("%c%c%c\n",cx,cx,cx);printf("%c%c%c%c\n",cx,cx,cx,cx);}思考:能否用以下语句实现?cx=‘▲’;Printf(“%c\n”,cx);实例利用字符型数据输出键盘上没有的字符编写程序输出如下图形:概念:字符串常量是指用一对双引号括起来的字符序列。如“Hello”、“good”等。字符串常量的存储:系统自动在字符串的末尾加上一个字符串结束标记‘\0’,以此判断字符串是否结束。程序中长度为n个字符的字符串常量,在内存中需要用n+1个字节空间来存储它。举例:字符串“string”的存储。string\011511611410511010302.2C语言的数据类型字符串常量概念:字符串常量是指用一对双引号括起来的字符序列。如“He字符常量与字符串常量的区别二者表示形式不同。字符常量的定界符是‘’,而字符串常量的定界符是“”。如:‘a’是字符常量,而“a”是字符串常量。存储空间不同。一个字符常量只占1个字节,而一个含有单个字符的字符串常量需要占用2个字节。如:‘a’在内存中只占1个字节,“a”则需占用2个字节空间。不允许将一个字符串常量赋给一个字符型变量。如:ch=‘a’;是正确的,而ch=“a”;不是将字符a赋值给变量ch。字符常量中‘’是不允许空白,字符串常量允许空白“”,称为“空串”。字符常量与字符串常量的区别二者表示形式不同。字符常量的定界符练一练:一.选择题1.下面四个选项中,均是不合法的用户标识符的选项是:A P_0 dofloat la0 _Ab-a goto int_123 temp INT 2.在C语言中,char型数据在内存中的存储形式是:(A)补码(B)反码(C)原码(D)ASCII码3.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围是:(A)0~255(B)0~32767(C)0~65536(D)0~21474836474.下面不正确的字符串常量是:(A)‘abc’(B)“12’12”(C)“0”(D)“”练一练:一.选择题5.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为:char<int<longint<=float<doublechar=int<longint<=float<doublechar<int<longint=float=doublechar=int=longint<=float<double二.填空题。1.C语言中,实型变量分为_____和_____两种。2.若有变量定义inta=2;floatb=1.2345;则变量a、b在内存占用___字节,b再内存中占用__字节。3.C语言中的转义字符就是以一个_____开头的字符序列,用来表示ASCII码字符集中一些不可打印的控制字符和特定功能的字符。5.在C语言中(以16位PC机为例),5种基本数据类型的存储2.3运算符与表达式(1)算术运算符: +、-、*、/、%、++、--(2)关系运算符: >、<、==、>=、<=、!=(3)逻辑运算符: &&、||、!(4)赋值运算符: =、复合的赋值运算符(5)逗号运算符:,(6)位运算符:<<、>>、&、|、~、^(7)条件运算符:?:(8)强制类型转换运算符:(类型)学习运算符应注意:运算符功能;与操作数关系;要求操作数个数;要求操作数类型;运算符优先级别;结合方向;结果的类型2.3运算符与表达式(1)算术运算符:学习运算符应注意:运算符名称运算规则运算对象类型示例备注+加a+bint,float2.5+1结果:3.5双目运算符优先级:*、/、%高于+、-。%运算要求两个操作数必须为整型,否则出错-减a-bint,float2.5-1结果:1.5*乘a*bint,float2.5*1结果:2.5/除a/bint,float7.5/3结果:2.55/2结果:2%求余a%bint7/3结果:13/7结果:3-取负-aint,float-3单目运算符1.图表讲解:算术运算符运算符名称运算规则运算对象类型示例备注+加a+bint,f实例

演示除法和求余运算符的运算规则阅读程序:

main(){ inta=22; intb=3; printf(“%d\n”,a/b);}分析程序运行结果为?运行结果为7,而不是7.333333,为什么?

除法运算符的操作数整数实数 两个整数相除,结果为整数;两个实数相除,结果为实数。例5/2=22-5.0/2.0=-2.5例5/2=-5.0/2.0=两个整数相除,结果为整数;被除数或除数为实数,则相除结果为实数。实例除法和求余运算符的运算规则阅读程序: 运行结果为7,而不实例

演示除法和求余运算符的运算规则说明:表达式a%b的运算结果为a除以b的余数,条件是a、b必须为整数。例15%5=5%2=-5%2=5%-2=5.5%2

23%10=若0<x<y,则:

(x+y)%y=1%10=01-11()3x1第一个数能被第二个数整除对2求余为非0值,则此数不是偶数负数的余数符号看被除数对10求余可得到个位数小的数对大的数求余得到的还是它本身实例除法和求余运算符的运算规则说明:表达式a%b的运算结果为实例

演示算术运算符的结合方向练一练:分析下列表达式的运行结果:-3-2*3+2/3*2-((3-2)*(3+2)/(3*2))算术运算符的优先级为*、/、%高于+、-,如果有括号先算括号内的。算术表达式的结合性是“自左至右”。算术运算符优先级及结合性:例题1:写出表达式(a+b)/2+x%y-z的执行过程。①先算括号内的a+b;②再算(a+b)/2;③再算x%y;④然后计算(a+b)/2+x%y;⑤最后计算(a+b)/2+x%y-z。实例算术运算符的结合方向练一练:算术运算符的优先级为*、/、实例

演示不同数据类型之间的混合运算main(){inti=2;floatj=1.2;doublek=123.4;longx=100;chary='a';printf(″%lf\n″,i*(j+k)+x-y);}两个不同类型的运算量参加运算,C编译系统自动把长度较短的类型转换为长度较长的类型,转换规律为:“垂直降落,向上位移”,以保证不丢失精度。charfloatintlongdouble实例不同数据类型之间的混合运算main()两个不同类型的运算目的:弥补自动类型转换的不足。一般形式:

(类型关键字)(变量名或表达式)举例:floata=56.789; intb;b=(int)a%3;(double)b(float)(20%3+4)实例

演示强制类型转换运算符的应用华氏温度转换成摄氏温度的公式为C=(F-32)*5/9,编写程序输入一个华氏温度F,F为整数,输出相应的摄氏温度,要求精确到小数点后一位。#include<stdio.h>main(){intf;floatc;printf(“pleaseinputF:”);scanf(“%d”,&f);c=(float)(f-32)*5/9;printf(“huashi:%d,sheshi:%.2f\n”,f,c);}分析:若直接使用公式计算,由于分子分母都是整形数据,则输出结果不正确。可用强制转换运算符进行转换。目的:弥补自动类型转换的不足。实例强制类型转换运算符的应用华使用强制类型转换注意:在进行强制类型转换时,类型关键字必须用括号括住。在对一个表达式进行强制类型转换时,整个表达式也要用括号括住。 如:(float)(a+b)(float)a+b在对变量和表达式进行了强制类型转换后,并不改变原变量或表达式的类型。 如: intz;floatx;doubley; z=(int)(x+y);

执行后x、y的类型不变。使用强制类型转换注意:在进行强制类型转换时,类型关键字必须用2.图表讲解:赋值运算符及表达式赋值运算符举例等价式备注=a=5x=y+5基本赋值运算符+=a+=2a=a+2复合赋值运算符:由其他运算符和简单赋值运算符组合而成。-=a-=2a=a-2*=x*=y+5x=x*(y+5)/=x/=y+5x=x/(y+5)%=x%=y+5x=x%(y+5)特点:其优先级只高于逗号运算符,比其他的任何运算符都低。赋值表达式:形式:变量=表达式运算过程:将赋值运算符右边表达式的值赋给左边的变量。结合方式:自右向左2.图表讲解:赋值运算符及表达式赋值运算符举例等价式备注=练一练:

分析,执行下列各赋值表达式后,变量a,b,c的值分别为?(1)a=a+1;(2)a=b=c=2;(3)a=2+(b=3);(4)a=(b=2)*(c=3);a的数值+1赋值给a。连续赋值,等价于:a=(b=(c=2));

或者:a=2;b=2;c=2;等价于:b=3;a=2+3=5;等价于:b=2;c=3;a=2*3=6;赋值运算符的运算过程练一练:a的数值+1赋值给a。连续赋值,等价于:a=步骤:(1)求出“表达式”的值;(2)把求出的表达式的值与“变量”做op运算;(3)把第二步求出的值再赋给“变量”。练习1:设x=5,y=2,求x%=y+3的值。练一练:复合赋值运算符的运算过程(1)y+35

即:x%=5(2)x%5 0(3)x0练习2:设有inta=10;写出下面表达式的值。①a+=a②a-=12③a*=3+a④a/=a+a⑤n=5,a%=n%2步骤:练习1:设x=5,y=2,求x%=y+3的值。练一练:实例

演示赋值运算符及表达式实例#include<stdio.h>main(){inta=4,b=0,c=0;c=b=a*100;printf("a=%d,b=%d,c=%d\n",a,b,c);c=(a=5)+(b=a+5);printf("a=%d,b=%d,c=%d\n",a,b,c);a=10;a+=a-=a*a;printf("a=%d\n",a);}相当于c=(b=a*100);对a,b先赋值,再计算表达式,对c赋值先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90;再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180。实例赋值运算符及表达式实例#include<stdio.h3.图表讲解:关系运算符及表达式运算符名称示例功能>大于a>ba是否大于b>=大于或等于a>=ba是否大于或等于b<小于a<ba是否小于b<=小于或等于a<=ba是否小于或等于b==等于a==ba是否等于b!=不等于a!=ba是否不等于b结合方向:自左向右优先级别:算术运算符>关系运算符>赋值运算符。

自身运算符中:<,<=,>,>=的级别高于==,!=。关系表达式的值:是逻辑值“真”或“假”,用1和0表示。3.图表讲解:关系运算符及表达式运算符名称示例功能>大于a例:关系运算符的优先级及结合方向。

c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)例:设

inta=3,b=2,c=1,d,f;分析下列关系表达式的值。

a>b(a>b)==cb+c<ad=a>bf=a>b>c实例

演示关系运算符优先级及运算过程//表达式值1//表达式值1//表达式值0//d=1//f=0例:关系运算符的优先级及结合方向。例:设inta=3,4.图表讲解:逻辑运算符及表达式逻辑运算符名称示例&&与a>0&&a<100||或a<0||a>100!(单目)非!(a==0)数据a数据ba&&ba||b!aTTTTFTFFTFFTFTTFFFFT4.图表讲解:逻辑运算符及表达式逻辑运算符名称示例&&与a优先级:结合方向:!

&&||高低!:从右向左&&:从左向右||:从左向右!++--+-算术运算符关系运算符逻辑运算符赋值运算符逗号运算符&&

||图表讲解:逻辑运算符优先级及结合方向优先级:!高低!:从右向左!++-例2:逻辑运算符的运算过程。

inta=4;b=5;!aa&&ba||b!a||b4&&0||2‘c’&&‘d’例1:逻辑运算符的优先级。a<=x&&x<=ba==b||x==y!a||a>b//(a<=x)&&(x<=b)//(a==b)||(x==y)//(!a)||(a>b)值为1值为0值为1值为1值为1值为1实例

演示逻辑运算符优先级及运算过程例2:逻辑运算符的运算过程。例1:逻辑运算符的优先级。5.图表讲解:自增、自减运算符运算符名称运算格式功能++自增运算符++i使用i之前将i加1i++使用i之后将i加1--自减运算符--i使用i之前将i减1i--使用i之后将i减1前缀式:先执行i+1或i-1,再使用i值。前缀式:先执行i+1或i-1,再使用i值。5.图表讲解:自增、自减运算符运算符名称运算格式功能++自例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;a=9;b=-a--;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4实例

演示自增、自减运算符优先级及运算过程//a=8,b=-9例j=3;k=++j;//k=4,j=4//k自增、自减运算小结:自增运算符和自减运算符是单目运算符,且只能用于单个变量,不能对常量或者表达式操作;自增运算符和自减运算符的操作数可以是整数或者实数;当前置运算或者后置运算与其他运算结合在一个表达式中时:前置运算:先增值后引用后置运算:先引用后增值“++”和“--”的运算结合方向是从右到左。自增、自减运算小结:自增运算符和自减运算符是单目运算符,且只6.图表讲解:逗号运算符、逗号表达式逗号运算符:“,”,即顺序求值运算符。逗号表达式:用逗号把若干独立的运算表达式结合成一个运算表达式,称为逗号表达式。逗号表达式的一般形式: 表达式1,表达式2,……,表达式n求解过程:先求“表达式1”,再求“表达式2”,……,最后求“表达式n”。整个表达式的值为“表达式n”的值。6.图表讲解:逗号运算符、逗号表达式逗号运算符:“,”,即实例

演示逗号运算符的使用#include<stdio.h>main(){inta=10,b=10,c=0,d=0,k=0;c=a++;d=b--;k=(a*b,++a,--b);printf("a=%d,b=%d,c=%d,d=%d,k=%d\n",a,b,c,d,k);}解题步骤:求表达式1:计算a*b。求表达式2:再计算++a。求表达式3:最后计算—b。写结果:逗号表达式的值赋值给k。逗号表达式可以作为赋值运算中的表达式。逗号运算符的结合方向是从左到右。逗号运算符是所有运算符中级别最低的。实例逗号运算符的使用#include<stdio.h>解题图表:各运算符的优先级。C语言中的优先级从高到低分为15级。运算符的一般顺序:先运算优先级别高的,再运算优先级别低的。对于优先级别相同的运算符,按其结合方向执行。优先级分级一般规律:单目运算符优先级最高,双目次之,三目较低。双目运算符中,算术运算符较高,关系次之,逻辑较低(!除外)。位运算符中,移位运算高于关系运算,位逻辑运算低于关系运算。圆括号运算符优先级最高,逗号运算符最低。图表:各运算符的优先级。C语言中的优先级从高到低分为15级。练一练:1.上机编译下面程序,进行调试。#include<stdio.h>main();/*mainfunction*/{floatr;c;r=5.0;c=2πr;printf(“%f\n”,s)2.写出下列程序的执行结果:#include<stdio.h>main(){inta,b,c;

c=(a=4,b=a++);printf(“a=%d,b=%d,c=%d”,a,b,c);}练一练:1.上机编译下面程序,进行调试。2.写出下列程序练一练:3.写出下列程序的运行结果:#include<stdio.h>#include<math.h>main(){inta=1,b=2,c=2;floatx=10.5,y=4.0,z;z=(a+b)/

温馨提示

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

评论

0/150

提交评论