谭浩强c语言函数总结_第1页
谭浩强c语言函数总结_第2页
谭浩强c语言函数总结_第3页
谭浩强c语言函数总结_第4页
谭浩强c语言函数总结_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1 / 45 谭浩强 c语言函数总结 C 语言程序设计课程设计报告 姓名:杨钧翔 学号: 20168110254 区队:四 第一部分 C语言程序设计知识点 梳理 (注 C 语言程序设计所涉及到的重要知识点及对这些知识点的理解 ) 一、程序设计 1、计算机语言 机器语言 用二进制表示的,能被计算机识别、接受的代码称为机器指令。机器指令的集合就是 计算机语言 汇编语言 2 / 45 为客服机器语言的缺点,用符号语言来表示指令的符号语言为符号汇编语言。 一条符号语言指令对应转换为一条机器指令;转换的过程称为 代真 或 汇编 高级语言 客服低级语言的缺点,接近人们习惯用的自然语 言和数学语言;用英语单词表示的指令及语句。功能性强,不依赖于具体机器,对任何型号计算机都适用。 C 语言、 FORTRAN、QBASIC C 语言特点 语言简洁、紧凑,使用方便、灵活 运算符丰富 数据类型丰富 具有结构化的控制语句 语法限制不太严格,程序设计自由度大 C 语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作 用 C语言编写的程序可移植性好 生成目标代码质量高,程序执行效率高 2、运行 C程序的步骤及方法 上机输入和编辑源程序,以文件形式存档。 .c作为后缀,3 / 45 生成源程序文件 对源程序进行编译。进行预处理,连接其它部 分组成完整的、可进行正式编译的源程序 进行连接处理。把所有编译后得到的目标模块连接装配,与函数库想连接成一个整体,生成一个可供计算机执行的目标程序 运行可执行程序,得到运行结果。 二、算法 1、算法的概念 广义的说是 解决一个问题所采用的方法和步骤 计算机算法分为两大类: 1.数值运算算法 2.非数值运算算法 2、算法的特性 4 / 45 有穷性:一个算法应包含有限的操作步骤 确定性:算法中的每一 个步骤都应当是确定的,而不是含糊的、模棱两可的 有零个或多个输入:在执行算法时需要从外界取得必要的信息 有一个或多个输出: 有效性:算法中的每一个步骤都应当有效的执行,并得到确定的结果 3、算法描述 自然语言 即人们日常使用的语言。用自然语言表示通俗易懂,但文字冗长,有歧义。在描述包含分支和循环时不方便 流程图 5 / 45 流程图是用一些图框来表示各种操作。用图形法表示算法,直观形象,易于理解。 流程图包括: 表示操作的框 带剪头的流程线 框内外必要的文字说明 流程图三种基本结构: 顺序结构 选择结构 循环结构: 当型循环 ; 直到 (until)型循环 N-S 流程图 表示算法:全部算法写在一个矩形框内 特点:比文字描述直观、形象、易于理解;比传统流程图紧凑易画,废除了流程线,算法由各个基本结构按顺序组成;流程图中的上下顺序就是执行时的顺序; 表示的算法都是结构化的算法。 结构化的算法是由一些基本结构顺序组 成的;在基本结构之6 / 45 间不存在向前或 向后的跳转,流程的转移只存在于一个基本结构范围之内 三种基本结构的图示: 顺序结构选择结构 循环结构的图示: 当型 (While型 ) 循环结构直到型 (Until型 )循环 伪代码:介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图形符号,书写方便,格式紧凑,修改方便,容易看懂,便于向计算机语言算法过渡。 伪代码写算法并无固定的、严格的语法规则,可以用多种语言。只需把意思表达清楚,便于书写和阅读,书写的格式要写成清晰易读的格式 7 / 45 用伪代码写的算法易于修改 设计算法的目的是为了实现算法,所以不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。在用流程图或伪代码描述一个算法后还要转换成 C语句。 三、基本数据类型及 C语句 1. void main: void 是空的意思,就是在执行完主函数之后不善生一个函数值。有的调用函 数需要传递个值给主函数,那他就不是 void,这个调用的值需要用 return把他调回到 main函数中。 2. 无论 printf/scanf 前面引号中都是:格式。 C 本身都没有输入输出语句,就连 printf, scanf 都是库函数中的。 3. &?取地址 4. #define xx xx:在命令行定义,不仅是主函数,其余函8 / 45 数中也被定义了。 5. 逗号运算:输出最后一个运算的值。并且逗号运算优先级最低,永远是最后一个算。 6. ASKII码对照表 7. 字符数据 ?区别就在赋值上为了方便直接把 ASCII码赋给变量而省去查表 可以 C=T 这种形式但 C必须 是 char的 ?整形数据 8. If else xx: 9. Switch case -: case-: default; 10. 3x?3*x才可以 11. 选择结构: if 和 switch。 循环结构: 12. break 可以跳出 switch 结构 /循环结构 ;而 continue只结束本次循环。 Break跳到循环后 9 / 45 面,而 continue是跳回到循环开始。 13. while(1 14. scanf 不可以接受 n,只有 getchar 可以。 15. C 语言只能引用数组元素而不能直接使用整个数组。只有定义时下标才代表长度。 数组通过 scanf循环写入,通过 printf 循环输出。 16. scanf 必须 & 别忘了!但是对于用 scanf 输入数组不需要 &,而且不需要下标! 1 17. 对于一个数据的定义,需要指定两种属性: Static int a; /*变量在函数结束后留下 */ auto char c; /*自动变量,在函数内定义 */ register int d; /*寄存器变量,读取速度快 */ 另外可以 extern b; /*声明 b 是一个已被定义的外部变10 / 45 量,拓展变量使用范围 */ 18. i_pointer i_pointer=&I; 这么给指针赋值 *i_pointer 与 I 是一个回事儿 任意 这里是地址 19. 给数组赋指针 可以直接 p=a; 20. 对数组从键盘输入数据有几种方法? For(i=0;i 注意这种方法储存完之后要把 p指针归位啊! 21. 选择法和起泡法排列顺序的不同: 选择排序:每一趟在待排序的元素中找出最小元素,然后放到第一个。 11 / 45 起泡排序:每两个间比较一下,慢慢成型。 22. extern 就是扩展使用范围用的 23. 指向数组的指针: Int(*p)4 : p 指向的对象是有 4个整型元素的数组。 通过字符数组名或字符指针变量可以输入一个字符串。而对一个数值型数组,是不能企图用数组名输出它的全部元素的。 指针:内存中的一个地方,用来存放指针变量,就像一个固定的寄存器。 出现数组,函数的地方都可以用一个指针变量来表示会使程序清楚简单高效。指针是一个数据结构的首地址 对于字符串放在一位数组中表示为: ai与 *(a+i) 字符结束语为 0,循环一般用 != 0 来结束 24. 指向函数的指针: Int 12 / 45 当每次调用的函数不一样, 25.指针小结: ? 不能将整数赋给指针变量 p=1000 ? 也不能把指针变量的值赋给一个整型变量 i i=p ? 未对指针赋值很危险,是随机的,可以 p=NULL 就是指向 0 地址 建立结构体 ? 不能把结构体作为一个整体输入输出 ? -为指向运算符 .成员名 p-成员名 :表示 p所指向的结构体 13 / 45 变量中的 num成员。 27. 链表 struct student int num; float score; struct student *next; 28.动态链表 共用体 枚举 与 define 30. 文件时外部储存器上数据的集合。类型用 FILE 。 文件的打开 FILE *fp; fp=fopen 31. exit 的话是在 stdlib 的头文件里面定义的,他是的程序退出,正如 exit 的字面意思一样 break 的话是终止当前14 / 45 循环继续进行循环后面的语句,但是程序照样还在进行 只能 while switch for 中使用 break; 但是可以在任何语句中用 exit; 32. C 语言编程 课程实验报告 1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。 素数定义:除了 1 和它本身外,不能被任何数整除且大于 2的整数。 #include int main() void fun(int n); /函数声明 int n; 15 / 45 printf( input a number which is larger than 2 :n ); scanf(%d,&n); fun(n); /调用函数 void fun(int n) /定义被调用函数 int i,j; for(i=2,j=2;i if(n%i!=0) j+; return 0; else if(j else printf( %d 是素数 !n,n); 16 / 45 2、编写一个函数,由实参传来一个字符串,统计此字 符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 输入程序如下: #include int letter,digit,space,others; int main() void count(char); char text80; printf(input string:n); gets(text); printf(string:); 17 / 45 puts(text); letter=0; digit=0; space=0; others=0; count(text); printf(nletter:%dndigit:%dnspace:%dnothers:%dn,letter,digit,space,others); return 0; void count(char str) 18 / 45 int i; for(i=0;stri!=0;i+) if(stri=a&stri=A&stri letter+; else if(stri=0&stri digit+; else if(stri=32) space+; else others+; 运行结果如下: 分析:在函数内定义的变量是局部变量 ,而在函数之外定义的变量称为外部变量 ,外部变量是全局变量 (也称全程变19 / 45 量 )。全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。 在此题中,由于调用函数的返回值太多,所以运用全局变量避免了返回时所造成的麻烦。故在此题中使 用全局变量比较简便。 此处必须用全局变量,因为在使用局部变量后,在调用的函数中无法识别 letter、 digit、 space 和 others 等变量,必须重新定义并一一返回。 2.用递归法将一个整数转换成字符串。 #include void main() void exchange(int n); /声明转换函数 exchange int n; printf(input a integer number:n ); 20 / 45 scanf(%d,&n); printf(its string is:n ); if(n putchar(-); /输出负号 - n=-n; /将此负数转化为正数处理 exchange(n); /调用转换函数,该函数包括了整数的转换和转换成的字符串的输出 printf(n); void exchange(int m) /定义转换函数 ,其中 m为形参。 21 / 45 int i; if(i=m/10)!=0) exchange(i); 因为 i 和 10都是整数,所以 i=m/10 的结果不会 是浮点型,只能是整 型;根据该编译系统 向零取整 的规则,如果等于 0,说明 m 就只有一位数; 若不为 0,则说明 m是一个多位数,递归调用继续处理 i,使 m 除去个位的数字 printf(%c ,m%10+0); m%10是取余运算,结果为 09之间的整数,即整数 n 的最 后一位数。字符 09的 ASC 代码依次比字符 0的代码大 09, m%10+0表示所要输出的该数的ASC 代码,这样才能使打印 出的是字符09中的某个字符而不是整数 09中的某个整数。 4.用一个 函数来实现将一行字符串中最长的单词输出。此行22 / 45 字符串从主函数传递给该函数。 #include #include 以下 6行,函数 fun,判断是否为字母 int fun(char c) if(c=a&c=A&c return(1); else return(0); 函数 longest,计算最长单词的起始位置 23 / 45 int longest(char string) int i,flag,len=0,length=strlen(string),place,point; flag 表示单词是否开始 ,flag=0 表示未开始 ,flag=1 表示单词开始 ; len表示单词已累计的字母个数 ;length表示先前单词中最长单词的长度 ; point 表示当前单词的起始位置 ;place表示最长单词的起始位置 for(i=0;i if(fun(stringi) 判断是否为字母 if(flag) 是,开始 flag=0; point=i; 24 / 45 else len+; 进入计算, +1 else 不是,比较已统计 flag=1; if(len=length) length=len; place=point; 25 / 45 len=0; return(place); 主函数,调用 longest计算最长单词的起始位置,并输出 C 语言教程 1 C语言概述 语言的发展过程 语言是在 70 年代初问世的。一九七八年由美国电话电报公司 (AT&T)贝尔实验室正式发表了 语言。同时由和合著了著名的 THE C PROGRAMMING LANGUAGE 一书。通常简称为 K&R,也有人称之为 K&R标准。但是,在 K&R中并没有定义一个完整的标准 C 语言,后来由美国国家标准协会在此基础上制定了一个 C 语言标准,于一九八三年发表。通26 / 45 常称之为 ANSI C。 当代最优秀的程序设计语言 早期的 C 语言主要是用于 UNIX 系统。由于语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代, C 开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。 语言版本 目前最流行的语 言有以下几种: Microsoft C 或称 MS C Borland Turbo C 或称 Turbo C AT&T C 这些语言版本不仅实现了 ANSI C 标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。 27 / 45 语言的特点 1C 9 Turbo C 扩充了 11个关键字: asm _cs _ds _es _ss cdecl far huge interrupt near pascal 注意:在 C语言中,关键字都是小写的。 2 运算符丰富。共有 34 种 。 C 把括号、赋值、逗号等都作为运算符处理。从而使 C 的运算类型极为丰富,可以实现其他高级语言难以实现的运算。 3 数据结构类型丰富。 4 具有结构化的控制语句。 5 语法限 制不太严格,程序设计自由度大。 28 / 45 6C 语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。 7 生成目标代码质量高,程序执行效率高。 8 与汇编语言相比,用 C 语言写的程序可移植性好。 但是, C 语言对程序员要求也高,程序员用 C 写程序会感到限制少、灵活性大,功能强,但较其他高级语言在学习上要困难一些。 面向对象的程序设计语言 在 C 的基础上,一九八三年又由贝尔实验室的 Bjarne Strou-strup推出了 C+。 C+进一步扩充和完善了语言,成为一种面向对象的程序设计语言。 C+目前流行的最新版本是 Borland C+, Symantec C+和 Microsoft VisualC+。 C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题 空间直接地映射到程序空间,为程序员提29 / 45 供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。 和 但是, C 是 C+的基础, C+语言和语言在很多方面是兼容的。因此,掌握了语言,再进一步学习 C+就能以一种熟悉的语法来学习面向 对象的语言,从而达到事半功倍的目的。 简单的程序介绍 为了说明语言源程序结构的特点,先看以下几个程序。这几个程序由简到难,表现了语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个 C源程序的基本部分和书写格式。 【例】 main() 30 / 45 printf(世界,您好! n); ? main是主函数的函数名,表示这是一个主函数。 ? 每一个 C 源程序都必须有,且只能有一个主函数(main函数 )。 ? 函数调用语句, printf 函数的功能是把要输出的内容送到显示器去显示。 ? printf 函数是一个由系统定义的标准函数,可在程序中直接调用。 【例】 #include #include 31 / 45 main() double x,s; printf(input number:n); scanf(%lf,&x); s=sin(x); printf(sine of %lf is %lfn,x,s); ? include 称为文件包含命令 ? 扩展名为 .h的文件称为头文件 ? 定义两个实数变量,以被后面程序使用 32 / 45 ? 显示提示信息 ? 从键盘获得一个实数 x ? 求 x的正弦 ,并把它赋给变量 s ? 显示程序运算结果 ? main函数 结束 程序的功能是从键盘输入一个数 x,求 x的正弦值,然后输出结果。在 main()之前的两行称为预处理命令 (详见后面 )。预处理命令还有其它几种,这里的 include 称为文件包含命令,其意义是把尖括号或引号 内指定的文件包含到本程序来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为 .h。因此也称为头文件或首部文件。语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程 序中调用一个库函数时,都必须包含该函数原型所在的头文件。在本例中,使用了三个库函数:输入函数 scanf,正弦函数 sin,输出函数 printf。 sin函数是数学函数,其头文件为文件,因此在33 / 45 程序的主函数前用 include命令包含了。 scanf和 printf是标准输入输出函数,其头文件为,在主函数前也用 include命令包含了文件。 需要说明的是, C语言规定对 scanf 和 printf这两个函数可以省去 对其头文件的包含命令。所以在本例中也可以删去第二行的包含命令 #include。 同样,在例中使用了 printf 函数,也省略了包含命令。 在例题中的主函数体中又分为两部分,一部分为说明部分,另一部为分执行部分。说明是指变量的类型说明。例题中未使用任何变量,因此无说明部分。语言规定,源 程序中所有用到的变量都必须先说明,后使用,否则将会出错。这一点是编译型高级程序设计语言的一个特点,与解释型的BASIC 语言是不同的。说明部分是 C 源程序结构中很重要的组成部分。本例中使用了两个变量 x, s,用来表示输入的自变量和 sin函数值。由于 sin 函数要求这两个量必须是双精度浮点型,故用类型说明符 double 来说明这两个变量。说明部分后的四行为执行部分或称为执行语句部分,用以完成程序的功能。执行部分的第一行是输出语句,调用 printf函数在显示器上输出提示字符串,请操作人员输入自变量 x34 / 45 的值。第二行为输入语句 ,调用 scanf函数,接受键盘上输入的数并存入变量 x 中。第三行是调用 sin函数并把函数值送到变量 s 中。第四行是用 printf 函数输出变量 s 的值,即 x 的正弦值。程序结束。 运行本程序时,首先在显示器屏幕上给出提示串 input number,这是由执行部分的第一 行完成的。用户在提示下从键盘上键入某一数,如 5,按下回车键,接着在屏幕上给出计算结果。 输入和输出函数 在前两个例子中用到了输入和输出函数 scanf 和 printf,在以后要详细介绍。这里我们先简 单介绍一下它们的格式,以便下面使用。 scanf 和 printf 这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输入输出值。因此,这两个函数在括号中的参数表都由以下两部分组成: 格式控制串 ,参数表 35 / 45 格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅第三章。在 printf 函数中还可以在格式控制串内出现非格式控制字符,这时在显示屏幕上将原文照印。参数表中给出了输入或输出的量。当有多个量时,用 逗号间隔。例如: printf(sine of %lf is %lfn,x,s); 其中 %lf 为格式字符,表示按双精度浮点数处理。它在格式串中两次现,对应了 x 和 s两个变量。其余字符为非格式字符则照原样输出在屏幕上。 【例】 int max(int a,int b); /*函数说明 */ main() /*主函数 */ int x,y,z; /*变量说明 */ 36 / 45 int max(int a,int b); /*函数说明 */ printf(input two numbers:n); scanf(%d%d,&x,&y); /*输入 x,y值 */ z=max(x,y); /*调用 max函数 */ printf(maxmum=%d,z); /*输出 */ int max(int a,int b) /*定义 max 函数 */ if(ab)return a;else return b; /*把结果返回主调函数 */ 37 / 45 上面例中程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数和 max 函数。函数之间是并列关系。可从主函数中调用其它函数。 max 函数的功能是比较两个数,然后把较大的数返回给主函数。max 函数是一个用户自定 义函数。因此在主函数中要给出说明 (程序第三行 )。可见,在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。关于函数的详细内容将在以后第五章介绍。在程序的每行后用 /*和 */括起来的内容为注释部分,程序不执行注释部分。 上例中程序的执行过程是,首先在屏幕上显示提示串,请用户输入两个数,回车后由 scanf函数语句接收这两个数送入变量 x,y 中,然后调用 max函数,并把 x,y 的值传送给 max函数的 参数 a,b。在 max 函数中比较 a,b 的大小,把大者返回给主函数的变量 z,最后在屏幕上输出 z的值。 源程序的结构特点 1.一个语言源程序可以由一个或多个源文件组成。 2.每个源文件可由一个或多个函数组成。 38 / 45 3.一个源程序不论由多少个文件组成,都有一个且只能有一个 main函数,即主函数。 4.源程序中可以有预处理命令 (include 命令仅为 其中的一种 ),预处理命令通常应放在源文件或源程序的最前面。 5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号 之后不能加分号。 6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。 书写程序时应遵循的规则 从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则: 1.一个说明或一个语句占一行。 2.用 括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行。 39 / 45 3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。 在编程时应力求遵循这些规则 ,以养成良好的编程风格。 语言的字符集 字符是组成语言的最基本的元素。语言字符集由字母,数字,空格,标点和特殊字

温馨提示

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

评论

0/150

提交评论