第1章 C语言概述_第1页
第1章 C语言概述_第2页
第1章 C语言概述_第3页
第1章 C语言概述_第4页
第1章 C语言概述_第5页
已阅读5页,还剩27页未读, 继续免费阅读

下载本文档

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

kok电子竞技:文档简介

第1章C语言概述C语言简介程序和程序设计语言C语言的发展史C语言的特点C语言的语法成分C语言程序的基本构成C语言程序的编译过程

从本章开始我们正式进入C语言程序设计的学习,也许大家会问:为什么我们要学习C语言呢?理由1:因为C语言流行.

理由2:因为C语言在各种程序考试中必考。理由3:因为它是必修课,是老师逼的,不学不能拿学分。

……

理由n:……别急!让我想想……

这些理由都只是从表面上来回答,其实要真正来回答这一问题,我们有必要了解程序、计算机语言、知道C语言是属于哪种类型的语言;C语言是如何产生和发展的,C语言的特点有哪些,它应用在哪些方面等,这样我们就可以做到学习目的明确,才能有意识地去学好C语言程序设计。

问……什么是计算机程序?什么是计算机语言?什么是C语言?(C的发展)为什么要学程序设计?为什么选C语言?……了解程序设计语言的发展及其特点;掌握机器语言、汇编语言和高级语言的差异;了解C语言的发展历史及特点和应用;掌握C语言程序的基本结构;掌握编写C程序的基本步骤和调试过程。学习目标

程序设计语言的发展经历了三个阶段:

机器语言是用二进制表示的,计算机能直接识别和执行的语言

如:10000000(加)10010000(减),机器语言执行速度最快。由于用二进制表示,因而程序可读性差,非专业人员难于掌握二进制指令通过符号化

如ADDA,B汇编程序

机器语言汇编语言高级语言面向过程面向对象

高级语言表达方式接近被描述的问题,接近于自然语言和数学表达式,易于人们接受和掌握1.C语言发展史(丹尼斯·里奇与肯·汤普逊)ALGOL60语言

CPL语言

CombinedProgrammingLanguage1963年,剑桥大学BCPL语言

1967年,剑桥大学的MatinRichards对CPL语言进行了简化B语言

C语言

1970年,美国贝尔实验室的KenThompson将BCPL进行了修改将CPL语言煮干,提炼出它的精华1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言BCPL的第二个字母作为这种语言的名字,这就是C语言

C++

在C的基础上,1983年又由贝尔实验室的BjarneStrou-strup推出了C++

C语言发展史产生背景产生过程时间:1972~1973

地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准

标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年

89ANSIC:1989年

1990年国际标准的ANSIC99ANSIC:1999年2.C语言的特点(1)高效性:C程序往往紧凑且运行速度快。(2)移植性:C程序不经修改或很少修改就可以到其他系统上运行。(3)运算符丰富:有算术、关系、逻辑、位、自增/自减、赋值运算符等等。(4)数据结构丰富:数据类型有整型、实型、字符、数组、指针、结构体等,能实现如链表、树、栈等结构运算。(5)标准库函数丰富:它的标准库包含了数百个函数。

(6)对硬件操作:能直接访问内存的物理地址,并进行位操作。(7)自由度大:语法限制不严格。如:不检查数组下标是否越界,整型与字符型可通用,条件可用0和非0表示假与真,指针操作灵活等。1.C语言的字符集2.标识符3.关键字4.运算符5.分隔符6.注释符基本语法成分在程序中使用的变量名、函数名、标号等统称为标识符,用来标识各种程序成分。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。在使用标识符时还必须注意以下几点:(1)在标识符中,大小写是有区别的。例如BOOK和book是两个不同的标识符。习惯上符号常量用大写字母表示,而变量名等用小写字母表示。(2)标识符虽然可由程序员随意定义,但不能与关键字同名,也不能与系统预先定义的标准标识符(如标准函数)同名关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。如类型说明符int,double等;语句特征if、switch、while等;预处理命令include、define等。关键字是构成C语言的语法基。没Фㄒ宓谋晔斗挥τ牍丶窒嗤,也不能对关键字进行重新定义。C语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。根据参加运算对象的个数,运算符可分为单目运算符、双目运算符和三目运算符。C语言中的分隔符有逗号和空格两种,逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字、标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误。例如把“inta;”,写成“inta;”,C编译器会把“inta”当成一个标识符处理,其结果必然出错。

关键字注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序时,对暂不使用的语句也可用注释符括起来,使编译跳过不作处理,待调试结束后再去掉注释符。也可使用“//”

作单行注释。表1.1C语言中的关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile关键字为小写字母;不允许使用关键字为变量、数组和函数等操作对象命名。

标识符练习1、下列选项中,可以作为C语言标识符的是()

A)3stuB)#stuC)stu3D)stu.32、以下不能定义为用户标识符的是() A)MainB)_0C)_intD)int3、以下叙述中错误的是() A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识4、下列选项中,不可以作为C语言标识符的是()

A)numB)turbo?_cC)printfD)student35、以下不合法的用户标识符是() A)j2_KEYB)DoubleC)4dD)_8_6、合法的C语言标识符是()。

A)_a1B)a+bC)3abcD)AB,CD7、以下选项中不合法的用户标识符是:()

A)_xyzB)IntC)a_123D)1238、以下选项中合法的用户标识符是:() A)_123B)intC)si%D)1_ads9、以下选项中合法的用户标识符是:()

A)sinedB)printfC)aa$D)a-1.C语言程序的基本结构

了解了C语言的基本特性及其应用以后,接下来就来看看C语言程序是什么样子。一个C语言程序可以是非常简单的,也可以是特别复杂的,这取决于程序所要实现的功能。我们先来认识一个最为简单的C程序。【例1】最简单的C程序。#include<stdio.h>intmain(){printf(“Hello,我是C语言,谢谢你关注我哦!\n");

return0;}函数体语句结束标志

运行结果:Hello,我是C语言,谢谢你关注我哦!main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,并且只能有一个主函数(main函数),这是整个C程序运行的入口点

printf是C语言中的输出函数,是一个由系统定义的标准函数,可在程序中直接调用,它的功能是把要输出的内容送到显示器去显示。双引号内字符串原样输出,“\n”是回车换行符。

C语言规定:语句以分号结束【例2】计算输入的两个整数的和。/*求两数的和。*/#include<stdio.h>intmain(){inta,b,sum;/*这是定义变量*/a=12;b=34;sum=a+b;printf("Thesumis%d\n",sum);

return0;}数据类型名定义的变量名,以“,”分隔两个赋值语句,使a和b的值分别为12和34调用内部函数,输出计算的和数求和的值给sum运行结果:thesumis46“%d”是输入输出的格式字符串,用来指定输入输出时的数据类型和格式

【例3】计算输入的两个整数的最大值。/*ThisisthethirdCprogram*/#include<stdio.h>intmax(inta,intb);intmain(){intx,y,z;printf("Inputtwonumbers:\n");scanf("%d%d",&x,&y);z=max(x,y);printf("maxnum=%d\n",z);

return0;}intmax(inta,intb){

if(a>b)

returna;elsereturnb;

}自定义函数声明自定义函数调用自定义函数max带两个形参返回a、b中最大值返回值为整型数假设输入:1020↙

运行结果:max=20调用内部函数,接受键盘输入数据通过以上例子可以看出:1.一个C语言源程序可以由一个或多个源文件组成,每个源文件以“.c”作为扩展名。

C程序有且仅有一个main函数,用户也可以自己根据需要设计自己的函数,像上面的max()函数。2.一个可执行的C语言程序总是从main函数开始执行,并在main函数中结束,而不论其在整个程序中的位置如何。3.每条语句和数据定义的最后必须有一个分号(;)。说明:在以下三种情况下不允许有分号:

a.函数头后面不使用分号;

b.在右花括号“}”后面不使用分号;

c.预处理语句后面不使用分号。while(i<=100){i++;s=s+i;};max();{……}#include<math.h>;4.C语言中没有专门的输入、输出语句。输入输出是通过scanf和printf两个库函数实现的。5.C程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。6.可用/*……*/对C程序中的任何部分作注释,注释可以写在程序的任何位置上,“/*”与“*/”也可不在同一行上。也可用“//”注释1行。7.在C语言中,大小写字母是有区分的(即大小写敏感)。由前得出一般C语言程序的构成如下:#include<stdio.h>intmain()/*主函数*/{

变量定义部分;

[变量赋初值部分;]

语句执行部分;

return0;}1.3C程序的执行过程1.编辑:选择适当的编辑程序,将C语言源程序通过键盘输入到计算机中,并以文件的形式存入到磁盘中(.C)2.编译:即将源程序翻译成机器语言程序的过程。编译出来的程序称为目标程序(.OBJ)3.链接:编译后生成的目标文件经过链接后生成最终的可执行程序(.EXE)4.运行:运行是将可执行的目标程序投入运行,以获取程序的运行结果;在操作系统中可以直接执行扩展名为.EXE的文件编辑程序代码的录入,生成源程序*.c编译语法分析查错,翻译生成目标程序*.obj链接与其它目标程序或库链接装配,生成可执行程序*.exe运行开始编辑编译有错?链接执行结果正确?结束源程序file.c目标程序file.obj库函数和其它目标程序可执行程序file.exe不正确正确有无

调试C程序的流程C语言的编辑、编译和运行1.

找出下列程序中的错误。#include<stdio.h>intmain(){ printf("你有没有觉得C语言萌萌哒?\n") return0}2.下面程序的功能是:打印输出一个由“*”构成的矩形图案。请分析错误。intmain() { printf("******\n"); printf("******\n"); printf("******\n"); printf("******\n"); return0; } 3..

找出下列程序中的错误。#include<stdio.h>intmain(){ intprice1,price2=2500; price1=2500; price2=price1/2; PRINTF("price2=%d\n"); return0;}C语言第1次上机作业输出以下字符:Hello,我是C,请为我点赞!输出如下图形:*********从键盘上输入两个整数a和b,输出a与b的和。从键盘上输入两个两位整数,将它们合并为一个整数。例如,输入12和34,输出1234。编程输入/输出你的个人信息。看看下面程序的运行结果是什么。。。#include<stdio.h>intmain(){intx,y;x=3;y=6;printf(“%d,%d,%d”,x+y,x-y,x*y);printf(“\n”);return0;}1.4程序与算法程序包括:

(1)对数据的描述数据结构

(2)对数据处理的描述算法算法(algorithm)是对特定问题求解步骤的一种描述。可将程序总结为:

程序=算法+数据结构+程序设计方法+语言工具和环境人们使用计算机,就是要利用计算机处理各种不同的问题,而要做到这一点,人们就必须事先对各类问题进行分析,确定解决问题的具体方法和步骤,再编制好一组让计算机执行的指令即程序,让计算机按人们指定的步骤有效地工作。这些具体的方法和步骤,其实就是解决一个问题的算法。根据算法,依据某种规则编写计算机执行的命令序列,就是编制程序,而书写时所应遵守的规则,即为某种语言的语法.1算法(Algorithm)的概念

【例1】输入3个数,求其最大值。问题分析:设num1,num2,num3存放3个数,max存放其最大值。为求最大值,就必须对3个数进行比较,可按如下步骤去做:⑴输入3个数num1,num2,num3。⑵先把第1个数num1的值赋给max。⑶将第2个数num2与max比较,如果num2>max,则把第2个数num2的值赋给max(否则不做任何工作)。⑷将第3个数num3与max比较,如果num3>max,则把第3个数num3的值赋给max(否则不做任何工作)。⑸输出max的值,即最大值。2算法的基本特征

一个算法应具有以下5个基本特征:有穷性确定性有效性有零个或多个输入有一个或多个输出

算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。也就是说,对于一个算法,要求其在时间和空间上均是有穷的。例如:一个采集气象数据并加以计算进行天气预报的应用程序,如果不能及时得到结果,超出了可以接受的时间,就起不到天气预报的作用。

算法中的每一步都必须有明确的含义,不允许存在二义性。例如:“将成绩优秀的同学名单打印输出”,在这一描述中“成绩优秀”就很不明确,是每门功课均为95分以上?还是指总成绩在多少分以上?

算法中描述的每一步操作都应能有效地执行,并最终得到确定的结果。例如:当Y=0时,X/Y是不能有效执行的。

3算法的表示

用自然语言表示用流程图表示用伪代码表示计算机语言表示算法

自然语言可以是中文、英文、数学表达式等。用自然语言表示通俗易懂,缺点是可能文字过长,不太严格,表达分支和循环的结构不很方便。【例2】求1+2+…+100的值s。

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法的,它不用图形符号,因此,书写方便,格式紧凑,也容易懂,同时也便于向计算机语言算法的转换。【例4】用伪代码表示求10!的算法。begin(开始)

置t的初值为1(1t)置i的初值为2(2i)当(while)i<=10,执行(do)

begin

使t=ti

使i=i+1end

打印t的值(printt)end(结束)。

计算机是无法识别流程图和伪代码形式,只有用计算机语言编写的程序才能被计算机执行。因此在用流程图和伪代码形式描述出算法后,还要将它转换成计算机语言程序。【例5】用C语言程序来描述求10!。#include<stdio.h>intmain(){inti,t;t=1;i=2;while(i<=10){t=t*i;i=i+1;}printf("%d\n",t);return0;}处理框判断框终点框过程框I/O框流程线连接点准备框下图列出了标准的流程图符号:

程序设计的基本算法穷举法迭代算法递推算法递归算法算法举例1:对一个大于2的正整数,判断它是不是一个素数。方法:将n(其中n>2)作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。算法表示如下:S1:输入n的值S2:2i(i作为除数)

S3:n被i除,得余数rS4:如果r等于0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5S5:i+1iS6:如果in-1,返回S3;否则,打印n“是素数”,算法结束。算法举例2:求1-1/2+1/3–1/4+…+1/99–1/100。S1:1sS2:1sumS3:2dS4:(-1)*ssS5:s*(1/d)tS6:sum+tsumS7:d+1dS8:若d100返回S4;否则算法结束。算法举例3:用伪代码表示算法:用介于自然语言和计算机语言之间的文字和符号来描述算法

算法举例4:用计算机语言表示算法

main(){ints=1;floatd=2.0,sum=1.0,t;while(d<=100){s=-s;t=s/d;sum=sum+t;d=d+1;}printf(“%f”,sum);}

温馨提示

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

评论

0/150

提交评论