版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C语言概述内容简介
本章是C语言程序设计的入门部分,从整体上介绍了C语言的起源和发展,讲述C语言的特点、结构和基础语法要点。并介绍了VisualC++6.0的运行环境,通过在VisualC++6.0系统上进行编辑、编译、连接和运行一个C程序,初步了解C语言的特点。第1节C语言设计初步
1、C语言的发展
C语言是一种面向过程的程序设计语言,既适合用于系统描述,也可以用来编写应用软件。
2、C语言的特点
C语言是一种通用、灵活、结构化、标准化、使用广泛的编程语言,能完成用户的各种任务,特别适合进行系统程序设计以及需要对硬件进行操作的场合。C语言特点归纳起来有以下几点:
(1)C语言简洁、紧凑,使用方便、灵活,压缩了一切不必要的成分。
(2)C语言同时具备高级语言和低级语言的特点,表达和处理能力极强。
(3)C语言是一种结构化程序语言,具有结构化控制语句。
(4)C语言运算功能强大,数据类型丰富。
(5)C语言语法限制不太严格,设计自由度较大。
(6)C语言生成的目标代码质量很高,程序执行效率很高。
(7)C语言具有强大的图形功能,支持多种显示器和驱动器。第1节C语言设计初步
3、C语言基本语法成分
(1)C语言的字符集。字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。C语言的标识符、关键字、特殊的运算符等均由字符集中的字符构成。
(2)标识符。C语言规定,标识符只能是由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且标识符的第一个字符必须是字母或者下划线。例如:
(3)关键字也称为保留字,是由C语言规定的具有特定意义的字符串,例如:int、double、switch、while、include、define等。关键字是构成C语言的语法基础,用户定义的标识符不应与关键字相同,也不能对关键字进行重新定义.
(4)运算符
(5)分隔符
(6)注释符第1节C语言设计初步
4、C语言的编辑、编译和运行
和其它高级语言一样,运行一个C源程序程序一般也要经过编辑、编译、连接和运行四个步骤第1节C语言设计初步内容实施
通过学习以下几个程序,了解C源程序在组成结构上的特点,初步掌握C源程序的书写格式。其中语句不要求全部理解,只需先对C语言有个感性认识,为将来学习打下基础。
第1节C语言设计初步1、输出以下字符串:ThisisaCprogrammer!源程序如下:#include"stdio.h"voidmain(){ printf("ThisisaCprogrammer!\n");}第1节C语言设计初步运行结果:第1节C语言设计初步2、求两个整数a和b之和。源程序如下:#include<stdio.h>main(){ inta,b,sum;/*定义变量a、b、sum*/ a=10; b=20; sum=a+b; printf("sumis%d\n",sum);}第1节C语言设计初步运行结果:第1节C语言设计初步3、利用函数的功能是输入两个整数,输出其中的较大数。源程序如下:#include"stdio.h"intmax(inta,intb); /*函数说明*/main()/*主函数*/{ intx,y,z;/*变量说明*/ printf("Inputtwonumbers:\n"); scanf("%d,%d",&x,&y);/*输入x,y值*/ z=max(x,y);/*调用max函数*/ printf("max=%d\n",z);/*输出*/}
第1节C语言设计初步intmax(inta,intb)/*定义max函数*/{ if(a>b) returna; else returnb;}
第1节C语言设计初步运行结果:第1节C语言设计初步思考与提高1、C源程序的结构特点。2、C语言源程序在书写时应遵循的规则。第2节VisualC++6.0集成开发环境的使用
1、VisualC++6.0的启动与退出(1)在桌面上双击VC图标或者在开始菜单选择“程序”中“MicrosoftVisualStudio6.0”中的“MicrosoftVisualC++6.0”,即可得到VisualC++6.0用户界面。(2)退出VisualC++6.0,操作方法如下:单击窗口“关闭”按钮,或单击“文件”菜单中的“退出”命令。第2节VisualC++6.0集成开发环境的使用2、创建新工程
(1)单击菜单“文件”中的“新建”命令,显示新建对话框。
(2)在此对话框的列表栏中,选择“Win32ConsoleApplication”(Win32控制台应用程序)。在“工程”栏中输入一个工程名,如“例题1”。在位置文本框中选择工程所在的路径,如图中选择的路径为“D:\C例题\例题1”。单击“确定”按钮即可。第2节VisualC++6.0集成开发环境的使用2、创建新工程第2节VisualC++6.0集成开发环境的使用2、创建新工程(3)在的“Win32ConsolApplication”对话框中选择“一个空工程[E]”单选项。然后单击“完成”按钮。第2节VisualC++6.0集成开发环境的使用2、创建新工程(4)在“新建工程的框架信息”对话框中单击“确认”按钮,即可完成工程创建过程。第2节VisualC++6.0集成开发环境的使用几个常用文件的作用。*.DSW:全称是DeveloperStudioWorkspace,最高级别的配置文件,记录了整个工作空间的配置信息,是一个纯文本的文件,在VC创建新项目的时候自动生成;*.DSP:全称是DeveloperStudioProject,也是一个配置文件,不过记录的是一个项目的所有配置信息,纯文本文件;*.OPT:与DSW、DSP配合使用的配置文件,记录了与机器硬件有关的信息,同一个项目在不同的机器上的OPT文件内容是不同的;*.NCB:无编译浏览文件,全称是NoCompileBrowser。当自动完成功能出问题时可以删除此文件。build后会自动生成。第2节VisualC++6.0集成开发环境的使用3、创建源程序文件(1)编辑源程序。编辑源程序时,选择“文件”菜单项,出现一个下拉式菜单,选择该菜单中的“新建”选项(热键为Ctrl+N)。打开“新建”窗口。第2节VisualC++6.0集成开发环境的使用3、创建源程序文件(2)选择“文件”标签,在它的下拉列表框中选择“C++SourceFile”,再按击“确定”,即出现编辑屏幕。第2节VisualC++6.0集成开发环境的使用3、创建源程序文件(3)在“C++源程序编辑”窗口下编辑源程序。在编辑窗口键入源程序。第2节VisualC++6.0集成开发环境的使用4、编译连接和运行源程序(1)选择菜单项“组建”,出现“组建”的下拉菜单,在该下拉式菜单中选择“编译eg1.cpp”菜单项,这时系统开始对当前的源程序进行编译,在编译过程中,将所发现的错误显示在屏幕下方的“编译”窗口中。所显示的错误信息中指出该错误所在行号和该错误的性质。用户可根据这些错误信息进行修改。(2)编译无错误后,可进行连接生成可执行文件(.exe),这时选择“组建”下拉菜单中的“组建例题1.exe”选项编译连接成功,生成以源文件名为名字的可执行文件(例题1.exe)。编译信息窗口连接信息窗口第2节VisualC++6.0集成开发环境的使用第2节VisualC++6.0集成开发环境的使用(3)执行可执行文件的方法是选择“编译”菜单项中“执行例题1.exe”选项。这时,运行该可执行文件,并将结果显示在另外一个显示执行文件输出结果的窗口中。第2节VisualC++6.0集成开发环境的使用5、关闭打开工作区单击菜单“文件”中的“打开工作区”命令,在弹出的对话框中选定具体文件,单击“打开”按钮,则可打开工作区,对已建立的工程文件进行修改。单击菜单“文件”中的“关闭工作区”,即可关闭工作区。第2节VisualC++6.0集成开发环境的使用内容实施1、两个数求和源程序如下:#include<stdio.h>main(){ inta,b,sum; a=123;b=456; sum=a+b; printf("sumis%d\n",sum);}第2节VisualC++6.0集成开发环境的使用运行结果:第2节VisualC++6.0集成开发环境的使用2、输入三个整数a,b,c,按照由小到大的顺序输出。注意这三个数是需要用户在键盘中输入的,而且两数间需要用逗号隔开,否则运行结果不正确。源程序如下:#include<stdio.h>main(){ inta,b,c,t;/*t为临时变量*/ scanf("%d,%d,%d",&a,&b,&c);/*输入变量a、b、c的值*/ if(b<a) { t=a;a=b;b=t; }/*如b<a交换a,b,否则不交换*/ if(c<a) { t=a;a=c;c=t; }/*如c<a交换c,a,否则不交换*/ if(c<b) { t=b;b=c;c=t; }/*如c<b交换c,b,否则不交换*/printf("%d,%d,%d\n",a,b,c);}第2节VisualC++6.0集成开发环境的使用运行结果:第2节VisualC++6.0集成开发环境的使用3、求1+2!+3!+…+n!,其中n的值从键盘中输入。源程序如下:#include"stdio.h"voidmain(){ longints=1,t;inti,j,n;printf("n=");scanf("%d",&n);for(i=2;i<=n;i++){ for(t=1,j=1;j<=i;j++) t*=j; s+=t; } printf("s=%ld\n",s);}第2节VisualC++6.0集成开发环境的使用运行结果:第2节VisualC++6.0集成开发环境的使用思考与提高常用的C编译环境除了VC以外,还有TurboC,下面以TurboC2.0为例简单介绍一下TC的使用方法。总结组成C语言的基本规则是:有自己规定的基本字符集、标识符、关键字、语句和标准库函数等。C程序的基本结构是:程序由函数组成,函数由语句组成。一个完整的C程序至少要有一个且仅有一个主函数main,可以有若干个子函数,也可以没有子函数。这些子函数有用户自定义的函数,也有C编译系统提供的标准库函数。一个C的源程序需要经过编辑、编译和连接后才可运行,程序的开发需要VC或TC等相应的语言处理系统的支持。谢谢MakePresentationmuchmorefun@WPS官方微博@kingsoftwps第2章算法与数据结构内容简介
一个计算机程序应包括两方面内容:一是对操作的描述,指解决问题所使用的一系列合乎逻辑的解题步骤,即算法(algorithm);二是对数据的描述,是指定数据的类型和数据的组织形式,即数据结构。第1节算法概念
1、程序与程序设计所谓程序是指把希望计算机做的工作写成一定形式的指令,并把它们存储在计算机的内部存储器中。当人们给出命令之后,它就按指令操作顺序自动进行,把这种可以连续执行的一条条指令的集合称为“程序”。
程序设计就是编写解决特定问题程序的过程。
著名计算机科学家NNiklausWirth教授说明了程序设计的主要任务:程序=数据结构+算法。第1节算法概念一般一个简单的程序设计包含以下四个步骤:分析问题,建立数学模型。(2)确定数据结构和算法。(3)编制程序。(4)调试程序。
由此可见,一个完整的程序要涉及到四个方面的问题:数据结构、算法、编程语言和程序设计方法。这四个方面的知识都是程序设计人员所必须具备的,其中算法是至关重要的一个方面。第1节算法概念2、算法及算法的表示(1)算法的基本概念算法(algorithm)一词源于算术(algorism)。简单来说是一个由已知推求未知的运算过程。后来人们把进行某一工作的方法和步骤称为算法。因此,算法反映了计算机的执行过程,是对解决特定问题的操作步骤的一种描述。D.E.Knuth在他撰写的《THEARTOFCOMPUTERPROGRAMMING》一书中写到:“一个算法,就是一个有穷规则的集合,其中的规则规定了一个解决某一特定类型的问题的运算序列。”第1节算法概念例:设a,b,c三个变量用来存放3个数,变量max存放其最大值。为求最大值,须对3个数分别进行比较,步骤如下:输入3个数分别给a,b,c存放;先把变量a的值赋给变量max;将变量b与变量max比较,如果b>max,则把b的值赋给max(否则不做任何工作);将变量c与变量max比较,如果c>max,则把c的值赋给max(否则不做任何工作);输出变量max的值,即最大值。第1节算法概念(2)算法的基本特征有穷性:一个算法必须在执行有限个操作步骤后终止;确定性:算法中每一步的含义必须确切,不可出现任何二义性;有效性:算法中的每一步操作都应该能有效执行,一个不可执行的操作是无效的。有零个或多个输入:这里的输入是指在算法开始之前所需要的初始数据。这些输入的多少取决于具体问题要求。有一个或多个输出:所谓输出是指与输入有某种特定关系的量,在一个完整的算法中至少会有一个输出。第1节算法概念(3)算法的表示算法可以用任何形式的语言和符号来描述,常用的有:自然语言、传统流程图、N-S结构图、伪代码、PAD图等。第1节算法概念①自然语言例如:利用自然语言描述求解一个一元二次方程实数根的过程。第一步:将方程化简为标准方程。即:ax2+bx+c=0。利用b2-4ac的值来判断方程无解、有一个解还是有两个解。第二步:如果b2-4ac<0此题无解,执行第六步。否则执行第三步。(因为题目要求求实数根,所以这里忽略复数根)第三步:如果b2-4ac=0此题有一个解,执行第五步。否则执行第四步。第四步:如果b2-4ac>0此题有两个解。第五步:根据求根公式求出方程根第六步:解题结束。第1节算法概念②传统流程图传统流程图也简称为框图,是对算法的一种图形解法。传统流程图是用规定的一组图形符号、流程线和文字说明来表示各种操作算法。第1节算法概念内容实施1、有两个变量a和b,要求将它们的值互换,如a=3、b=4,互换后则a=4、b=3。用自然语言描述的算法如下:解:先引入过渡变量c。第一步:将a的值送给变量c;第二步:将b的值送给变量a;第三步:将c的值送给变量b;以上三步结束后,就实现了两变量的值互换。第1节算法概念2、有10个数,找出其中最大的数。用自然语言描述的算法如下:解:第一步:输入第一个数,将其赋给变量max;第二步:将常数1赋值给变量i(用来累计比较次数的);第三步:输入后面一个数,放在x中;第四步:若x>max则将x的值赋给变量max;第五步:i的值加1;第六步:若i<=9,返回第三步,继续执行,否则算法终止。算法结束后max就是10个数中最大的数。第1节算法概念3、求5!(即1×2×3×4×5的值)。分别用自然语言、传统流程图来表示设计的算法。解:先定义两个变量,变量p用来表示被乘数,变量i用来表示乘数。(1)用自然语言表示:第一步:把常数1赋给变量p,即:p=1。第二步:把常数2赋给变量i,即:i=2。第三步:使p*i,乘积仍放在变量p中,即:p=p*i。第四步:使i的值加1,即:i++。第五步:如果i不大于5,返回第三步重新执行;否则,算法结束。最后得到p的值就是5!的值。第1节算法概念(2)用传统流程图表示第1节算法概念4、输入一个大于或等于3的正整数,判断它是不是一个素数。解:(1)用自然语言表示该算法如下:第一步:输入n的值。第二步:把常数2赋给变量i,即i=2。第三步:n被i除,得余数r。第四步:如果r值为0,表示n能被i整除,则n不是素数,算法结束;否则继续执行。第五步:将i的值自加1,即i+1→i。第六步:如果i≤,返回第三步;否则n即为素数。将需要显示的结果输出。第1节算法概念(2)用传统流程图表示第1节算法概念5、求100-999之间的所有水仙花数。水仙花数又称阿姆斯特朗数,指一个数的各位数字的立方和等于这个数,例如:153为水仙花数()。解:先设三个变量i、j、k分别表示三位数的百位、十位和个位,用传统流程图表示第1节算法概念思考与提高1、N-S结构化流程图N-S结构图的目标是开发一种破坏结构化基本构成元素的过程设计表示。其主要特点是完全取消了流程线,不允许有随意的控制流,全部算法写在一个矩形框内,该矩形框以三种基本结构(顺序、选择、循环)描述符号为基本复合而成。第1节算法概念N-S结构图的三种基本结构顺序结构
选择结构当型循环和直到型循环
第1节算法概念2、伪代码(PSEUDOCODE)伪代码是使用介于自然语言和计算机语言之间的文字和符号来描述算法,不使用图形符号,因此书写方便、格式紧凑,容易理解,易于向程序过渡。用伪代码表示算法并无固定的、严格的语法规则,只要把意思表达清楚,语法上清晰易读即可。第1节算法概念例如用伪代码表示“打印X的绝对值”的算法:或:IFX为正数
PRINTXELSEPRINT–X或:若x为正数,打印x否则打印–xIFxpositiveTHENPrintxELSEPrint–x第2节C语言的基本数据类型C语言不仅提供了多种数据类型,还提供了用户自定义构造更加复杂的数据结构的机制。主要数据类型如图所示:第2节C语言的基本数据类型第2节C语言的基本数据类型1、常量与变量(1)常量及符号常量常量又称常数,是指在程序运行中其值不能被改变的量。C语言允许用标识符来代表一个常量,这种常量称为符号常量。习惯上符号常量名用大写,变量用小写,以示区别。第2节C语言的基本数据类型例如:#include"stdio.h"#definePI3.14main(){floataera;aera=10*10*PI;printf(“aera=%f\n”,aera);}程序运行结果为:aera=314.000000程序中用#define定义PI代表圆周率常数3.14,此后凡在文件中出现的PI都代表圆周率3.14,PI和常量一样进行运算。第2节C语言的基本数据类型(2)变量程序运行过程中,其值可以改变的量叫变量。程序中使用的变量,属于用户自定义标识符,任何一个变量名必须先定义(即确定变量名和变量的类型)后使用。常用的变量有整型变量、实型变量和字符型变量等。变量因类型不同在内存中所占的存储空间也不同,系统在编译时能根据所定义的变量类型为其分配相应数量的存储单元。第2节C语言的基本数据类型定义变量的一般形式为: 数据类型变量名1,变量名2,变量名3,…;
第2节C语言的基本数据类型在使用变量的时候,需要注意以下几个问题:变量的名字是一种标识符,它必须遵守标识符的命名规则。习惯上变量名用小写字母表示,以增加程序的可读性。但C语言区分大小写,所以sum和Sum是两个不同的变量。在程序中,常量是可以不经说明而直接引用,而变量则必须“先说明,后使用”。这样除了能保证程序中变量名使用正确外,还能在编译时就能根据类型为其分配相应的存储单元,并可检查所进行的运算是否合法。第2节C语言的基本数据类型2、整型数据C语言中的整型数据包括整型常量和整型变量两类。(1)整型常量①八进制整常数②十六进制整常数③十进制整常数④整型常数的后缀第2节C语言的基本数据类型(2)整型变量①整型变量的分类整型变量可分为基本型、短整型、长整型、和无符号型四种。第2节C语言的基本数据类型类型说明符分配字节数数的范围int2-32768~32767即-215~(215-1)short[int]2-32768~32767即-215~(215-1)long[int]4-2147483648~2147483647即-231~(231-1)unsigned[int]20~65535即0~(216-1)unsignedshort20~65535即0~(216-1)unsignedlong40~4294967295即0~(232-1)第2节C语言的基本数据类型②整型变量的说明变量的说明即变量的定义,一般形式为:类型说明符变量名标识符1,变量名标识符2,...;例如:inta;/*a为整型变量*/longm,n,k;/*m,n,k为长整型变量*/unsignedp,q;/*p,q为无符号整型变量*/第2节C语言的基本数据类型在书写变量说明时,应注意以下几点:允许一个类型说明符说明多个相同类型的变量。各变量名之间用逗号间隔,类型说明符与变量名之间至少用一个空格间隔。最后一个变量名之后必须以“;”号结尾。变量说明必须放在变量使用之前。一般放在函数体的开头部分。在说明变量的同时也可以给出变量的初值。第2节C语言的基本数据类型3、实型数据(1)实型常量实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式,十进制数形式和科学计数法形式。(2)实型变量实型变量分为两类:单精度型和双精度型。实型变量说明的格式和书写规则与整型相同。第2节C语言的基本数据类型4、字符型数据字符型数据包括字符常量、字符变量和字符串常量。(1)字符常量字符常量是用一对单引号括起来的单个字符。它是ASCII码字符集里的字符。C语言中字符常量的类型是char型。C语言中字符常量有3种表示方法:①用单引号括起来的一个ASCII字符。②直接用该字符的ASCII码的数值表示一个字符常量③用“\”后面连一个特定的字母或特定符号或1到3位八进制数或1到2位十六进制数并用单引号括起,这样的组合又有了其它的意义,称之为转义字符。第2节C语言的基本数据类型转义字符的使用:#include<stdio.h>main(){ printf("01234567890123456789\n"); printf("abc\tde\babc\n");printf("abcdea\rbcde\n");printf("abcdea\nbcde\n");}第2节C语言的基本数据类型运行结果:第2节C语言的基本数据类型(2)字符变量字符型变量用来存放字符常量,即单个字符。每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符型数据可分为两类:一般字符类型(char)和无符号字符类型(unsignedchar)。第2节C语言的基本数据类型(3)字符串常量C语言中除了字符常量外,还允许使用字符串常量。字符串常量是由一对双引号括起的字符序列。例如:"CHINA"、"ThisisaCprogram!"、"123.45"等都是合法的字符串常量。第2节C语言的基本数据类型字符串常量与字符常量的区别:①字符串常量是用双引号括起来的字符序列,而字符常量由单引号括起来;②字符常量只能是单个字符,字符串常量则可以含一个或多个字符;③字符串常量在内存中存储时有串尾标记'\0';④可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。C语言中没有专门的字符串变量。字符串如果需要存放在变量中,需要用字符型数组来存放。第2节C语言的基本数据类型内容实施1、 整型数据的溢出问题。源程序如下:#include"stdio.h"main(){inta,b,c;a=32766;b=a+1;c=b+1;printf("a=%d,b=%d,c=%d\n",a,b,c);}第2节C语言的基本数据类型运行结果:第2节C语言的基本数据类型2、实型数据取舍问题源程序如下:#include"stdio.h"voidmain(){ floata;doubleb;a=55555.5555555;b=55555.5555555;printf("a=%f\nb=%f\n",a,b);}第2节C语言的基本数据类型运行结果:第2节C语言的基本数据类型3、字符型变量赋值以及计算问题源程序如下:#include"stdio.h"main(){ chara,b; intc,d; a=97;/*对字符变量赋以整型值*/ b=98; c='c';/*对整型变量赋以字符值*/ d='d'; printf("%c,%c\n%d,%d\n",a,b,a,b);/*以字符型和整型输出*/ c=c-32;/*小写字母换成大写字母*/ d=d-32; printf("%c,%c\n%d,%d\n",c,d,c,d);/*分别以字符型和整型输出*/}第2节C语言的基本数据类型运行结果:第2节C语言的基本数据类型思考与提高C语言允许整型、实型(包括单、双精度)、字符型数据间可以混合运算。在进行运算时,不同类型的数据要转换成同一类型,然后进行运算。转换的方法有两种:一种是自动类型转换一种是强制类型转换
谢谢MakePresentationmuchmorefun@WPS官方微博@kingsoftwps第3章运算符与顺序结构设计内容简介
C语言中规定了各种运算符,这些运算符是构成C语言表达式的基本元素。C语言本身并不提供数据输入输出语句,有关输入输出操作都是由函数的调用来实现的。本章还介绍了顺序结构程序设计。顺序结构的特点是结构中的语句是按其先后顺序执行。第1节 常用运算符与表达式
运算符是C语言里用于描述对数据进行运算的特殊符号。C语言的运算符,大致分为算术运算符、关系运算符、逻辑运算符、组合运算符、增量运算符、指针运算符、条件运算符、逗号运算符、位运算符几类。C语言还规定了运算符的优先级和结合性。
优先级是指当表达式中多个运算符计算的先后顺序。
结合性是指当一个运算对象两侧的运算符的优先级别相同时,进行运算(处理)的结合方向。按“从右向左”的顺序运算,称为右结合性;按“从左向右”的顺序运算,称为左结合性。第1节常用运算符与表达式1、算术运算符与算术表达式(1)算术运算符运算符名称例子运算功能-取负值-x取x的负值+加x+y求x与y的和-减x-y求x与y的差*乘x*y求x与y的积/除x/y求x与y的商%求余(或模)x%y求x除以y的余数第1节常用运算符与表达式使用算术运算符应注意以下几点:①"-"运算符既具有单目运算取负值运算的功能,又具有双目运算求差值的功能。②除法运算"/"在使用时要注意数据类型。因为两个整数(或字符)相除,其结果是整型。如果不能整除时,只取结果的整数部分,小数部分全部舍去。③求余运算"%"也称求模运算。要求参与运算的变量必须均为整型,其结果值为两数相除所得的余数。一般情况下,所得的余数与被除数符号相同。④算术运算符的优先级及结合性如下:C语言规定了各种运算符的优先级,取负值运算符优先级为2级,*、/、%的优先级为3级,+、-为4级。除取负运算符结合方向是自右到左外,其他算术运算符的结合方向均是自左到右。第1节常用运算符与表达式(2)算术表达式算术表达式是指用算术运算符、括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。其中运算对象可以是常量、变量、函数等。例如:
2+a*b,-3*a%b,a*(b+3)等第1节常用运算符与表达式2、自增、自减运算符
自增"++"、自减"--"运算是单目运算,其作用是使变量的值增1或减1。其优先级高于所有双目运算。参加运算的运算对象只能是变量而不能是表达式或常量。自增、自减运算的一般形式为:
++i;--i;
运算符在变量前面(前缀形式),表示变量在使用前自动加1或减1;
i++;i--;
运算符在变量后面(后缀形式),表示变量在使用后自动加1或减1;
对一个变量而言实行前缀运算(++i)或后缀运算(i++),其运算结果是一样的,即都使变量i值加1(i=i+1)。++i和i++不同之处在于++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。第1节常用运算符与表达式在使用自增、自减运算符时需要注意的以下两点:⑴自增运算符(++)或自减运算符(--),只能用于变量,而不能用于常量或表达式。例如,10++或(a*b)++都是不合法。⑵自增运算符(++)或自减运算符(--)的结合方向是“自右至左”。例如,-i--,因为两运算符优先级相同,而结合方向为“自右至左”,所以-i--相当于-(i++)。第1节常用运算符与表达式3、赋值运算符与赋值表达式(1)赋值运算符赋值运算符用"="表示,其功能是将赋值运算符右边的表达式的值存放到以左边变量名为标识的存储单元中。一般格式:变量名=表达式例如:n=12.345;/*将实型数12.345赋给变量n*/c=a+b;/*将a和b的和赋给变量c*/第1节常用运算符与表达式注意:①赋值运算符“=”与数学中的等号完全不同,数学中的等号表示在该等号两边的值是相等的,而赋值运算符“=”是指要完成“=”右边表达式的运算,并将运算结果赋给“=”左边的变量中。②赋值运算符的左边必须是变量,右边的表达式可以是单一的常量、变量、表达式和函数调用语句。③在一个赋值表达式中,可以出现多个赋值运算符,其运算顺序是从右向左结合。④进行赋值运算时,当赋值运算符两边的数据类型不同时,将由系统自动进行类型转换。转换的原则是:赋值运算符右边的数据类型转换成左边的变量类型。第1节常用运算符与表达式赋值运算中数据类型的转换规则左右转换说明floatint将整型数据转换成实型数据后再赋值intfloat将实型数据的小数部分截去后再赋值longintint,short值不变int,shortintlongint右侧的值不能超过左侧数据值的范围,否则将导致意外的结果unsignedsigned按原样赋值。但是如果数据范围超过相应整型的范围,将导致意外的结果signedunsigned第1节常用运算符与表达式(2)复合赋值运算符C语言规定,在赋值运算符"="之前加上其它运算符可以构成复合赋值运算符,用于完成赋值组合运算操作。C语言规定复合赋值运算符的一般形式为:
<变量><双目运算符>=<表达式>等价于:
<变量>=<变量><双目运算符><表达式>例如:n+=1等价于n=n+1x*=y+1等价于x=x*(y+1),注意不是等价x=x*y+1,因为“+”的优先级高于“*=”第1节常用运算符与表达式(2)复合赋值运算符C语言规定,所有双目运算符都可以赋值运算符一起组合成复合赋值运算符。共有10种复合赋值运算符,即:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,||=
。复合赋值运算符的优先级与赋值运算符的优先级相同,且结合方向也一致。第1节常用运算符与表达式(3)赋值表达式赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。它的一般形式为:<变量><赋值运算符><表达式>对赋值表达式的求解过程:先计算赋值运算符右边"表达式"的值,再将计算结果赋值给赋值运算符左边的"变量"。赋值表达式的值就是赋值运算后左边变量的值。第1节常用运算符与表达式4、逗号运算符及逗号表达式在C语言中,逗号运算符即“,”,其作用是将多个表达式连在一起构成逗号表达式。一般形式为:表达式1,表达式2,…,表达式n逗号运算符在所有运算符中的优先级别最低,其结合性是自左向右结合。。它起到了把若干个表达式串联起来的作用。逗号表达式求解过程为:自左至右,先求解表达式1,再求解表达式2,…,最后求解表达式n。表达式n的值即为整个逗号表达式的值。第1节常用运算符与表达式内容实施1、分析下列运算的结果源程序如下:#include<stdio.h>intmain(){ intx,y,z;scanf("%d",&x);/*从键盘中输入一个数给变量x*/y=x++;/*使用后缀用法*/z=++x;/*使用前缀用法*/printf("y=%d,z=%d,x=%d\n",y,z,x);}第1节常用运算符与表达式运行结果:第1节常用运算符与表达式2、赋值运算符的使用源程序如下:#include"stdio.h"main(){ inta,b;/*定义a和b为整形变量*/ charc1,c2;/*定义c1和c2为字符形变量*/ a=b=48;/*将48赋给a和b*/ c1=a+3; /*将a+3的值赋给c1*/ c2=b+2; /*将b+2的值赋给c2*/printf("%c,%c,%c,%c\n",a,b,c1,c2);}第1节常用运算符与表达式运行结果:第1节常用运算符与表达式思考与提高
C语言的运算符非常丰富,除了上面介绍常用的之外,不常用的也需要了解。1、"()"和"[]"运算符2、取地址"&"运算符3、sizeof运算符4、type运算符第2节数据的输入与输出在C的标准函数库中提供了一些输入输出函数。例如:printf、scanf、putchar、getchar、puts、gets、getch、getche等。在使用C库函数时,要用预编译命令“#include”,将有关的“头文件”包含到用户的源文件中。在调用标准输入输出函数时,源文件开头中应有以下预编译命令:#include<stdio.h>或#include“stdio.h”第2节数据的输入与输出1、输出函数printfprintf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出到标准输出设备上。printf函数的一般形式为:printf(”格式控制”,输出表);格式控制由格式说明和普通字符两部分部分组成。第2节数据的输入与输出例如:使用printf函数输出变量、常量和表达式的值。源程序如下:
#include"stdio.h" main() { intx,y; x=10; y=20; printf("%d\t",1234);/*向屏幕输出常量1234的值*/ printf("\n");/*光标到下一行的行首*/ printf("\"x=%d,y=%d\"",x,y);/*输出变量x和y的值*/ printf("\n"); printf("x%%y=%d",x%y);/*输出x%y的值*/printf("\n");}第2节数据的输入与输出运行结果:第2节数据的输入与输出2、格式输入函数scanfscanf函数是用来输入任何类型的数据,使用不同的格式字符可以将不同类型的数据从标准输入设备读入内存。调用格式:scanf(格式控制,地址表);
(1)格式控制“格式控制”部分是由双引号括起来的字符串,由“%”和格式符组成,作用是将输入数据转换为指定格式后存入到由地址表所指的相应变量中。(2)地址表scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。地址运算符为“&”,如求变量a的地址可以写为&a。第2节数据的输入与输出例如:使用scanf函数从键盘上输入整型、浮点数以及字符型数据。源程序如下:#include"stdio.h" main() { inta; floatb; charc; printf("Pleaseinputa,b,c:"); scanf("%d%f%c",&a,&b,&c);/*从键盘输入数据分别赋给a,b,c*/ printf("a=%d,b=%f,c=%c",a,b,c);/*输出变量a,b,c的值*/ }第2节数据的输入与输出运行结果:第2节数据的输入与输出内容实施1、 运行下面程序,写出程序的运行结果。源程序如下:#include"stdio.h"voidmain(){ inta=10,b=5; floatx=12.3456,y=-123.456; charc='a'; longn=1234567; unsignedu=65535; printf("01234567890123456789012345678901234567890123456789\n");/*打印一个标尺以便检查输出结果*/第2节数据的输入与输出printf("%d%%%d\n",a,b); printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y); printf("%-10f,%-10f\n",x,y); printf("%8.2f,%8.2f,%4f,%4f,%.3f,%.3f\n",x,y,x,y,x,y); printf("%e,%10.2e\n",x,y); printf("%c,%d,%o,%x\n",c,c,c,c); printf("%d,%lo,%x\n",n,n,n); printf("%u,%o,%x,%d\n",u,u,u,u); printf("%s,%5.3s\n","ABCDEFG","ABCDEFG");}第2节数据的输入与输出运行结果:第2节数据的输入与输出2、运行下面程序,写出程序的运行结果。源程序如下:#include"stdio.h"main(){ inta,b,i; floatj; chark; scanf("%d,%f,%c",&i,&j,&k); printf("1:i=%d,j=%f,k=%c\n",i,j,k); scanf("%3d%3d",&a,&b); printf("2:a=%d,b=%d\n",a,b); scanf("%2d%*4d,%2d",&a,&b); printf("3:a=%d,b=%d\n",a,b);}第2节数据的输入与输出运行结果:第2节数据的输入与输出思考与提高1、字符输出函数putchar其功能是在终端上输出单个字符,一般是以显示器为处理对象的。格式:putchar(c);
说明:c是字符型或整型变量,也可以是一个字符或整型常量。例如:putchar('\n');/*作用是输出一个“换行”字符*/putchar('A');/*输出大写字母A*/putchar(x);/*输出字符变量x的值)*/第2节数据的输入与输出2、字符输入函数getchar其功能是从键盘上输入一个字符。格式:getchar();说明:getchar()的值可以送给字符变量,也可以送给整型变量。getchar函数只能接受单个字符,当输入数字时数字也按字符进行处理。如果输入多于一个字符时,getchar函数只接收第一个字符。第2节数据的输入与输出例如:从键盘输入一个字符,并将其存入字符型变量c中。#include<stdio.h>main(){charc;printf("Inputacharacter\n");c=getchar();putchar(c);
}第3节顺序结构程序设计1、结构化程序设计与三种基本结构结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。程序可以分为三种基本结构:顺序结构、分支结构、循环结构。(1)顺序结构。顺序结构是最简单的基本结构。先执行处理A,然后再顺序执行处理B。(2)选择结构。在选择结构中,要根据逻辑条件的成立与否,分别选择执行不同的处理。当逻辑条件成立时,执行处理A,否则执行处理B。第3节顺序结构程序设计(3)循环结构。循环结构一般分为当型循环和直到型循环。(a)当型循环。在当型循结构中,当逻辑条件成立时,就反复执行处理A(称为循环体),直到逻辑条件不成立时结束。(b)直到型循环。在直到型循环结构中,反复执行处理A,直到逻辑条件成立结束(即逻辑条件不成立时继续执行。第3节顺序结构程序设计(a)顺序结构(b)分支结构(c)当型循环(d)直到型循环第3节顺序结构程序设计2、C语句概述C语句可以分为以下5类:(1)控制语句由它完成一定的控制功能。C只有9种控制语句第3节顺序结构程序设计语句名称备注if()~else~条件语句()表示其中是一个条件,~表示内嵌的语句for()~for循环语句while()~while循环语句do~while()do~while循环语句continue结束本次循环语句break中止执行switch或循环语句switch多分支选择语句goto转向语句return从函数返回语句第3节顺序结构程序设计(2)函数调用语句由一个函数调用加上分号“;”组成,一般形式为:函数名(实际参数表);(3)表达式语句有表达式加上分号“;”组成。(4)空语句由一个分号构成的语句。空语句不产生任何操作运算,只用为形式上的语句,被填充到程序结构中。(5)复合语句C语言中还包括一些其他语句,如复合语句等。把多条语句用大括号{}括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。第3节顺序结构程序设计内容实施1、输入三角形的三边长,求三角形面积。已知三角形的三边长为a,b,c,求三角形的面积的海伦公式为: ,其中第3节顺序结构程序设计源程序如下:#include"stdio.h"#include"math.h"main(){ floata,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c));/*sqrt为求平方根函数,包含在头文件math.h中*/ printf("a=%6.2f,b=%6.2f,c=%6.2f,s=%6.2f\n",a,b,c,s); printf("area=%6.2f\n",area);}第3节顺序结构程序设计2、从键盘输入一个大写字母,要求改写成小写字母输出源程序如下:#include"stdio.h"main(){ charc1,c2;printf("Pleaseinputc1\n");c1=getchar();c2=c1+32;/*大写字母+32变成小写字母*/printf("c1=%d,c1=%c\n",c1,c1);printf("c2=%d,c2=%c\n",c2,c2);}第3节顺序结构程序设计3、从键盘输入圆的半径,求圆的面积和周长。要求结果保留两位小数。源程序如下:#include"stdio.h"voidmain(){ floatr,area,peri; scanf("%f",&r); area=3.14*r*r; peri=2*3.14*r; printf("area=%.2f,peri=%.2f\n",area,peri);}第3节顺序结构程序设计4、输入一个华氏温度F,输出其对应的摄氏温度C。要求结果保留三位小数。温度转换公式为:源程序如下:#include"stdio.h"voidmain(){ floatc,f; scanf("%f",&f); c=5.0/9*(f-32); printf("%.3f\n",c);}第3节顺序结构程序设计思考与提高顺序结构的程序设计是最简单的,只需要按照解决问题的顺序写出相应语句即可。该结构的执行顺序是自上向下,顺序执行。顺序结构可以独立使用,构成一个简单的程序。大部分情况,顺序结构都是作为程序的一部分,与分支、循环结构一起构成复杂的程序。总结C语言中规定了各种运算符号,它们是构成C语言表达式的基本元素。C语言中没有提供专门的输入输出语句,所有的输入输出都由调用标准库函数中的输入输出函数来实现。结构化程序由三种基本结构组成:顺序结构、选择结构、循环结构。任何复杂的算法均可以用顺序、选择、循环这3种基本结构组合、嵌套进行描述。谢谢MakePresentationmuchmorefun@WPS官方微博@kingsoftwps第4章选择结构程序设计内容简介
选择结构又叫分支结构,用于在几个可选择的分支之间进行选择。选择结构是结构化程序设计的基本结构之一,在C程序中,可以使用if和switch两种语句进行逻辑判断,从而实现选择结构。第1节关系运算和逻辑运算1、关系运算符与关系表达式(1)关系运算符
关系运算就是比较两个表达式并决定两者之间的关系,关系运算的结果只有两种情况:假(0)或真(非0)。第1节关系运算和逻辑运算运算符含义结合方向举例操作数个数>大于自左至右a>b,10>8双目运算符>=大于等于自左至右a>=b,3>=2双目运算符<小于自左至右a<b,3<10双目运算符<=小于等于自左至右a<=b,3<=b双目运算符==等于自左至右a==b,3==5*a双目运算符!=不等于自左至右a!=b,3!=5%7双目运算符第1节关系运算和逻辑运算使用关系运算符时要注意以下几点:① 关系运算符都是双目运算符,其结合性是从左到右结合。② 由两个字符组成的运算符之间不可加空格,如<=不能写成<=。③ 关系运算符中,优先级分为两级。其中>、>=、<、<=四种运算符的优先级相同,==和!=两种运算符的优先级相同,前四种运算符的优先级高于后两种。④ 关系运算符、算术运算符和赋值运算符之间的优先次序依次是:算术运算符级别最高,关系运算符次之、赋值运算符最低。⑤ 关系运算符“==”和赋值运算符“=”很容易混淆,必须注意两者之间的区别。⑥ 关系运算往往作为条件出现在if语句的条件或循环判断条件之中,一般不单独使用。第1节关系运算和逻辑运算(2)关系表达式用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式1关系运算符表达式2第1节关系运算和逻辑运算2、逻辑运算符与逻辑表达式C语言提供三种逻辑运算符运算符含义结合方向举例操作数个数||逻辑或(OR)自左至右a||b,6<=b||a==b双目运算符&&逻辑与(AND)自左至右a&&b,3>8&&a双目运算符!逻辑非(NOT)自右向左!,!a==b单目运算符第1节关系运算和逻辑运算逻辑运算规则ab!a!ba&&ba||b0011000非01001非000101非0非00011第1节关系运算和逻辑运算用逻辑运算符将关系表达式或逻辑量连接起来的式子叫逻辑表达式。在一个逻辑表达式中如果含多个逻辑运算符,则按优先级由高到低进行运算。其优先级是:"!"最高,"&&"次之,"||"最低;逻辑运算优先级低于所有关系运算,而"!"优先级高于所有算术运算。第1节关系运算和逻辑运算在逻辑表达式求值的过程中,并不是所有的逻辑运算符都必须被执行,只是在必须执行下一个逻辑运算符时才能求出表达式的解时,才执行该运算符。第1节关系运算和逻辑运算内容实施1、写出表达判断某年份是否为闰年的逻辑表达式判断某年份(year)是否为闰年的条件是看此年份是否满足下述两个条件之一:能被4整除但不能被100整除;能被400整除。所以得到作为判断某年份是闰年的逻辑表达式:year%4==0&&year%100!=0||year%400==0第1节关系运算和逻辑运算2、计算机等级考试分笔试和上机考试两部分,写出判断某考生是否通过考试以及是否有补考机会的逻辑表达式假设变量grade1和变量grade2分别表示笔试和机试成绩,则:grade1>=60&&grade2>=60,该考生通过考试;grade1<=60||grade2<=60,该考生未通过考试但可以参加补考;grade1<=60&&grade2<=60,该考生未通过考试且不能参加补考。第1节关系运算和逻辑运算3、分析下面的程序,写出输出结果源程序如下:#include"stdio.h"main(){ inta=1,b=2,c=3,d=4,m=1,n=2;printf("\n(m=a>b)&&(n=c>d)=%d",(m=a>b)&&(n=c>d));printf("\nm=%d,n=%d\n",m,n);}第1节关系运算和逻辑运算运行结果:假设a的值是3,则输出结果为:第1节关系运算和逻辑运算4、分析下面的程序,写出输出结果源程序如下:#include"stdio.h"main(){charc='a';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf("%d,%d\n",!x*!y,!!!x);printf("%d,%d\n",x||i&&j-3,i<j&&x<y);printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);}第1节关系运算和逻辑运算运行结果为:第2节if语句设计1、if语句的三种形式(1)if语句的第一种形式为基本形式。格式如下:
if(表达式)语句功能是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为下图所示。第2节if语句设计第2节if语句设计(2)if语句的第二种形式为:if-else。格式如下:if(表达式)
语句1;
else
语句2;功能是:如果表达式的值为真,则执行语句1,否则执行语句2。其执行过程可表示为下图所示。第2节if语句设计第2节if语句设计(3)if语句的第三种形式为多分支结构。格式如下:
if(表达式1)
语句1;
elseif(表达式2)
语句2;
elseif(表达式3)
语句3;
…elseif(表达式m)
语句m;
else
语句n;第2节if语句设计功能是:依次判断表达式的值,当某个表达式值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n,再继续执行后续程序。执行过程如图所示。第2节if语句设计第2节if语句设计例如:用if语句的多分支结构形式来实现数学上的符号函数功能。即当x<0时,f(x)=-1;x=0时,f(x)=0;x>0时,f(x)=1。源程序如下:第2节if语句设计#include<stdio.h>voidmain(){ doublex; inty; printf("请输入x:"); scanf("%lf",&x); if(x<0) y=-1; elseif(x=0) y=0; else y=1; printf("f(%.2f)=%d\n",x,y);}第2节if语句设计2、if语句的嵌套形式C语言允许if语句进行嵌套,即if执行语句中还有if语句。一般形式如下:
if(表达式)if语句;
或
if(表达式)if语句;
elseif语句;但在嵌套中如果出现多个if和多个else时,C语言规定,else总是与它前面最近的if配对。第2节if语句设计例如:在对上述符号函数用下面的语句实现时,结果会出错。doublex;inty;printf("请输入x:");scanf("%lf",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("f(%.2f)=%d\n",x,y);第2节if语句设计3、在使用if语句中还应注意以下问题(1)if语句中的条件表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。(2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行多个语句,则必须把这一组语句用大括号括起来组成一个复合语句。但要注意的是在大括号之后不能再加分号。第2节if语句设计内容实施1、求三角形面积问题。三角形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 丰年虫卵配额制度
- 森林资源管护奖惩制度
- 酒吧歌手奖惩制度规定
- 物业保洁部奖惩制度模板
- 医保经办服务奖惩制度
- 物业服务品质奖惩制度
- 校车接送老师奖惩制度
- 健康教育与宣传护理
- 行政人员工作奖惩制度
- 餐饮部安全操作奖惩制度
- 小班数学认识数字1-5
- LY/T 1705-2007管氏肿腿蜂人工繁育及应用技术规程
- GB/T 5154-2022镁及镁合金板、带材
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
- GB 30509-2014车辆及部件识别标记
- 医学导论-课件
- 细胞生物学CRISPR-CAS9-课件
- 小学科学教育科学三年级上册水和空气 宋伟空气占据空间吗说课稿
- 建筑工程项目管理综合练习及答案
- 楼地面装饰工程计量与计价
- 学生预登信息采集表
评论
0/150
提交评论