




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计
C语言程序设计教学要求知识:掌握程序设计语言的基本知识素质:常用算法能力:初步的程序设计能力学习方法自主学习重视上机实践学生要按时上课和上机、课后要看书、认真独立完成作业成绩评定方式:平时成绩占40%(包括平时考勤、上机作业情况、期中考试);期末成绩占60%如何尽快学会用C语言进行程序设计了解程序设计语言(C语言)模仿、改写、编写通过不断的编程实践,逐步领会和掌握程序设计的基本思想和方法教材和参考书C语言程序设计,何钦铭、颜晖主编,高等教育出版社,2008年第1版
C语言程序设计,梅创社编著.北京理工大学出版社.2010年7月第1版
谭浩强编著.C语言程序设计.清华大学出版社.
杨路明编著.C语言程序设计.北京邮电大学出版社.2005年12月第2版
C语言编程(第3版),[美]Stephen,G.Kochan,张小潘译,电子工业出版社,2006C语言教程(第4版),[美]AlKelley,IraPohl,徐波译,机械工业出版社,2007第一章引言一个C语言程序程序与程序设计语言C语言的发展历史与特点实现问题求解的过程重点:C语言的语法包含的内容、C语言程序的基本框架、
C语言程序的上机步骤1.1一个C语言程序例1-1求阶乘问题。输入一个正整数n,输出n!。#include<stdio.h>/*编译预处理命令*/intmain(void)/*主函数*/{
intn; /*变量定义*/
int
factorial(intn);/*函数声明*/
scanf("%d",&n);/*输入一个整数*/
printf("%d\n",factorial(n));/*调用函数计算阶乘*/return0;}
int
factorial(intn) /*定义计算n!的函数*/{
inti,fact=1;for(i=1;i<=n;i++)/*循环*/ fact=fact*i;returnfact;}输入4输出24C程序由函数组成有且只有一个主函数main
回顾:1、在程序的开始要使用编译预处理命令#include。
2、main()是程序中的主函数。3、int是整型,其后面的n是被定义成整型的变量。4、scanf(“%d”,&n);是输入语句,其中:%d说明从键盘上输入的是十进制整型数据,&n表示输入的数据放在变量n中。5、printf
(“%d\n”,factorial(n));是输出语句,其中:%d说明从屏幕上输出的是十进制整型数据,\n表示回车(换行)。此语句在这里还有函数调用的功能,调用的是用户自定义函数factorial6、return0;是返回语句,一般函数结束调用后都要返回到主调函数中去。这里因为main()是主函数,所以用的是return0。作业1为什么在程序的开始要使用编译预处理命令。2为什么说主函数是不可或缺的(因为C程序由函数组成有且只有一个主函数main),空类型的主函数与整型的主函数在写法上有何不同。3为什么在主函数中一开始就要进行变量定义,变量定义语句的格式。4为什么要进行函数声明,函数声明语句的格式。5怎样通过键盘接收1个整型数据,scanf函数的格式。6例1-1是如何利用标准输出函数printf调用用户自定义函数factorial的,factorial函数的作用是什么。7factorial函数是怎样实现求n的阶乘的8函数定义语句的格式。9factorial函数体中有几条语句,它们的作用是什么。10for循环语句的三要素是什么。11写出累乘器和累加器的形式,它们的初值都是什么。注:将作业题抄题并将答案写到作业本上,本皮上写明班级,姓名和学号。学生练习:要求仿照例1-1求累加和问题。即:输入一个正整数n,输出1+2+3+….+n的和。1.2程序与程序设计语言程序人们为解决某种问题用计算机可以识别的代码编排的一系列加工步骤程序的执行过程实际上是对程序所表达的数据进行处理的过程程序设计语言提供了一种表达数据与处理数据的功能要求程序员按照语言的规范编程1.2程序与程序设计语言程序与指令程序设计语言的功能程序设计语言的语法程序的编译与编程环境1.2.1程序与指令指令:可以完成计算机的一个最基本的功能如实现一次加法运算或实现一次大小的判别计算机的指令系统:是指计算机所能实现的指令的集合程序与指令之间的关系是:程序是一系列计算机指令的有序组合关于程序与指令,下面举1道例题例1-2编写程序,分别求和与乘积先介绍:虚拟的计算机指令系统(共7条指令)指令1:InputX将当前输入数据存储到内存的X单元指令2:OutputX将内存X单元的数据输出。指令3:AddXYZ将内存X单元的数据与Y单元的数据相加并将结果存储到Z单元。指令4:SubXYZ将内存X单元的数据与Y单元的数据相减并将结果存储到Z单元。指令5:BranchEqXYP比较X与Y,若相等则程序跳转到P处执行,否则继续执行下一条指令。指令6:JumpP程序跳转到P处执行。指令7:SetXY将内存Y单元的值设为X。对以上7条指令进行不同组合就可以实现多项功能,具体请看下面的例题:1.2.1程序与指令(1)输入3个数A,B和C,求A+C和B
+C的结果InputA;输入第1个数据到存储单元A中InputB;输入第2个数据到存储单元B中InputC;输入第3个数据到存储单元C中AddACD;将A、C相加并将结果存在D中AddBCE;将B、C相加并将结果存在E中OutputDE;输出D,E的内容对应C语言程序如下:#include<stdio.h>main(){inta,b,c,d,e;a=12;b=24;c=10;d=a+c;e=b+c;printf("a+c=%d,b+c=%d\n",d,e);}程序的运行结果是:a+c=22,b+c=34学生练习:【1】要求仿照上题编程求三个整数之和,并输出。程序与指令(2)输入2个数A和B,求A*B的结果1.InputA;
输入第1个数据到存储单元A中2.InputB;输入第2个数据到存储单元B中3.Set0X;将X设为0,此处X用以统计A累加的次数4.Set0Z;将Z设为0,此处Z用以存放A*B的结果5.BranchEqXB9;判别X与B是否相等;若相等说明A已累加了B次,程序跳转到第9条指令,输出结果6.AddZAZ;Z=Z+A7.Add1XX;X=X+18.Jump5;程序跳转到第5条指令,继续循环执行第6条、7条指令9.OutputZ;
输出Z的值,该值等于A*B对应的C语言程序如下:#include<stdio.h>intmain(){
intA=5;
intB=6;
intx=0;
intz=0;flag5:if(x==B)gotoflag9;elsez=z+A;x=x+1;
gotoflag5;flag9:printf(“%d\n”,z);return0;}
1.2.2程序设计语言的功能1数据表达:是指表达所要处理的数据2流程控制:即控制数据处理的流程下面分别加以介绍:1数据表达(1)数据表达的方法:一般将数据抽象为若干类型,这些类型被称为数据类型。(2)数据类型:是对某些具有共同特点的数据集合的总称.通过数据类型可以知道:A该数据的定义域B在这些数据上可以做些什么(即操作或称运算)例如:整数类型包含的数据:{…,-2,-1,0,1,2,…}作用在整数上的运算有:+、-、*、/等数据表达(3)C语言提供的数据类型分为两大类,即:A基本数据类型:是程序设计语言事先定义好,可供程序员直接使用的,如整型、实型(浮点型)、字符型等B构造类型:是由程序员自己构造的,如数组、结构、文件、指针型等各种数据类型的常量与变量形式常量(常数)与变量
流程控制结构化程序设计方法将复杂程序划分为若干个相互独立的模块模块:一条语句(Statement)、一段程序或一个函数(子程序)等单入口、单出口流程控制任何程序都可以将模块通过3种基本的控制结构进行组合来实现顺序结构循环结构分支结构下面分别加以简单介绍:A)顺序结构(略)B)分支结构即:用分支语句实现分支控制过程,根据不同的条件执行不同的语句(或语句模块)。C)循环结构C语言实现循环控制的过程具体有3种形式,即while语句、for语句、dowhile语句。流程控制语句级控制:3种基本的控制结构顺序控制结构:自然顺序执行分支控制结构(选择结构):根据不同的条件来选择所要执行的模块循环控制结构:重复执行某个模块单位级控制:函数的定义与调用处理复杂问题时,将程序分为若干个相对独立的子程序(函数)1.2.3程序设计语言的语法用程序设计语言所写的程序必须符合相应语言的语法源程序(源代码)是一个字符序列,这些字符序列按顺序组成了一系列“单词”,“单词”的组合就形成了语言有意义的语法单位,一些简单语法单位的组合又形成了更复杂的语法单位,最后一系列语法单位组合成程序1.2.3程序设计语言的语法C语言的主要“单词”(1)标识符:在程序中用来标识各种程序成份,命名程序中的一些实体,如变量、常量、函数、类型、标号等对象的名字C语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线例:以下是合法的标识符:x,c,a1,a2,op,y_1,zhou_prg,radius,prime,program,prg_1,cout,sun,day
以下是不合法的标识符:
a.1,1computer,x+y,!abc,99999,$100,π,3c标识符C语言中标识符要区分大小写例:标识符abc与标识符ABC是不同的标识符
习惯上符号常量用大写字母表示,变量名称用小写字母表示
标准C中,标识符的长度可以是任意的,一般有效长度为8个字符,TURBOC中标识符最大长度为32个字符标识符取名时不能与关键字同名,也不能与系统预先定义的标准标识符(如标准函数)同名,
最好能“见名知义”,以提高程序的可读性一般选用相应英文单词或拼音的缩写形式,尽量不要使用简单代数符号,例如:a,b,c,x,y,z等标识符大多数采用“匈牙利”表示法,每个单词第一个字母大写例如:StudentName、YearMonthDate。关于标识符做一个练习:P15习题1-1对C语言来说,下列标识符中哪些是合法的,哪些是不合法的?
Total,_debug,Large&Tall,Counterl,begin_,2n1.2.3程序设计语言的语法(2)保留字(关键字):它们是C语言规定的、赋予它们以特定含义、有专门用途的标识符例如:类型名称int、float,语句特征if、switch、while,运算符号sizeof等常见关键字有32个,参见书上P308附录1,也可参见下个课件32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile再重申一下:关键字不允许用户重新定义<
C语言程序设计
第一章C语言概述1.2.3程序设计语言的语法(3)自定义标识符:包括在程序中定义的变量名、数据类型名、函数名以及符号常量名最好用:有意义的英文单词,可以见名知意。(4)常量:常量是有数据类型的,如,123、12.34(5)运算符:代表对各种数据类型实际数据对象的运算。如,+(加)、-(减)、*(乘)、/(除)、%(求余)、>(大于)根据运算对象的个数不同,运算符可分为单目运算符、双目运算符和三目运算符,又称为一元运算符、二元运算符和三元运算符1.2.3程序设计语言的语法C语言的主要语法单位(1)表达式:运算符与运算对象组合就形成了表达式。如,2+3*4(2)变量定义:变量也有数据类型,所以在定义变量时要说明相应变量的类型。如:inti;(3)语句:语句是程序最基本的执行单位,程序的功能就是通过对一系列语句的执行来实现的C语言语句必须以分号结束(4)注释:以“/*”开始,以“*/”结束下面,关于前面提到的第3点语句,我还要详细加以介绍(3)语句:表达式语句:表达式加分号“;”分支语句:实现分支控制过程if(a>b)x=a;elsex=b;循环语句:实现循环控制的过程sum=0; /*初始化sum和i*/i=1;while(i<=100){/*while循环语句*/sum=sum+i;i=i+1;}复合语句:用一对“{}”,将若干语句顺序组合在一起就形成了一个程序段(5)函数定义与调用函数:是完成特定任务的独立模块,函数的使用最主要涉及到函数的定义与调用(a)C程序由若干函数组成,其核心成份是函数①必须有一个且只能有一个主函数main(),
主函数的名字为main
②可以是系统预定义的标准函数,如scanf函数、printf函数等函数之间是平行的关系C语言被称为函数式语言①函数头给出函数的特征描述,包括函数的属性、类型、名字、参数及参数类型。例:求最大值函数的函数头:
intmax(inta,intb)/*函数属性缺省,函数类型整型,函数名字max,函数参数x,y,整型*/
②函数体给出函数功能实现的数据描述和操作描述,是程序中用花括号括起的若干语句函数体可以为空,可以没有数据描述部分(b)函数由函数头(函数的说明部分)与函数体(函数的语句部分)两部分组成
例:求两个数中的较大值。作法一:
#include″stdio.h″
intmax(intx,inty)/*求最大值函数{intt;if(x>y)t=x;elset=y;return(t);}
main()/*主函数*/{intmax(intx,inty)
;
inta,b;
intc;
scanf(″%d,%d″,&a,&b);c=max(a,b);/*调用求最大值的函数*/
printf(″max=%d\n″,c);}输入数据:12,3运行结果:max=12作法二:#include<stdio.h>main()/*主函数*/{
int
max(intx,inty);
int
a,b,c;
scanf("%d,%d",&a,&b);c=max(a,b);/*调用求最大值的函数*/
printf("max=%d\n",c);}int
max(intx,inty)/*求最大值函数*/{
intt;if(x>y)t=x;elset=y;return(t);}程序说明:int
max(intx,inty);这1条语句是声明1个返回整型数据并带有2个整型参数的函数。
c=max(a,b);是调用max函数,同时将整型变量a,b的数值做为实参复制给形参x,y。if(x>y)t=x;elset=y;这2条语句是求x和y的值谁大,并把大的值赋给t。首先判别if后面的(x>y),如果条件成立,就执行”t=x;”,否则执行”t=y;”。将求得较大的数t的值,返回给主函数中的c。学生练习:要求仿照上题编程求两个整数中的较小值。(5)输入输出:C语言没有输入输出语句,用库函数printf、scanf等实现,例如前面例题中的例如前面例题中的scanf()和printf()函数就是用来输入输出数据的。1.2.4程序的编译与编程环境程序的编译
程序————》即为计算机直接能理解的指令序列编译器:对源程序进行词法分析、语法与语义分析,生成可执行的代码并直接指出程序中的语法错误编程环境包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程
掌握程序设计语言:根据语言的语法,用语言表达数据、实现程序的控制,并会使用编程环境C语言上机过程源程序
test.c
test.obj
可执行代码
test.exe编译连接运行1.3C语言的发展历史与特点历史1972年:贝尔实验室的DennisRitchie在B语言的基础上设计并实现了C语言1978年:B.W.Kernighan和D.Ritchie(简称K&R)合著的《TheCProgrammingLanguage》是各种C语言版本的基础,称之为旧标准C语言1983年:美国国家标准化协会(ANSI)制定了新的C语言标准,称ANSICC语言的特点1.C语言是一种结构化语言
用函数实现结构模块2.C语言语句简洁、紧凑,使用方便、灵活32个关键字,9种控制语句,程序书写形式自由3.C语言程序易于移植C语言输入/输出功能用库函数实现,编写的程序移植性好4.C语言有强大的处理能力C语言允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,
能直接对硬件进行操作。C语言是高级语言中的低级语言5.C语言编译系统小,生成的目标代码质量高,运行效率高C语言的特点6.数据类型检查不严格,表达式易出现二义性,不具备数据越界自动检查功能,运算符的优先级与结合性对初学者难以掌握C语言中大小写字母代表不同含义1.4实现问题求解的过程问题:求1~100间所有偶数的和。1.问题分析与算法设计求在一定范围内(1~100)、满足一定条件(偶数)的若干整数的和,求累加和
思路:设置一个变量(sum),其初值为0,然后在1~100的数中(i)寻找偶数,将它们一个一个累加到sum中一步累加:sum=sum+i;重复累加,用循环语句实现,在循环过程中:(1)判别i是不是偶数:用分支控制语句来实现(2)对循环次数进行控制:通过i值的变化1.问题分析与算法设计思路——》确定算法算法:一组明确的解决问题的步骤,它产生结果并可在有限的时间内终止算法的描述:自然语言伪代码流程图:算法的图形表示法,具体参见下图:sum=0i=1i<=100i是偶数?sum=sum+ii=i+1输出sum真真假假学生练习:要求仿照上图,做书上P152题2.编辑程序生成程序的源文件,C语言源文件的后缀为.c或.cpp例如,由上图可编辑并生成如下的C语言源文件:#include<stdio.h>intmain(void){
inti,sum=0;
for(i=1;i<=100;i++)if(i%2==0)sum=sum+i;
printf("%d",sum);return0;}
预处理命令说明:1、for(i=1;i<=100;i++)是一个循环,它表示从i等于1的时候开始循环,每循环一次i加上1(i++),只要i的值小于等于100,这个循环就一直进行(也就是说i等于101时就退出循环了),每次循环执行的内容就是它后面的if语句。对于重复执行的问题,用for语句就能轻而易举的解决。2、if(i%2==0)sum=sum+i;表示:如果i是偶数,就将i累加到sum中。i%2==0即为:如果i被2除后余数为0,则说明它是一个偶数。在C语言中,相等的判断用两个等号(==)来表示,不相等的判断用!=来表示。其中i<=100是循环执行的条件,只要这个条件被满足,循环体就会一直反复执行。应该注意到,由于循环体每循环一次,i被加1(i=i+1),所以,当循环到一定的时候,i的值就会超过100,即循环条件i<=100不再满足了,循环就结束了。学生练习:要求仿照上题编程求1~100间所有奇数的和。学生练习:要求仿照上题做做书上P153题#include<stdio.h>intmain(){ intsum=0,i; for(i=1;i<=100;i++) { if(i%6==0) sum=sum+i;//100以内能被6整除的数累加
if(i%6==0)printf("i=%d\n",i);//显示100以内能被6整除的数
}
printf("sum=%d\n",sum);//显示100以内能被6整除的数的累加和
return0;}C程序的书写
(1)一行一般写一条语句。当然一行可以写多条语句,一条语句也可以写在多行上
(2)整个程序采用紧缩格式书写。表示同一层次的语句行对齐,缩进同样多的字符位置。如循环体中的语句要缩进对齐,选择体中的语句要缩进对齐
(3)花括号的书写方法较多,本书采用花括号对齐的书写方式,左边花括号处于第一条语句的开始位置,右边花括号独占一行,与左边花括号对齐
(4)在程序中恰当地使用空行,分隔程序中的语句块,增加程序的可读性3.程序编译连接
编辑程序后,用该语言的编译程序对其进行编译,以生成二进制代码表示的目标程序(.obj),与编程环境提供的库函数进行连接(Link)形成可执行的程序(.exe)。编译程序会指出语法错误
语法错误VS逻辑错误,稍后我会加以介绍1.4实现问题求解的过程4.运行与调试经过编辑、编译、连接,生成执行文件后,就可以在编程环境或操作系统环境中运行该程序如果程序运行所产生的结果不是你想要的结果,这是程序的语义错误(逻辑错误),逻辑错误编译程序不会指出,靠自己去发现。调试:在程序中查找错误并修改错误的过程。调试的方法设置断点单步跟踪调试是一个需要耐心和经验的工作,也是程序设计最基本的技能之一开始结果语法错误源程序.c/.cpp目标程序.obj可执行程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教宁夏 九年级 下册 语文 第五单元《 天下第一楼(节选)》习题课 课件
- 2025年部编版新改版语文一年级下册第三、第四次月考试题附答案(各一套)
- 2025年部编版新教材语文一年级下册第三次月考试题及答案(二)
- 新人教版高中语文必修2在马克斯墓前的讲话 同步练习基础题
- 冷柜出售合同范例
- 以桥为线+时空链接住宅大区项目景观方案设计
- 二手房尾款支付合同范例
- 劳动合同范例 银川
- cctv检测合同范例
- 借条可以转让合同范例
- 国外银发经济发展
- 2025年高考作文素材积累之《人民日报》时评观点摘抄(标题、开头、分论点、结尾)
- 2024年07月上海兴业银行上海分行招考笔试历年参考题库附带答案详解
- 湖北日报传媒集团(湖北日报社)招聘笔试冲刺题2025
- 广东省茂名市2025届高三第二次调研数学试卷含解析
- 环境监测试题库与参考答案
- 公司安全生产事故隐患内部报告奖励工作制度
- 开封市第二届职业技能大赛无人机装调检修项目技术文件(国赛项目)
- 【MOOC】人工智能与信息社会-北京大学 中国大学慕课MOOC答案
- 人美版六年级美术教案下册全册
- 14 三级等保整体设计方案、网络安全等级保护方案
评论
0/150
提交评论