《2022年C语言速成及格课 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言速成及格课 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录: 1. C语言概要2.变量3.计算 4.判断5.循环6.函数7.数组8.指针9.字符(串)附录 1:学习 C 语言的方法。附录 2:编程的一些技巧。附录 3:使用电脑的一些经验和技巧。1.C语言概要C语言是一种机器的语言,不是数学语言也不是人类语言,我们只有通过严格规范的格式,才能让电脑读懂我们的想法。由于是美国人发明的语言,所以里面的语法都是由英文构成的,但是用到的单词就那么三十几个,只需要理解它的语法和结构就行了。C语言作为最接近底层的语言,单片机和windows 系统都是由C语言写的,所以学好C语言对于电科这个专业来说尤其重要,不能仅仅是奢求一个及格,希望大家有空能重新系统性的学习
2、一下。一个 C 语言程序有很多规定了的语法或者概念,最重要的有如下几个。1.每一行代码语句后面必须都附上一个英文半角的分号,除了几个特别的情况 (头文件后面,函数定义后面,条件、循环、分支等语法语句后面)2.所有 C语言程序都必须有头文件,即在程序开始前的准备工作,电脑需要准备读取哪几个头文件里的函数以便使用。开头为:include ,此外还有用于数学计算的math.h 头文件,用于字符或字符串操作的string.hctype.hstdlib.h 等头文件。 Scanf输入函数和printf 输出函数就在stdio.h 这个头文件里,如果没有这个头文件,电脑就不知道这个函数是什么意思的有什么功
3、能。3.程序最开始的理解分析代码的地方是从main ()函数开始的,这个函数一般写为int main(void)或者 void main(void) ,括号里的void 可以省略不写,void 表示为空,在main 函数里,等读到了哪一行需要使用其他函数的时候才会跳出去看其他代码,看完函数后又会回到main 函数里。4.注释是由 / 来识别的,一行代码后面加上两个反斜杠,然后这一行后面的内容都会变为灰色的,不被计算机所处理,也可以用/* 注释 */ 来完成一大片的注释,而不是局限于某一行,注释的作用很关键,不仅仅能让自己的思路更清晰,也能增加代码的可读性,还能作为某些情况下,调试程序的一个敲门
4、,即注释掉某一段代码,看看是不是这里出错了。2.变量变量就像一个个房间,有大有小,有专门用来洗澡的浴室,也有专门用来睡觉的卧室。我们把需要使用的数据放到变量里,进行加减乘除等运算。声明表示告诉计算机它的类型,定义是指让这个变量得到具体数据内容。常用的变量主要有以下几个数据类型。char 型:用于处理如字母,特殊字符,阿拉伯数字,之类的数据,在函数中以%c 的形式使用。 很多题牵扯到ascll 码表,这是重点, 大家网上查一下重点了解这个表是什么东西。int 型:用于处理整数数据,可以存放的数字大小范围是-2147483648 ,2147483647 。以%d 的形式使用。long int 型:
5、同样是整数,比上面的大小要更大一些。以%ld 的形式使用。float 和 double 型:后者比前者范围更大,用于处理带小数点的数据,以%f 和%lf 的形式使用。使用之前需要声明,比如:int a = 3; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 注:使用变量时需要注意格式,如果一个double 型的数据用 %d 输出,小数点后面的数据就会丢失,要注意变量类型的统一。3.计算C语言中的计算并不是单纯的数学计算,不能直
6、接联立两个二元一次方程让电脑解,必须要转化和分解成电脑能够理解的格式。比如: 3x2+2x+1=0 这个一元二次方程,需要使用变量a,b,c 分别把3,2,1 表示出来,然后令 q = b*b-4*a*c; 再调用 math.h 头文件里的sqrt()开平方函数将q 开平方,再声明两个能表示带小数点的double 型变量 X1,X2,用来存放方程的解。即:X1 = (-b+sqrt(q) )/(2*a); 这里面的计算,等于号“=”表示的是赋值,将右边的计算式子结果赋予左边的变量。而不是数学意义上的一个方程等号。此外还有逻辑运算符,&表示并且“前后的条件都必须为真”,| 表示或者“前后的条件必
7、须至少有一个为真”。 (注:“| ”这个符号是按住shift 再按回车键上方的那个键。)eg. If(a0&b0) 表示“如果a 大于 0 并且 b 大于 0 都为真”。4.判断C语言程序里,判断一般出现在括号里,也就是各种语句里,而不是普通写在外面分号结束的代码。比如if(ab),while(a100)。常用的关系运算有如下几种:相等: = 不相等:!= 大于: 大于等于: = 小于: 小于等于: = 5.循环C 语言里最简单的两种循环是for 循环和 while 循环, 此外还有一种类似于while 循环,但是是先执行一遍循环体再判断是否继续循环的结构叫do-while 循环。循环是赋予C
8、 语言乃至计算机灵魂的一种能力,正因为有了循环,解决了很多重复性的工作,也能细致的对一大堆数据进行操作处理。For 循环的格式是:for(初始变量;判断条件;循环后的操作),分号前后的三个空都可以是空出来,如果不需要用到某一个地方的话。While 循环的格式是:while(判断的条件)比如我想得到1 到 100 的数的和,那么我们就可以使用循环。Eg. #include int main() 或者:inti,sum=0; int i=1,sum=0; for(i=1;i=100;i+) while(ib) 省略那个花括号。 即: return a; if(ab) return a; else
9、else return b; return b; 这样就完成了a 和 b 谁大的判断, 函数是有返回值的,这个返回值的类型必须与声明和定义的类型一致,假设我们声明了一个长整型变量叫big,我们在调用的时候可以这样写:big = bigger(a,b); 这样就完成了函数的调用和返回值的使用,如果这个函数是void 型的,也就是说不需要返回值, 这个函数里面是一些输出或者有指针操作的计算语句。那就不需要返回值,也不需要将返回值使用赋值到哪个变量上。注意调用这个函数的时候,前后的a 和 b 的先后关系是对应着的,ab 的数据类型也要对应,在定义和声明中括号里的int a 和 int b 叫形式参数
10、,在main 函数调用时写的a 和 b叫实际参数。在函数里的数据叫局部变量,main 函数里已经定义了一个变量i 的话, 在函数里, 可以重新声明一个变量i,而且与 mian 函数里的全局变量不冲突。同样的, 如果不使用指针,函数里的数据计算,是无法通过return 返回以外的方法传递出去的。7.数组数组的概念有点类似与变量,其实就是一串变量放到一起了,开头我们假设变量是房间,那么一个数组就像宿舍一样,整整一排过去都是电科1502,有 8 个房间,是连续的。那么我们就可以认为这是一个数组,像intclassTwo8;这样来声明它。在数组有关的OJ题目中,或者考试题目中,一般会用到以下几种常见的
11、操作:已知数组的长度为n。for(i=0;in;i+) for(i=0;in;i+) scanf(“ %d” ,&arri;/ 录入数据scanf(“ %d” ,&arri;/ 输出这个数组 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 同理,利用i 作为计数器还可以做到许多较为复杂的在数组中进行判断操作的功能,比如找出这个数组中的最小值或者最大值,又比如删掉数组中的某一个元素。这里需要注意的是,数组的下标是从0 开始的,可不
12、是我们习惯性的1 哦,在这个for循环里,还可以进行嵌套,for 里面套一个if 判断语句,注意格式规范要缩进,把花括号上下对齐,这样才不容易搞糊涂。8.指针指针是 C 语言最伟大的地方之一了,但也是最容易出问题的地方了,使用不当的话很容易造成内存访问出错导致程序崩溃,而且很多情况下编译器是不会提示错误信息的。之后的高级语言比如java 都改进了内存的自动分配,但C 语言没有类似的功能,我们又不能舍弃指针带来的方便性,所以使用起来必须严格规范。指针的概念是什么呢?指针它可以是一个变量,你也可以用const 把它固定(这个为扩展知识,大家可以查查书)。我们来举个例子,有一个房间里住着相怡林和他的
13、舍友,另一个房间里空空如也,只有地上有一张纸条,上面写着C03N217,那么这个只有一张纸条的空房间就是指针,他的作用就是储存一个变量的地址,指向那个变量。放到C语言中就是:int room = 4; int *proom = &room; /& 符号表示读取room 的地址,是个寻址运算符。这里便是对刚刚那个例子的表示,room 作为一个普通的长整型变量储存着他的值“4个人” ,而 proom 表示 room 的地址,如果打开编译器的调试功能,在watch 窗口里能看到proom 的值可能为0X808080 一样的数据,这表示在计算机内存中room 所在的位置。指针的定义就可以像刚刚那样声明
14、定义的那样使用,当然还有其他几种灵活的使用方法,大家可以看看课本和视频。之前在函数那部分我们说过,函数中的数据只在函数里有效,除非使用的是全局变量,但全局变量会额外消耗计算机的内存,我们来举个最简单的需要得到多个数据的指针使用的例子。void swap(int *pa,int *pb) int t = *pa; int *pa = *pb; int *pb = t; 这样我们在main 函数,或者其他函数中调用(这叫函数嵌套)的时候,swap(&a,&b);就可以完成a 和 b 的数值交换这里我还写了一个找到三个变量最大值的函数,虽然这样的功能完全不必要使用指针,直接return一个最大值就好
15、了,这样多此一举。所以指针在函数中使用的意义就在于,我在函数中需要得到多个数据,而return 只能返回一个值。所以我们一般用函数返回值得到一个状态,用指针得到数据。比如一个写除法的封装起来的函数,如果被除数为0,我们返回一个 -1 表示出错,这个函数就不继续算了,正确运算后返回一个0。而除法算完得到的数据我们用指针来得到。 (void findmax(int *pa,int *pb,int *pc,int *max)这个函数代码我贴到网站里。 http:/ 。如果函数指针是一个数组的话,需要这样写:findMax(intarr); 这里中括号里面什么都不加, 写了长度也没用, 因为数组本身就
16、是一个指针,它表示的是这个数组第一个变量的位置,即 arr0 ,所以拿这个替换掉arr 也是一样的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 9.字符(串)字符和字符串的处理是C语言的难点之一, 有可能会出比较复杂的题。字符我们之前说过,字符是指计算机中使用的字母、数字、字和符号, 包括:1、 2、3、A、B、C、! #¥ %,* () +等等。在 ASCII 编码中,一个英文字母字符存储需要1 个字节,而ascll 码表
17、可以把这些字符用一个数表示出来,比如大写的A是 65,小写的 a是 97,在字符有关的题目中,我们可以把字符转化为数字,即跟int 型的数据一样拿来运算,让一个大写字母的值加上32,就变成了小写字母。放在 C 语言中, 字符是要用单引号括起来的,比如我们输入一个小写字母:char x; scanf(“ %c” ,&x); x -= a ;/ 等价于 x = x a ; printf( “ %d” ,x); 这样我们就能得到这个字母与小写字母a 的相对位置,即这个字母在字母表中排第几。这里便是一个对数据类型的灵活运用,在这种情况下,char 型的数据用 %d 来输出,不会发生 int 型输出 d
18、ouble 类型导致数据丢失的错误,而是输出了这个字符的ascll码的值。字符串其实是一个char 型的数组,比如我们声明定义一个数组:char word = H, e, l, l , o, ! , 0 ;/ 这就定义了一个字符串Hello!char word = “ Hello!” ;/ 如果使用双引号还可以这样定义。字符串最后一位是以一个反斜杠加零表示结束的。在最开始说的几种处理字符串的头文件中,包含几个非常常用的,已经封装好了的函数,如: getchar()和 gets()还有相应的putchar()和 puts(),这个几个函数的使用,需要大家多刷OJ题来熟练掌握。 (注: gets(
19、)这种函数得到字符串的方法不安全,容易发生内存溢出的问题,用在程序上还可能被黑客攻击,有兴趣的同学可以了解进阶版函数fgets()等。 )End 题外话:链表,数据结构,文件操作,结构体,交互图形设计,比较复杂,一时半会讲不清楚,考试应该也不会出这方面的题,我就不写了, 如果真出了大家自求多福。上面这 9 个部分已经是 C语言最最最基础的部分了,每一句话都是精华,希望大家能认真理解,结合着课本和网上的视频,一点点的钻研,不会的欢迎来问丁山大大或者张宇和我。C语言的重要性远远不是大物线代这些课程能比的,我最开始学习C语言的时候是上初中,那时候就已经是IT 界使用最多的语言了,现在虽然使用份额比不
20、上java python 等高级语言, 但仍是最接近硬件层面的语言,是效率最高的,电科是个偏向硬件开发的专业,学好C尤为重要,大一寒假时我又跟着中国大学MOOC上浙大的瓮恺教授重学了一遍C,又在三个月前跟着一套哈工大的进阶课程又学了一遍C, 日后我们学单片机就是用的C语言来开发,而且 C语言也是大部分语言的基础,它升级为了更复杂的C+,各种高级语言中也都有C 的影子。最开始只是为了帮三个不怎么听课的舍友恶补一下,后来被鼓动在班级群里讲讲,最后又在专业群里讲。 本来以为能一个小时就透彻的讲完,让没认真听过课的某些同学能速成及格,但没想到准备不充分讲砸了,心里比较愧疚浪费了大家的时间,所以写了这篇
21、文档帮助大家复习。祝大家期末考试顺利,没人挂科 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 一些小 tips:附录 1:学习 C语言的方法。1.先看网上的视频,粗略的了解C 语言的概念和框架。2.上轻院 OJ (群里有使用代理的方法),或者郑州师范学院也有类似的OJ网站, 前两百题是一样的,百度一下就能查到了。3.结合着知识点来刷题,每道题认真思考,不会了就百度或者翻书。4.某些题努力超过一个小时,实在想不出来再问其他人,这
22、样印象深刻。5.读别人的代码是一种很快的进步方法,OJ上可以在公告板上看其他人的代码,或者找我们要 OJ上某一题的代码,然后对比着自己的程序,找错误。6.电科专业要求深厚的C语言功底, C 语言是既是一种接近底层的语言,又是一种“高级语言” ,掌握好 C语言对日后嵌入式系统等学习都大有裨益。附录 2:编程的一些经验和技巧。1.写代码的格式一定要规范! 无论是缩进还是空格的使用,一个良好的程序,代码必须清晰明了,可读性强,注释到位,对自己和对他人都有利,要养成这个好习惯。毕业工作后,大公司会明确要求统一每个程序猿的编程风格的。这里有一个C 语言代码规范的网址。http:/ 2.学会“科学上网法”
23、 ,即翻墙,看到一个不一样的世界,逛逛github 。3.学会使用QQ 的截图( Ctrl+Alt+a) ,和 网站贴代码,这样能快速分享问题和解决问题。4.学会使用debug 功能,这需要你建立一个工程,然后在工程里的文件才能使用调试功能,单步调试和wtach 窗口查看变量数据是很有用的查错误的方式。5.某些情况下, 找小 bug, 可以用 / 把某一行或者某一段代码注释掉,看对程序有什么影响。鼠标拖拽几行,批量注释的快捷键是Ctrl+shift+x/c 。6.在右边括号变色的情况下,可以用 tab 键快速将光标移动到右侧,比如 scanf(“ %d” , &a),光标在这里的时候,按一下
24、tab 键可以直接到右括号右边输入分号,不用移动手掌去找方向键,提高写代码速度。7.刷题或者考试的时候,利用windows 的桌面自动靠边,拖拽软件顶部,将浏览器拖到左边直到鼠标碰到屏幕左侧,会自动将大小变为屏幕的一半,同理将编译软件放到屏幕右边,一遍撸代码一遍看题目效率高。7.编程会出现很多小细节网上很难搜到,有疑问时不妨自己试试,实践出真知。比如在某些编译器上, %f 输入一个543.21,再用 %f 输出时会是543.21022。这都是很有趣的探索。8.要学会看编译器的错误提示,往往都没有什么很难的单词,顶多辞典查一下,就能读懂编译器提示哪个函数里出错了,第几行,是为什么出错了。9.做题
25、时一定要让逻辑清晰,如果是个比较复杂的题目,将题的思路或者流程图写在纸上或名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 者买个白板不失为一个好方法。10.学会善用搜索引擎,百度或者Google,保存一些学习的网站,比如自学网站MOOC(爱慕课、中国大学mooc、Coursera 网等等)或者一些社区网站。11.使用数组, 声明时记得清零是个好习惯,例如 a 100=0 ,或者用 memset(a,0,sizeof(a);函数来
26、清零。12.写程序时最好把输入法切换掉,不然容易打出不能通过编译还不好检查的全角字符,比如分号和空格。13.例如 %-7.3lf,这个负号表示的是对齐方式,7 表示有效数字,点3 表示小数点后位数,这些比较细节的语法知识,题目中出现了要求,你可能需要上网查或者翻书才知道。英语好的可以看英文原版注释或者点开stdio.h 头文件里看看printf 函数的使用方法。附录 3:使用电脑的一些技巧。1.win+R 键可以调出windows 运行窗口, 输入 cmd 可以调出类似于C 语言编程的小黑框,会玩的话能干很多事情。2.在 windows 调出的运行窗口里输入Shutdown -s -t 360
27、0 可以做到定时一小时关机。3.有空最好整理一下电脑硬盘,只分两个盘,一个系统盘C盘,一个D 盘, C盘里一般不放东西,软件资料全部放到D 盘里,这样可以对磁盘空间最大化利用,只要合理建立文件夹分类存放就好。4.如果有钱最好买个SSD硬盘,那真是一种飞一样的体验。5.电脑做定时清理,半年清一次灰,可以拿去计服社让他们帮忙清灰,这样有助于散热。6.在杀毒软件或者电脑管家里把没用的启动项都关了,能让电脑开机更快,有 SSD三秒开机就不说什么了。7.以后会用到很多软件(比如Keil uVision4、Atmel Studio7.0 、Proteus、Protell 99SE) ,无论是画电路图还是烧录单片机,下载很大的软件的时候,不妨带上电脑和网线去图书馆找位置,图书馆的网速是真的快。2016.6.26 2:35 相怡林于河南工业大学信息学院名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -