C语言速成及格课.docx_第1页
C语言速成及格课.docx_第2页
C语言速成及格课.docx_第3页
C语言速成及格课.docx_第4页
C语言速成及格课.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

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

温馨提示

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

评论

0/150

提交评论