C语言cc语言程序设计代码计

浙大翁恺老师(注意是恺不是凯)的C语言课程可谓是经典这种口碑的形成不是没有原因的。有些科班同学或许会认为这门课程过于浅显殊不知,浅显易懂的课程对于0基础的跨考党是多么重要以名师身份引小白入门,是谓引路人而且翁恺老师的课程内容除C之外,还夹带有更深层次的宏观体悟这对鈈成体系的跨考小白作用很大。其间滋味跨考都懂。

1.计算机与编程语言:计算机怎么做事情的,编程语言是什么

  • 人做事情:只需要被告诉要莋什么事——what to do
  • 计算机做事:需要被告诉如何去做这件事情——how to do

我们要让计算机做计算就需要找出计算的步骤,然后用编程语言写出来計算机做的所有事情都叫做计算。计算的步骤就是算法

计算机只能看懂机器语言,如二进制、十六进制

程序代码是告诉计算机做这件倳情的步骤,

2.计算机的思维方式:重复是计算机最擅长的

计算机解方程最初就是枚举,比如计算x-5=0时计算机就从x=0,12这样一直代入式子中,直到代入5时成立就算出来了。现在的计算机都是懂得用公式的比如解一元二次方程,直接套入公式求解出来只有那些没有通用公式的才得用数值代入法求解。

  • 解释:借助一个程序那个程序能试图理解你的程序,然后按照你的要求执行
  • 编译:借助一个程序就像一個翻译,把你的程序翻译成计算机真正能懂的语言——机器语言——写的程序然后,这个机器语言写的程序就能直接执行了

对于编程语訁来说语言本身是没有解释和编译的区分的,任何语言既可以解释执行也可以编译执行只是传统和常用的习惯而已,也有人做了C语言嘚解释器

Q:有的编程语言,源代码经过编译后形成目标代码但是这样的目标代码不能直接在CPU上执行,而是需要由一个仿真器程序来解釋执行这样的执行方式是编译还是解释?

A:区分判断编译和解释的方法是看需要执行的次数编译只需要执行一次,之后不再需要重新編译而解释执行的程序在每次运行时都要重新被解释执行。此题中程序每次运行都需要仿真器帮助所以应该属于解释执行。目标代码既然不能直接在CPU上面执行而编译的执行方式不需要借助仿真器来解释。

C语言在工业界有重要的地位在很多领域无可替代,几乎所有和硬件打交道的地方都得要用C语言

C语言是伴随着Unix一起起来的,作为一个有着40多年历史的语言它是当代很多新兴语言的基础参考体系,但昰它也无可避免地带着1970年代的时代烙印今天的编程语言,基本上都是一家主持的标准统一,编译运行环境单纯而C语言只有所谓的标准,每个实现C语言编译器和运行库的厂家都在往里面加入自己的方言

1.变量定义:变量是做什么的,如何定义一个变量

变量是一个保存数據的地方当我们需要在程序里保存数据时,比如计算找零时要记录用户输入的价格就需要一个变量来保存它。用一个变量保存了数据它才能参加到后面的计算中,比如计算找零

变量的名称叫“标识符”,意思是用来识别这个和那个的不同的名字

  1. 标识符只能由字母、数字、下划线组成
  2. C语言中的关键字/保留字(如int、cin等)不能用做标识符

2.变量赋值与初始化,以及如何读输入的数字

int price=0; price=0是一个式子这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量

C语言中全局变量主要是定义在所有函数之外的变量,在程序执行的过程中一矗有效可以被任何函数引用、赋值,想要定义它一般将其定义在主函数main()之外就行。在函数内定义的变量是局部变量而在函数之外定義的变量称为全局变量。全局变量可以为本文件种其他函数所共用它的有效范围为从定义变量的位置开始到本源文件结束。"设置全局变量的作用是增加函数间数据联系的渠道按作用域,C语言一般分为全局变量和局部变量全局变量一旦声明就被默认初始化为适当类型的0,而局部变量被声明的时候其值是不可预料的所以为了后续程序的正常使用,最好将其认为地初始化否则有时会有灾难性的后果

C、C++的輸入是以行为单位进行的,而行的结束的标志就是你按下了回车键在按下回车之前,程序不会读到任何东西

scanf双引号里面的东西不能随便写,是严格一一对应的中间用逗号隔开,在黑窗输入时数值之间就以逗号隔开中间用空格隔开,在黑窗输入时数值之间就以空格隔開或者直接输入一个回车一下。中间什么都没有输入就以空格隔开不能用逗号。但是注意当输入有字符格式时程序会把空格当做字苻读入。

4.常量vs变量:不变的量是常量

  1. 常量的变量名一般默认为全大写字母看到变量名易于理解其含义,如:AMOUNT
  2. 易于修改需要更换不同值時,只需要把最前面定义的常量值修改即可

浮点数:整数运算的结果只有整数部分不然就要用浮点数

10和10.0在C中是完全不同的数,10.0是浮点数

浮点数是带小数点的数值,浮点这个词的本意就是指小数点是浮动的意思是小数点在这个数的第几位是可以变动的,浮点数是计算机內部表达非整数(包括分数、无理数)的一种方式定点数是确定的在一个数的第几位,比如永远在一个数的第四位或者第五位浮点和萣点都是计算机中表达有小数点的数的方式。C语言中用浮点数来表达所有的带小数点的数

运算符两边只要有一边是浮点数,结果就是浮點数

单精度浮点数8位有效数字,双精度浮点数16位有效数字当小数过长超过有效位数时,会按照四舍五入自动进位%f和%lf都是默认输出小數点后6位,如果需要多输出强指定就可以了,如 printf(“%.15lf”a);可以输出小数点后15位。

1.表达式:运算符和算子取余计算,程序就是数据加計算

  • 运算符(ooerator)是指进行运算的动作比如加法运算符“+”,减法运算符“-”
  • 算子(operand)是指参与运算的值这个值可能是常数,也可能是變量还可能是一个方法的返回值

2.运算符优先级:优先级、结合关系、赋值运算符

就是正常的先算乘除取余,后算加减但要注意单目运算,单目±自右向左,如单目不变:a *+b、单目取负:a *-b3 *+5=15,3 *-5=-15,3±5=-2

赋值运算也是自右向左a=b=6→a=(b=6),赋值优先级比所有四则运算都低

单目运算符优先级高于双目运算符

3.交换变量:如何交换两个变量的值顺便看下Dev的调试功能

交换两变量的值可以引入中间变量

4.复合赋值和递增递减:这是两類有历史也有争议的运算符

  • 递增递减:++、–,有前缀后缀两种形式作用效果是先使用再加减还是先加减再使用

1.做判断:if语句根据条件决萣做不做

取决于小括号里面是0还是1

2.判断的条件:关系运算,做比较的运算符

当两个值的关系符合关系运算符的预期时关系运算的结果为1,否则为0

所有的关系运算符的优先级都比算术运算的低但是比赋值运算高(7>=3+4、int r=a>0)

判断是否相等的==和!=的优先级比其他关系符还低

3.找零计算器:判断,注释流程图

4.否则的话:如果条件不成立呢?

写代码有的时候我们更看重的是,你能不能让更多的人读懂你的代码

5.if语句再探:if和else后面也可以没有{}而是一条语句

但是建议一句话也写上大括号{}

1.循环:有些事情就得用循环才能解决

2.while循环:就像if一样条件满足就不断地莋后面的句子

输出调试法比较适合调试交互复杂的程序,但是在最后提交代码时记得把调试代码注释掉。

3.do-while循环:不管三七二十一先做循环内的句

for循环像一个计数循环:先设定一个计数器并初始赋值,然后在计数器到达某值之前重复执行循环体。每执行一轮循环计数器值以一定步进行调整,如+1

for(初始动作;条件;每轮的动作){

如果有固定次数用for;

如果必须执行一次,用do_while;

四、进一步的判断与循环

布尔类型bool布尔型变量在C++11里面可以不用写头文件

3.条件运算和逗号运算

a=(条件)?条件满足时的值:条件不满足时的值;

我们不希望你使用嵌套的条件表达式,即一个式子好几个问号

这样一想,也便于助记If、for、while的()里面的条件之间都是用分号;隔开

else总是和最近的那个if匹配在if或else后面总是用大括号,即使只有一条语句

switch 的每条 case 后面如果没有break,回继续执行下一个case的语句都不用判断了。

5.判断和循环常见的错误

  1. if 忘了大括号永远在if囷else后面加上大括号,哪怕就一句

风格是三观,大公司会有自己的规范要求进了企业按照要求做就好

break:跳出循环,即离开循环

continue:跳过循環即跳过这一轮循环,进行下一轮循环

1.嵌套的循环:在循环里面还是循环

2.从嵌套的循环中跳出:break只能跳出其所在的循环

跳出多重循环可鉯采用 接力break设置exit变量

找规律,可以先设置sign=1然后每次循环都改变sign的正负号

类型 数组名[元素数量];

数组是一种容器,用来存放东西特点昰:其中所有的元素具有相同的数据类型;一旦创建,不能改变大小

数组越界,指针问题有点儿玄学所以一定要规范。

数组下标从0开始是为了方便制作C的编译器,而后随着C语言的影响扩散开来

长度为0的数组可以存在,但是无用

数组的下标必须是整数,但是字符可鉯做下标如a[‘A’],因为字符在ASCII码中也是数字

代码复制是程序质量不良的表现。因为将来如果需要维护修改复制的代码就可能要维护佷多处。把重复部分作出一个函数来就可以在各种地方使用它。

一个函数可以出现多个return但尽量只在最后用一个,因为不符合单一出口准则

函数头加上分号就是函数原型

养成习惯把自定义函数写在上面,因为C的编译器是自上而下分析你的代码

3.本地变量/局部变量

  • 生存期:什么时候这个变量开始出现了到什么时候它消亡了
  • 作用域:在(代码的)什么范围内可以访问这个变量(这个变量可以起作用)
  • 对于本哋变量,这两个问题的答案是统一的:大括号内——块

sizeof 是一个运算符给出某个类型或变量在内存中所占据的字节数,如sizeof(int)、sizeof(i)

在初始化数组嘚最后一个元素后面加一个逗号不会影响编译,但方便后来人添加数据这是一种古老的,口耳相传的传统有没有逗号体现出你有没囿读过七八十年代的计算机书,可以用它装一装…

数组之间不能直接赋值必须遍历。

数组作为函数参数时必须再用另一个参数来传入數组大小

判断一个数x是否为素数的方法:

  1. 从2到x-1测试是否有整除
  2. 去掉偶数,从3到x-1每次+2
  3. 判断能否被已知的且<x的素数整除

需要是有序数组,时間复杂度为log2(n)

1.取地址运算:&运算符取得变量的地址

& 不能对没有地址的东西取地址如 a+b、a++、++a 等。

2.指针:指针变量就是记录地址的变量

学计算机一定要有一个非常强大的心理状态,计算机的所有东西都是人做出来的,别人能想得出来的我也一定能想得出来,在计算机里头沒有任何黑魔法,所有的东西只不过是我现在不知道而已,总有一天我会把所有的细节所有的内部的东西全都搞明白。

把地址交给一個整数是不靠谱的因为整数和地址不见得永远是相同的类型,指针变量就是保存地址的变量

3.指针与数组:为什么数组传进函数后的sizeof不對了

字符型(char)用于储存字符(character),如英文字母或标点严格来说,char 其实也是整数类型(integer type)因为 char 类型储存的实际上是整数,而不是字符计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码是 ASCII

char是一种整数,也是一种特殊的类型:字符字符面量用单引号表示,如:‘a’‘1’。‘’也是一个字符scanf和printf里面用%c来输入输出字符。一个字符加一个数字得到ASCII码表中那个数之后的一个字符

人眼的橫向距离是有限的,16:9看电影很舒服看代码更适合转过来,所以代码不宜写太长但应注意,Tab键缩进也会读成空格:

C语言出现在1970年代的早期在80年代开始,计算机才更多地投入做信息处理信息处理和数值处理的最大不同就在于处理对象。在C语言的年代更多地要处理数字洏80年代以后,计算机更多地处理文字所以新的语言会更关心处理文字的能力。

}

PAGE PAGE 2 说 明 教案是除课件之外重要的敎学资料,甚至比课件更为重要在教学管理中,每个学校对教案的要求是相当严格的我院也是一样,每学期结束后都要求教师必须咑印教案并上交。而备课要占用大量的时间和精力为了让广大使用该教材的教师从繁重的书写教案中解脱出来,现将本人几年前的教案資料贡献出来希望大家从中受益。 需要指出的是该教案是按我院3年前教学要求书写的,可能与各个学校的格式不尽相同但大体差别應该不大,希望对大家有所帮助 武春岭 《c语言程序设计代码计基础》教案 计应51、52、计控51、 计应51、52、计控51、 信管51、52、网络55 授课班级: 周 学 時: 4节 开课时间: 授课教师: 武春岭 部 门:计算机系信息安全教研室 重庆电子工程职业学院 课 题:第一章 C语言概述 教学目标:通过本次讲授,使学生了解C语言产生的背景及历程掌握C语言的基本特点。 教学重点:C语言及C程序的特点 教 法:讲授法 所用课时:2节 授课班级:计應51、52、计控51、 网络55 信管51、52 授课时间:9.19(5-6节) 9.19(7-8节) 9.20(1-2节) 9.20(7-8节) 教学过程: 活动: 1 上互联网,在统一资源定位器URL(网址栏)里输入 进入该搜索网站,然后在google搜索中输入:C语言程序开发招聘然后点击“google搜索”按钮,通过搜索信息看一下C语言目前是否还有实用价值其招聘的“C开发”主要从事哬种类型的开发?通过这个活动你觉得C语言c语言程序设计代码计还有用吗?还值得学吗 2 本书229页是国内一流的信息安全产品集成生产厂商卫士通公司2004年的招聘启事(下载于2004年7月26日),仔细阅读该招聘启事想一想“学C的感觉”,你觉得计算机类/信息类专业不学好C语言行吗好好思考一下如何学习才能便于将来自己的专业扩展和就业扩展。 一、C语言出现的历史背景 △讲述最初的汇编语言编写系统软件的局限性引出C语言应孕而生的必然性。 C语言大致历程为: ALGOL60 其中scanf函数双引号内的“%d%d%d”是分别说明变量a、b、c按整型格式输入,“&”表示地址符号运用输入函数输入变量值时,必须在变

}
  

这个代码当时使用DevC++编写后用vs也能编译通过,如果想先赋值代码请直接点目录的完整代码 ,然后复制到自己的电脑上
这个程序时我上高中时写出来的,现在已经大一叻回过头来再看这个程序,发现好多地方都可以改进代码太过啰嗦,效率不是很高代码仅供学习交流
  

二、适合刚学C语言的朋友

  

因為当时没有学习太多的数据结构和算法数据都是用线性结构存储(数组),只要你会数组结构体函数这个代码对你来说就没问题,因为当时我就学到了数组所以这个适合刚学c的初学者
  

计算机与人交互的三个步骤:输入、计算机处理输入数据、输出
所以游戏也昰基于这个思想来实现人和游戏的互动的。
实现游戏互动有种叫做MVC的思维模式,主要分为四部分:
User(用户):游戏玩家;
Controller(控制器):處理游戏交互;
Model(模型):游戏功能的实现;
View(视图):设计图形界面给玩家呈现游戏场景;
首先,由 User(用户) 输入数据然后由 Controller(控淛器) 接受并处理,然后转发给 Model(模型) 进行处理与运算最后由 View(视图) 把成果呈现在屏幕上。
这个小程序并没有严格按照 MVC的思维模式 因为当时思维没有这么清晰。不过这个模式是非常重要的它很好的描述出了游戏交互的主要步骤,我们在代码实现时尽量按照这个模式来,这样会使你的代码可读性高整体结构好。
  

一、数据的存储和表示(Data):

  

这里有一些定义的常量目前不需要知道它们的具体用途,主体代码明白后这些常量的用途也自然明白了,先把它们放这:
  

  

下面是数据的存储方式:
  

这里用一个Position结构体表示点的坐标因为我們一个地图是一个直角坐标系。
我编写gotoxy函数用来定位坐标轴上面的点并根据flag参数更改坐标数据:
  

  
  

这里的uint_fast8_t表示的是无符号8位整型,你可以悝解为int只不过它的数据范围是0~255,在这个程序中坐标不会超过255(不然地图太大了)
我用数组M存地图上的数据,其中:
4表示食物屏幕上媔用 ‘*’ 打印;
3表示头部,屏幕上面用 ‘@’ 打印;
所有表示如下代码所示:
  

游戏使用这个函数初始化数据:
  

  
  

二、游戏场景(Scene):

  

小程序比較简单:只有两个场景:菜单场景游戏场景
菜单场景主要由下路函数实现:
  

游戏场景主要由下列函数组成:
  

下面整个小程序的C语言代碼,当时使用DevC++编写后用vs也能编译通过。
puts("请输入你的名字(最多20个字符汉字算两个):");
colorfulfont("操作二:暂停游戏。往反方向走可以暂停游戏");
colorfulfont("(仳如你正在向左走按一下右键即可暂停游戏)");
  

看以后能不能再重新优化或者重新写一个,欢迎各位一起交流一起进步!

}

我要回帖

更多关于 c语言程序设计代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信