c语言程序设计基础

2024-04-18

c语言程序设计基础(精选8篇)

篇1:c语言程序设计基础

《c语言程序设计基础》重修试卷

一、选择题(2’*20=40’)

1、c程序由构成。

A.函数B.命令C.程序D.表达式

2、以下选项中合法的变量名是

A.#y2B.a

A.floatB.charC.intD.double4、在我们使用的turboC中,一个int型数据在内存中占个字节

A.0B.1C.2D.45、若有定义:int a=8,b=5,c;执行语句c=ab+0.4后c=

A.1.4B.1C.2.0D.26、在c语言中,char型数据在内存中的存储形式是

A.补码B.ASSCIIC.原码D.反码

7、若运行时给变量x输入

篇2:c语言程序设计基础

1.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。2.学习编制连接命令文件,并用来控制代码的连接。

3.学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。4.熟悉使用软件仿真方式调试程序。

二.实验设备

PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为 Windows2000),安装Code Composer Studio 2.0软件。

三.实验原理 1.标准C语言程序

CCS支持使用标准C语言开发DSP应用程序。当使用标准C语言编制的程序时,其CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成源程序文件名的后缀应为.c(如:volume.c)。

目标DSP的可执行代码。最后生成的是coff格式的可下载到DSP中运行的文件,其文件名后缀为.out。由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译连接时编译系统还负责构建C运行环境。所以用户工程中需要注明使用C的支持库。2.命令文件的作用 命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP 所管理的内存中。命令文件也为链接程序提供了DSP外扩存储器的描述。在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。3.内存映射(map)文件的作用 一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。为了更

精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。4.程序设计要求 程序框图(图2-1):

四.实验内容与步骤

1.实验准备 设置软件仿真模式。

2.建立新的工程文件(1)双击桌面上图标,启动Code Composer Studio 2.21。(2)进行以下设置(如图2-2):

3.编辑输入源程序(1)C语言程序-先新建源程序窗口:-输入源程序: intx,y,z;main(){ x=1;y=2;while(1){ z=x+y;} }

图2-3 新建源文件

-保存源程序为CProgram.c:(2)连接命令文件

-如同第(1)步操作,建立空的源程序窗口。-输入连接命令文件内容:-l rts2800.lib-stack 400h-heap 100 MEMORY { PAGE 0 : PROG(R): origin = 0x3E8000, length = 0x10000 PAGE 0 : BOOT(R): origin = 0x3FF000, length = 0xFC0 PAGE 0 : RESET(R): origin = 0x3FFFC0, length = 0x2 PAGE 0 : VECTORS(R): origin = 0x3FFFC2, length = 0x3E PAGE 1 : M0RAM(RW): origin = 0x000000, length = 0x400 PAGE 1 : M1RAM(RW): origin = 0x000400, length = 0x400 PAGE 1 : L0L1RAM(RW): origin = 0x008000, length = 0x2000 图2-4 保存为c文件

PAGE 1 : H0RAM(RW): origin = 0x3F8000, length = 0x2000 } SECTIONS { /* 22-bit program sections */.reset : > RESET, PAGE = 0 vectors : > VECTORS, PAGE = 0.pinit : > PROG, PAGE = 0.cinit : > PROG, PAGE = 0.text : > PROG, PAGE = 0 /* 16-Bit data sections */.const : > L0L1RAM, PAGE = 1.bss : > L0L1RAM, PAGE = 1.stack : > M1RAM, PAGE = 1.sysmem : > M0RAM, PAGE = 1 /* 32-bit data sections */.ebss : > H0RAM, PAGE = 1.econst : > H0RAM, PAGE = 1.esysmem : > H0RAM, PAGE = 1 }-l rts2800.lib-如同第(1)步操作,将文件存为:

C:ICETEK-F2812-A-EDUlabDSP281x_examplesLab0102-CProgram CProgram.cmd(3)将上述编译的源程序加入工程CProgram.pjt。4.编译源文件、下载可执行程序(1)单击菜单“Project”、“Rebuild All”。

(2)执行FileàLoad Program,在随后打开的对话框中选择刚刚建立的

C:ICETEK-F2812-EDULabLab0102-CProgramdebugCProgram.out 文件。完成后,系

统自动打开一个反汇编窗口“Disassembly”,并在其中指示程序的入口地址为 “_c_int00”。

5.打开观察窗口

开启CPU寄存器观察窗口:单击菜单View->Registers->Core。6.观察程序运行结果

这时,在“Disassembly”代表程序运行位置的绿色箭头指向程序的入口地址,程序将从 此开始执行。

(1)选择菜单中Debug->Go Main,CCS自动打开CProgram.c,程序会停在用户主程序入

口main上,这从反汇编窗口和CProgram.c窗口中的指示箭头位置可以看出。(2)在内存观察窗口中观察变量的值:

选择“View”菜单中“Memory…”项,在“Memroy Window Options”窗口中的“Adress” 项中输入&x,单击“OK”完成设置;“Memory”窗口中x 的当前取值显示在第1个地 址的后。

(3)将变量x、y、z分别加入观察窗口:

在源程序中双击变量名,再单击鼠标右键,选择“Add to Watch Window”。这时,这3 个变量还未作初始化。

(4)单步运行2次,在观察窗中观察到变量x、y被赋值。变化的值被显示成红色。同时 在“Memory”窗口中也能观察到x和y值的改变。

(5)再单步运行,可观察到z 的值被计算出来。双击观察窗口中变量x、y在“Value”栏 中的取值并修改成其他取值,单步运行后观察结果。

(6)双击观察窗口中变量x、y在“Value”栏中的取值,并修改成0;选择菜单 Debug->Restart,返回程序起点。

(7)重新单步运行程序

7.内存映像文件

(1)选择菜单Project->Build Options…,启动“Build Options”工程设置对话框。(2)单击“Linker”属性页,在“Map Filename”项中观察生成的map文件名和路径。(3)单击“取消”退出。

8.对照观察map文件和cmd文件的内容(1)选择菜单File->Open…,将找到

C:ICETEK-F2812-A-EDUlabDSP281x_examplesLab0102-CProgram Debug目录,将文

件类型改为“Memory Map Files”,选择CProgram.map文件、打开。(2)打开CProgram.cmd 文件。(3)程序的入口地址:map文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(_c_int00)。(4)内存使用情况:

-map文件中“MEMORY CONFIGURATION”标明了程序占用RAM 的使用情况,共占 用aaH个存储单元。

-观察map文件中的“SECTION ALLOCATION MAP”段,可以看出CProgram.obj的入 口地址为0x3e801e,这也是main函数的入口地址。

-用户堆栈段从400H 开始,程序运行到main函数中后,变量x、y、z 均开设在栈中。-还能看出程序运行都需要调用rts2800.lib 中的哪些模块。9.改变内存分配 修改cmd文件中的

PAGE 0 : PROG(R): origin = 0x3E8000, length = 0x10000 改为

PAGE 0 : PROG(R): origin = 0x3E9000, length = 0x10000 重新编译工程,观察map文件中有何变化。

10.退出CCS 五.注意事项

在重新单步运行程序,注意观察在CPU寄存器窗口中,各寄存器使用情况,观察哪个 寄存器参与了运算。

六.实验结果

1.通过实验可以发现,修改cmd文件可以安排程序和数据在DSP内存资源中的分配和位置;map文件中描述了程序和数据所占用的实际尺寸和地址。

2.C语言编制的程序,在经过编译器编译后,需要连接若干C标准程序辅助运行。以下是 运行流程:

(1)程序入口为_c_int00,执行标准C库中的程序,负责初始化C环境、申请堆栈、初始化

有初始值的变量等。

(2)程序最终转到用户编制的主函数运行。(3)程序在主函数中的无限循环中持续运行。

七.心得体会

这次实验的准备工作有两个,分别是仿真和硬件连接,我们组先选择了仿真的方案。在仿真过程中,按步骤一切都还顺利,观察窗中观察到变量x、y被赋值。变化的值被显示成红色。改变了内存分配,观察到map的变化。但是当我们写入冒泡程序时,但是编译后发现了错误。

篇3:c语言程序设计基础

关键词:语法,单词,程序,教学语言

随着科学技术的不断发展,计算机程序的应用也越来越广泛,“程序设计基础”课程教学涵盖了七项知识单元结构。在大部分情况下,各个知识点都是相互结合使用的,它们会共同出现在同一个问题当中。以下进行了相关的实验,实验步骤中包含了三个过程,第一个过程是采集数据,第二个过程是处理数据,第三个过程是统计数据。

1“程序设计基础”课程教学内容要点

“程序设计基础”课程教学涵盖了七项知识单元结构。在大部分情况下,各个知识点都是相互结合使用的,它们会共同出现在同一个问题当中,并且,在单个的知识点中,语法要素也会不止一个。在语法内容的选择上,应该将学习者的知识水平综合考虑。而最常用的算法主要有十多种,初学者掌握这些算法就足够了。

2 C/C++语法特点

站在语法的角度上分析,字符序列就是原程序的构造,将这些字符串联起来,就组成了各种各样的单词,单词在有规律的组合之后就形成了具有实际意义的语法单位,并且,将一些简单语法单位进行有规律地组合,还能够形成非常复杂的语法单位。那么,程序的完成就是通过最后一系列的语法单位的组合而形成的。

3 C/C++语言的主要语法单位

表达式的构造是由表达式运算符和运算对象组合而成的, 各种各样的数据类型的运算符都可以是表达式的构成要素,运算符的运算顺序是有一定规定的。由于变量有其数据类型,因此,在给变量下定义之前要先明确变量的数据类型,变量的类型决定了其占据的内存的空间大小。函数定义与调用:函数是独立的模块,它主要用来完成指定的任务,它以一种子程序的形式存在,由于语法是在单词有规律组合的情况下构成的,因此,本文主要是对基本语法要素构成的语法子集进行研究。

4实验设计

实验步骤中包含了三个过程,第一个过程是采集数据,第二个过程是处理数据,第三个过程是统计数据,下面将这三个过程进行展开讨论。

1)采集数据:教材中的数据是本实验中需要应用到的原始数据,该教材有国内教材,也有国外教材。并将这些国内外教材中的样例程序与课后习题的实现程序作为处理数据,由于课件和电子文本是以上这些教材主要包括的内容,所以,第一步就应该从自然语言的文本里面抽取一些程序样例,然后将其生成TXT文本。

2)数据处理:数据处理过程其实就是分词注标过程,主要是针对已经筛选的与条件相符的程序来进行,在分词注标的过程中,像空格、注解这一类辅助性的文本会被删除,标注的内容主要是将词语的属性进行标注,在以上工作结束之后都会生成单词表。

3)统计数据:数据统计中,主要统计的是单词的情况,将单词表中的单词出现的频率进行统计,并且将单词在所有文件中出现的比例进行统计。这样就能得出一个反映单词频率的表, 有了表的依据,就能够综合分析,并得出相关的结论。

5数据采集

在该论述中,我们选取一般高校通常习惯运用的“程序设计基础”教材作为研究目标,不过该教材的内容量相当大,若要全面研究,比较困难,因此,在此,我们选取的是部分权威机构出版的篇章内容。为了体现出数据采样的普遍性特征,使最终结果更加准确,更具代表性,所以,可通过以下两种方法来降低采样的主观性,第一是尽量多选一些教材,然后再在这些教材当中随机抽出三本教材,第二种办法是参考各种教材的发行数量以及参照学生对教材的反馈来挑选出三本教材。数据采集的主要方式有在网上书店里购买、直接与出版社联系通过出版社来获得、向图书馆借阅、向毕业学生征收等,教材的选择时间经历了两个月之久,在这两个月时间里,收集了大批的C或C++语言程序设计教材,不过,在我们挑选的文件当中,很少是能够直接应用的TXT格式资料,大部分都需要进行格式的转换。转换的过程有一定的难度,如果教材的格式是PDG格式,那么转化过程中需要应用到Pdg2Pic软件,并将内容转化成三种语言的TXT形式。经过三种语言的对比,可以发现,转化成英语格式的TXT格式时,准确率最高,最后一步是将错误进行修改,并且做一定的删除,只保留例题部分即可。如果教材的格式是PDF格式,PDF生成文件可以有两种形式,第一种是图像形式的文件,第二种是文档形式的文件。

6结束语

字符序列就是原程序的构造,将这些字符串联起来,就组成了各种各样的单词,单词在有规律的组合之后就形成了具有实际意义的语法单位,并且,将一些简单语法单位进行有规律地组合,还能够形成非常复杂的语法单位。由于变量有其数据类型,因此,在给变量下定义之前要先明确变量的数据类型,变量的类型决定了其占据的内存的空间大小。数据采集的第一步就应该从自然语言的文本里面抽取一些程序样例,然后将其生成TXT文本;数据统计中,主要统计的是单词的情况,将单词表中的单词出现的频率进行统计,并且将单词在所有文件中出现的比例进行统计;在我们挑选的文件当中,很少是能够直接应用的TXT格式资料,大部分都需要进行格式的转换。可以发现,PDG转化成英语格式的TXT格式时,准确率最高。

参考文献

[1]乔宪遐,杨乐.基于CDIO的C语言虚拟实验室建设研究[J].实验技术与管理,2015(10):122-124.

[2]阚双龙,黄志球,陈哲,等.使用事件自动机规约的C语言有界模型检测?[J].软件学报,2014(11):2452-2472.

篇4:c语言程序设计基础

关键词 C语言 软件编程 实验探讨

中图分类号:TP3 文献标识码:A

1 C语言的概述

在各种计算机编程语言中,C语言属于一门高级语言,它是一切计算机语言的基础,拥有高级语言和低级语言的特点,灵活方便,简洁紧凑;而且它的语法限制不严格,程序员在设计时程序书写自由。不仅能够编写系统软件,同时还可以编写应用软件,能够适应于多种操作系统,应用广泛,可移植性强。总之,C语言对于信息技术的发展具有十分重要的作用和价值。

2基于C语言的计算机软件编程实验研究

2.1C语言的编程技巧

(1)灵活运用指针

在C语言编程的时候,指针是一种特殊类型的变量,它能够帮助程序员有效的表达和解决程序设计过程中遇到的复杂问题,熟练掌握指针是必要的。指针具有三要素:指针名以及指针类型和值。在编程时,指针和一般变量名相同,但是在类型以及值上具有区别,另外,指针不仅能够被用于表示数组,还可以被作为函数的参数返回值。

(2)C 语言的特有函数

在C语言编程的时候,有时需要用到一些特有函数。函数都具有一定的功能,同时函数名也反映了该函数的功能。在进行函数定义时,程序员需要把函数的名字、返回值类型以及参数名等各项都进行定义。另外,因为库函数是由C 编译系统提供的,这些函数均是系统首先定义好的,在程序调用的时候,程序员只需利用“#include 指令”把与之相关的头文件包含到所用文件中即可。

(3)算法技巧

在程序设计的过程中,算法是程序的灵魂,因此,掌握一定的算法技巧是必不可少的。通常情况下,算法不仅可以用自然语言表示,有的时候也利用流程图表示。需要注意的是,利用流程图表示算法时,程序设计员必须熟练掌握常用的流程图符号。且“数学乃是计算机之母”,牢固的数学知识同样能够提升编程效率。

(4)位运算以及文件知识

相比其他计算机高级语言的运算方法,位运算作为C 语言的重要特色,具有独特性和唯一性。位运算是以二进制位为对象,然后结合相关程序要求进行各种运算。文件包含有数据文件以及程序文件,是计算机不可缺少的,程序设计员在进行编程时,需要把所写的程序存储的文件之中,这样可以便于程序员查找数据,提升查找效率。

2.2 C语言和汇编语言混合的程序设计案例分析

(1)混合的软件编程方法

随着信息技术的不断发展和应用,在软件开发过程中,大多时候需要使用两种语言混合编程,有效地提高了程序的开发效率。通常情况下,混合的软件编程方法有两种,具体如下:

①把汇编语句嵌入C语言程序中。例如,把asm汇编语句嵌入到C语言源程序中:/*把5送到ax寄存器*/当把一组汇编语句嵌入到C语言源程序中,则需要利用大括号把嵌入程序给括起来:在本次的实验之中,在进行程序嵌入时,有其固定的格式,需要在嵌入的各行代码之前加“asm”关键字,也可以直接在asm代码块中放入汇编语句。但是程序设计者在进行嵌入时,一定要注意满足以下条件:汇编语言指令代码中关键字asm必不可少,且要放在指令代码之前;嵌入汇编语言指令代码能够和正常C语言程序混合,但是C语言的分隔符“;”必不可少;嵌入汇编语言时C语言的注释分界符必不可少,分别是“/*”和“*/” 。

②首先编写C语言程序以及汇编程序,然后独立编译目标代码模块,最终进行链接。

首先,在进行混合编程时,C语言程序能够调用汇编语言的各种子程序以及其定义的变量,同时,C语言编写的函数以及定义的变量等也可以被汇编语言调用。而且混合编程的过程中,一个任务往往是由若干个功能模块组成,且不同的功能模块均是利用合适的语言进行独立编程,且以函数的形式存在。因此,程序设计者要根据每一模块的特点选择相应的语言和语言编程系统进行独立编程,并形成目标文件,继而连接目标文件,形成完整的可执行文件。在混合编程的过程中,设计者需要注意五个问题:参数传递问题;寄存器的使用问题;存储模式;变量以及函数的调用问题;子程序的返回值问题。其中,关于参数传递问题,在进行C语言程序调用汇编程序时,必须遵从参数传递原则,利用堆栈把参数传递给汇编程序。例如,在C语言程序中含有函数:voidaa(char*p,inti),这个函数是利用汇编语言进行编写的,如果编译是在小内存模式下实施的,系统在进行调用时,则写成aa(&q, n);运行时程序首先把n压入堆栈,然后再把&q压入堆栈,当参数传递过来并被汇编语言的子程序取得时,BP寄存器便被用作基地址寄存器,实现对栈中所存数据进行存取操作。

(2)混合的软件编程实例分析

程序的主要功能是在五个数中寻找最小数,有主程序“min.c” 以及汇编子程序“qiumin.asm”这两个部分组成。其中主程序是利用C语言编写,汇编子程序是利用汇编语言编写,被主程序调用,主要于完成寻找最小数。程序代码如下:

/*文件名为:min.c*/

/*声明qiumin为外部函数*/

利用C语言和汇编语言混合的编程方法,能够实现应用程序局部满足高运行速度的要求,但是在具体的运用之中,程序设计者仍需要注意寄存器分配以及内存模式等因素对于程序的影响;且在运行时,因为程序设计语言之间存在相互调用的外部接口,故可以实现外部调用。

参考文献

篇5:C语言入门基础教案

教学目标:

一认知目标:了解C语言的特点和C语言的开发步骤

二能力目标:初步了解C程序的组成结构和主函数的作用;

掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;

三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发

教学要求:

识记:

计算机程序设计语言的一些必备知识与理论 理解:

理解C程序的组成结构和主函数的作用;

理解C语言等高级程序设计语言的开发过程

理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法;

运用:

能使用printf()函数进行信息的输出;

能编写简单程序

教学重点:

1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等;

3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求;

6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。

教学难点:

如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等

授课方法: 讲授法与演示法相结合计算机程序设计语言基础

一新课导入

大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。

二新课讲授

1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。

程序设计语言分为三类:机器语言、汇编语言、高级语言。 机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语言,它是一种二进制语言。

优点:面向机器、程序简洁、运行速度快;

缺点:不直观、难懂、难记、难写、难以修改和维护

 汇编语言:使用符号(助记符)来代替机器语言中的二进制代码

优点:质量高、执行速度快、占用内存少

缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点

 高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握

优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢

2高级程序设计语言的开发过程

 分析问题、建立模型  表现模型  源程序的编写  程序的编译与连接  程序的测试与调试C语言的特点

① 既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ② 结构化体系

③ 可以直接访问内存的物理地址,丰富的运算符和数据类型 ④ 可移植性强 ⑤ 代码效率高 使用Microsoft Visual C++ 6.0开发C语言程序(1)启动Microsoft Visual C++ 6.0(2)(3)(4)(5)新建项目 新建文件

在出现的文本窗口中输入程序 编译并运行程序 C源程序的结构特征

#include

/*编译预处理,包含标准输入输出文件头文件*/ Int main(void)/*主程序名*/ {

/*表示函数的开头*/ Printf(“Hello,World!n”);

/*函数体*/ Return 0;}

/*表示函数的结束*/

说明:

(1)程序一般用小写字母书写;

(2)C程序是由函数构成的,函数是C程序的基本单位;(3)每个程序必须要有一个main()(只能有一个),称主函数;(4)程序体必须要在{}之间;

(5)每个语句的结尾,必须要有“;”作为终止符;(6)用/*..........*/作注释,//可作行注释;

三归纳小结

本节主要介绍了计算机程序设计语言及分类以及高级程序设计语言的开发过程,重点介绍C语言的特点和使用Microsoft Visual C++ 6.0开发C语言程序的步骤,最后由最简单的C语言源程序来学习了解C语言的重点基本规则。

四 课堂巩固练习

带领学生使用演示如何使用Microsoft Visual C++ 6.0开发环境,并演示简单的C语言源程序整个开发过程步骤。

五作业布置

在电脑上安装Microsoft Visual C++ 6.0软件,并学会新建项目和文件,将helloworld程序编辑运行出来,并练习其他输出语句的程序设计。

六后记

篇6:C语言基础知识归纳

1.每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,并在main()函数中结束。

2.在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。

3.用单引号括起来的一个字符常量只能存放一个字符;C语言中没有字符串变量,只能用字符数组来存储字符串。

4.外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

5.在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。

6.用sizeof(int)计算int类型数据的字节数。

7.C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。

8.预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。

9.feof函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。

10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。

11.在赋值表达式中,赋值运算符“=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。

12.静态局部变量,只有当程序结束后,其值才释放。

13.当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。

14.算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法正确的程序最终一定会结束。15.在C语言中,预处理命令行都以“#”开头;当需要时才用#include;预处理的作用就是实现宏定义和条件编译。16.当数组元素的下标超出了定义的下标范围时,系统不给出“下标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。

17.共用体变量不能作为函数的参数,也不能使函数带回共用体变量。

18.指向函数的指针变量的定义形式为:数据类型(*指针变量)();,因此其为指向函数的指针变量。

19.用C语言编写的代码程序是源程序,只有通过编译、连接才能进行。

20.在说明为static时,其生存期得到延长,而其作用域并没有改

变,在定义后系统会自动帮它赋值为0,static为关键字不能被用作它用。

21.频繁地使用空语句会降低程序的可读性和运算速度。22.运算符%两边都应是整数,赋值语句左边应该是变量,而非表达式,强制转换语句强制类型应加括号。

23.在逻辑运算符中,其两侧的运算符对象为任意合法的表达式即可。

24.函数fread(&Iarray,2,16,fp)的功能是,从fp所指的数据文件中读取16次2字节的数据存储到数组Iarray中。25.整个流式文件也可以随机存取数据,C语言文件中有好多函数可以达到写入数据时,未经输入数据,达到不覆盖的目的,在进行写操作时,系统会自动关闭文件。

26.使用putchar、getchat、puts、gets、printf、scanf函数时,必须在程序的开头出现包含头文件#include”stdio.h”的命令行,而使用字符串处理函数时,必须在程序的开头出现包含头文件#include”string.h”命令行,而使用数学函数时,必须在程序的开头出现包含头文件#include”math.h”的命令行。

27.一个斜杠与小于等于127任意数字按一个字符计算,一个斜杠与任意一个字符按一个字符计算。

28.一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

29.根据C语言规定,注释语句可以换行写,并且一个“/*”和

其后紧跟的第一个“*/”中间的部分是注释内容,且注释内容不参与程序的运行。例如:b=0;/*b=20;给b赋值*/ 则b=0。30.sizeof是求字节数的运算符,包括‘’,而strlen是求字符串的实际长度的函数,不包括‘’,以‘’作为结束。31.在函数声明时,其中的形参变量、个数、函数的类型必须一致。

32.C语言源程序经编译后生成后缀为.obj的目标程序;C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件;用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中。并不是源程序中的所有行都参加编译。在条件编译形式下,相关内容只在满足一定条件时才进行编译。

33.switch括号后的表达式可以使任何表达式;case后的表达式必须是常量表达式,常量表达式中不能出现变量,且类型必须是整数、字符型或枚举型。

34.C程序必须由一个或一个以上的函数组成;函数调用可以作为一个独立的语句存在;若函数有返回值,必须通过return语句返回。

35.在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。【在实参传递到形参时,是数值传递,而不是地址传递,形参中值的改变不会影响实参中的值。】

36.可以用typedef声明新的类型名来代替已有的类型名,而不能

增加新的类型。

37.在没有限制输出宽度时,一般浮点数的小数位数是6位,不管输出格式是%f或lf%均如此。

38.C语言中,函数的隐含存储类别是无存储类别。

39.当实参传递到形参时,地址传递时形参的改变影响实参。40.串的长度指的是串中的字符的个数,且其字符个数可以为零。41.C语言中数据类型有整型、实型、字符型等,实行数据分为单精度型和双精度型两种。

42.整型数组只能一个一个地输入或输出,而在字符型数组中可以对字符串整体地输入与输出。

43.C语言中,文件型指针变量的定义形式为:FILE *文件型指针名。C语言中对二进制文件的访问速度比文本文件快;C语言中,随机文件以二进制代码形式存储数据;C语言中的文本文件以ASCII码形式存储数据。

44.因为#define是宏定义的标志,而不是C语句,而printf是输出函数,因此其是C语句。

45.在实参传递给形参时,地址传递时能够改变,而数值传递时则不变。

46.在scanf函数中,必须含有输入项,并且需含有与之一一对应的转换说明符,在scanf函数的格式字符前可以加入一个正整数指定输入数据的宽度,但不可以实数指定小数位的宽度,输入项是地址表达式。

47.switch语句使用注意事项:(1)switch语句与if语句不同,仅能判断一种关系:是否恒等;(2)switch语句中case子句的常量可以使整型常量、字符型常量、枚举型数据,或是整型常量表达式,不允许变量;(3)在同一个switch中,case子句的常量不能相同,在嵌套的switch语句中,不同层次的switch之间,可有相同的常量;(4)default子句可以省略。例如:default:printf(“En”);(5)case和default子句只能在switch语句中使用,且case和default只起标号作用,可出现在switch中的任何位置;(6)case和default子句后面的语句序列允许由多个可执行语句组成,且不必用“{}”括起来,也可以为空语句;(7)switch语句中可省略break语句,但省略后会改变流程。

48.break语句是限定转向语句,它使流程跳出所在的结构,把流程转向所在结构之后。continue语句被称为继续语句。该语句的功能是使本次循环提前结束,即跳过循环体中continue语句后面尚未执行的循环体语句,继续进行下一次循环的条件判别。

49.在C语言中,一个程序必须有一个main()函数,但是其文件就不一定,因为其可以通过链接来实现多个子函数放到这个主函数中,主函数的位置是不固定的,可以根据自己的爱好和习惯来使用,在C语言中任何函数都不能调用主函数,且与函数的位置有关。在C程序的函数中不能定义另一个函

数。

50.在用fprintf输入时,要将其转换为二进制数形式放到文件中。51.由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。而目标程序为“.obj”,可执行程序为“.exe”。52.在C语言中,合法的标识符可以由字母、数字和下划线组成,且第一个字符必须为字母或下划线。

53.C语言规定必须以main作为主函数名。程序要从main()函数开始执行,最后在main()函数中结束。54.赋值运算符左侧的操作数必须是一个变量。

55.在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。

56.在一个C语言源程序文件中所定义的全局变量,其作用域为:由具体定义位置和extern说明来决定范围。【全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。】

57.C语言中,凡是以“#”号开头的行,都成为“编译预处理”。对C原程序进行编译前,由编译预处理程序对这些变异预处理命令进行处理。

58.typedef语句的作用仅仅是用“标识符”来表示已存在的“类型名”,并未产生新的数据类型。

59.共用体变量中的所有成员共享一段公共存储区,所有成员的首地址相同。在每一个时刻所有的成员中只有一个有效,即只有最后一个被赋值的成员有效,其余的成员无效。60.C语言中注释可以出现在任意位置;C语言一行内可以写多个语句,一个语句可以写在多行上;C语言编写的程序可以放在多个程序文件中。

61.标识符只能由数字、字母和下划线组成,并且只能以字母和下划线开头。

62.在用基本输出语句printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出,如果格式说明个数多余输出项个数,则对于多余的格式项输出不定制或0。

63.二维数组定义和初始化允许省略行下标,不允许省略列下标。64.预处理命令行是在系统对原程序进行编译之前进行处理的,不是在程序执行的过程中。

65.gets和getchar函数用于从标准输入设备终端读入字符串和字符,并非从磁盘文件读入。

66.动态变量和静态变量都是内存变量,而寄存器变量不保存在内存上,而是直接存储在CPU的寄存器中。变量的存储类别有自动、静态、寄存器、外部。

67.C语言的源程序是由函数构成的,其基本单位是函数,每一个函数完成相对独立的功能,其中至少包括一个主函数;C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上;C语言规定每个语句以分号结束。可随时添加注释,对程序没影响。

68.由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”。由汇编语言编写的程序称为“汇编程序”。对于计算机本身来说,它只能接收和处理由0到1的代码构成的二进制指令和数据。所以计算机能识别的程序是“目标程序”。而计算机可以直接执行的是可执行程序,即后缀为.exe的程序。

69.C语言源程序不能表示二进制,她

在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、八进制、十六进制3种形式表示。

70.宏名没有大小写限制。宏定义可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。宏代换可以代替任何数据类型,不受数据类型的限制。函数影响运行时间,宏调用影响编译时间。

71.字符数组可以只存放普通字符,不存放字符串。此时该字符数组没有存放结束标志‘’。

篇7:C语言心得与基础知识

float,double都不能保证可以存储一个小数、近似值 1.213e+2 例题:如何判断浮点型变量 X 的值是否是零

if(|x-0.000001|<=0.000001)shi;else no;

为什么循环更新的变量不能定义成浮点型?

心得:试数,数学归纳法,五次在纸上

2.自增[自减]

3.例子:回文数

12112321123

43214.什么时候使用while,什么时候使用for,多尝试!do...while 主要用于人机交互。

do{....} while(表达式);while 与 for 是等价的,可以相互转换; 数组为n个变量连续分配内存空间

所有的变量数据类型必须一样所有变量所占的字节大小必须相等

例子:

int [3];

初始化: 完全初始化

不完全初始化不初始化,所有元素是垃圾值

清零 int [3] = {0};一位数组名不代表数组中所有的元素,代表地址

是否存在多维数组,不存在因为内存是线性一维的,N维数组可以作为每个元素是N-1维数组的一维数组

6.游戏

分感官效果和内核设计两部分.感官效果,涉及图形技术图像技术、音频技术等等多媒体编程.内核设计,要做一个合理的游戏,必须在明确游戏思路和算法的前提下,精确定义玩家可以从事什么行为,不能从事的行为要怎么样标记,异常的操作又要怎么处理。7.函数定义的本质:详细描述之所以能够实现某个特定功能的具体方法

return表达式的含义:终止被调函数,向主函数返回表达式的值。如果表达式为空,则只终止函数不向主调函数返回值

函数返回值的类型也称为函数的类型,如果函数名前面的返回值类型和函数执行体 中的return,表达式中的类型不同的话,最终函数返回的类型一函数名的类型相同。函数分为有参函数和无参函数。库函数,自定义函数。有返回值,无返回值函数 普通函数和主函数,一个程序只能有且只有一个主函数。主函数可以调用普通函数。普通 函数可以相互调用。主函数是程序的入口,也是程序的出口。

{值传递 和地址传递函数}

8.指针

int * p;P是变量名,p变量的数据类型是int * 类型,而int *类型实际就是存放int 类型变量地址的 类型。*p代表的是以p的内容为地址的变量

指针就是地址,地址就是指针,地址就是内存单元的编号(门牌号),指针只是编号。指针变量是存放地址的变量。指针和指针变量是两个不同的概念。但是要注意,通常我们叙述时会把指针变量简称指针。

指针的重要性:表示一些复杂的数据结构,如链表,树,图等模拟现实的显示;快速的传递数据。使函数返回一个以上的值(普通函数返回一个值,return)。直接访问硬件。能够方便的处理字符串。是理解面向对象语言中的基础。。。指针是C语言的灵魂。

指针的分类:基本类型的指针;指针和数组;指针和函数;指针和结构体;

指针的定义:

地址:地址就是内存单元的编号(门牌号),地址是从零开始的非负整数。

范围:CPU(内存的速度快于硬盘)直接处理内存条里的数据。。CPU如何控制内存条,先把内存条的数据读入CPU里,CPU内部进行处理,把结果写回内存条,但内存条数据达到一定程度,会一次性写到硬盘。(控制线,地址线,数据线)。通过地址线能确定CPU对内存条的哪个单元进行控制。范围:【0--4G-1】

指针:指针变量就是存放内存单元编号的变量

指针的本质上就是一个操作受限的非负整数。(不能进行相加等运算,可以进行相减,连续空间的不同单元)。

基本类型的指针:

指针和数组:包括一维、二维数组。

一维数组名是一个指针常量,存放的是一维数组第一个元素的地址。

如果一个函数要处理一个一维数组,则需要接收该数组的哪些信息?界定一个一维数组要几个参数:

sizeof 的返回值就是给数据类型所占的字节数

一个指针变量无论他指向的变量占几个字节,该指针变量本身只占四个字节。

动态内存分配的问题:

数组的优点:存取速度快

传统数组的缺点:

数组的长度必须事先指定,不能是变量

例如:int a[5];int len = 7;int a[len];//错误

传统形式定义的数组,该数组的内存程序无法手动编程释放,只能在函数运行完毕后由系统自动释放。数字一旦定义,系统为该数组分配的存储空间就会一直在。。在一个函数运行期间,系统为该函数中所分配的空间会一直存在,直到函数运行完毕后由系统自动释放。

数组的长度不能在函数的运行过程中动态的扩充或缩小。数组的长度 一旦定义,其长

度就不能在改变。

A函数定义的数组在A函数运行期间可以被其他函数调用,当A运行完毕后,A函数中的数组将无法在其他函数使用。(A内的内存空间被释放啦)传统方式定义的数组不能跨函数使用。

为什么需要动态分配内存:

因为能解决传统数组的缺陷。传统数组也叫静态数组。

动态内存分配举例: int *p =(int *)malloc(4);//12行

/*1.要使用malloc函数,必须添加malloc.h这个头文件 2.malloc 函数只有一个形参,并且是整数 3.malloc(4)的4表示请求系统为本程序分配四个字节 4.malloc函数只能返回第一个字节的地址。5.地址,内存单元的编号。12行分配了8个字节,p变量占四个,p指向的内存也占四个字节

*/ 6.p本身所占的内存是静态分配的,p所指向的内存是动态分配的。

free(p);//把p指向的内存释放,p本身不能释放,而只有main函数终止由系统释放。静态内存与动态内存的比较:静态内存是由系统自动分配,由系统自动释放,静态是在栈分配的动态内存是由程序员手动分配,手动释放动态内存是在堆分配的。

跨函数使用内存的问题:

枚举:如果一个变量只有几种可能的值。。指将变的值一一列举出来。变量的值只限于列举出来的值的范围内。enum 枚举值称为枚举元素或者枚举常量。值 0,1,2,3.。。

算法:

通俗的定义:

解题的方法和步骤

狭义的定义:

对存储数据的操作 对不同的存储结构,要完成某一个功能所执行的操作不一样 例如:输出数组中所有的元素操作和要输出链表中所有的元素操作不一样...说明了算法依附于存储结构的,不同的存储结构所执行的算法不一样。

广义的定义:

广义的算法也叫泛型。无论数据如何存储的,对该数据的操作都是一样的。我们至少可以通过两种结构来存储数据,一个是数组,一个是链表。

链表:

头结点(其数据类型和首节点的类型是一摸一样的,头结点是首节点前面那个节点,头结点不存放有效数据,设置头结点的目的是方便对链表的操作),头指针(存放头结点地址的指针变量),首节点(存放第一个有效数据的节点),尾节点

头指针->头结点->首节点->.......->尾节点(null)

确定链表需要一个参数:头指针

优点:插入删除元素效率高,不需要一个连续的很大的内存。

NULL本质也是零,而零 不代表数字零,而代表的是内存单元的编号零。\以零为编号的存储单元不可读不可写

字符串是作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的,字符串的实际长度与数组的实际长度相等。字符串结束标志: ‘’例如:C Program 共有9个字符,但内存占10个字节,字符串作为一维数组存放在内存中。缺点:查找某个位置的元素效率低

1、C中内存分为四个区

栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。

堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。

全局局:用来存放全局变量和静态变量。存在于程序的整个运行期间,是由编译器分配和释放的。

文字常量区:例如char *c = “123456”;则”123456”为文字常量,存放于文字常量区。也由编译器控制分配和释放。

篇8:c语言程序设计基础

1 明确教学的目的

讲授C语言的目的不是要让学生在学习完后能够编写出功能多么强大的程序,这听起来似乎C语言没什么用。并非如此,C语言在培养学生基本的逻辑思维能力、计算思想等方面,都起着很重要的作用。

C语言是为了编写系统软件而产生的一种高级语言,具有行文简练、语法规则简单、运算符丰富、语言通俗易懂、可以进行低级操作等特点。C语言之所以能够在各高校中开设,原因也在于此。教学中要促使学生树立C语言的普遍适用思想,并且要让学生知道C语言对自己所学专业有什么帮助,为什么这个专业会开设C语言这门课程。C语言作为一门基础性计算机语言,而且是多数理工科的计算机技能方面的基础课程,但多数情况下,并不是所有的理工科专业会一直接触计算机方面的课程,但通过C语言培养起来的逻辑思维能力和计算能力,能够对后续课程的学习起到很大的作用。通过实验实践,我们了解到,在C语言教学中贯穿应用程序实例,特别是一些典型的,有生活趣味的程序,会大大激发学生的学习兴趣,使其更深入的理解C语言。

2 多媒体教学的作用

现在大部分高校开设C语言课程,多数的讲解都是在多媒体教室进行的。但多媒体不能完成所有的教学活动。在教学过程中我们应该将多媒体和传统的黑板相结合,有效使用高科技手段,这样,可以将课本中深奥的理论知识转化成生动的幻灯片,使得学生理解起来更加简单,并且可以在讲解过程中提出一些问题,让学生思考作答,从而加深学生对问题的理解。多媒体教学,将抽象问题形象化,枯燥问题生动化。理论联系实际的方法得到了充分的施展。而且还可以根据教学的需要,根据不同的教学目标,教学内容合理适当地组合使用各种教学媒体。

3 关于教学模式的探讨

3.1 以典型实例为引导,讲解语法规则

《程序设计基础(C语言)》中很多知识比较抽象、枯燥,学生不容易理解和接受,这就要求教师在课堂教学中要想办法将枯燥的理论变得生动,将难理解的理论讲得简单易懂。例如,对于“函数”的概念,我们可以在讲解基本概念的之前,先以一个例子为引导逐步引出各个相关知识点和概念,分别对这些知识点进行讲解,然后对知识点进行总结性的讲解,避免纯粹学习语法的单调枯燥。这不仅能激发学生的学习兴趣,而且更容易帮助学生理解相关内容。

3.2 算法教学

C语言学习过程中,学生感到困难的一般不是在于语法,语法学习起来很简单,但是如何运用语法编写语句,再把语句连起来构成程序就比较困难,这就牵扯到了算法的问题。由于C语言语法的逻辑性较强、结构性要求较高,学生在学习过程中容易忽略一些小问题,而算法恰恰是C语言的灵魂所在,因此在算法教学中可以通过实例进行,从最简单的例子入手使学生掌握基本的编程思想。同时让学生知道根据同一个问题编写出不同的几种算法,进而去比较这些算法之间的优劣,找到最简单的散发,就会了解算法的优化。通过进一步的练习,可以在无形中提高学生写算法的水平,使得学生真正了解到算法是程序的灵魂。

3.3 项目教学

在C语言的教学过程中,我们可以采用项目教学法。所谓项目教学法,就是师生一起用C语言开发一个系统或者完成一个比较庞大功能的程序。首先对各个功能模块进行分析,然后对完整的项目系统进行分析,培养学生良好的编程习惯,从模块做起,再连接成庞大的系统程序,并且在编程中充分吸收有益的方式方法,从而完全了解项目流程,真正提高编程水平。例如让学生编写一个简单的财务收费管理系统,这不但使得学生掌握了所学的C语言知识,同时也使得学生了解了数据库、流程图等其它软件设计方面的内容。这样,不但提高了学生的实践能力,同时也激发了学生的学习兴趣,更能够扩大学生的知识面。

3.4 实验实践环节

C语言是一门以实验为基础的课程。光有理论知识,不上机编程,等于没学。教学过程中除了教师的课堂讲解外,其余的都是要通过不断的上机编程使得学生了解C语言真正的内涵。实践环节可以用以下的方法:1)加强上机实践,使学生的动手动脑能力进一步提高。2)布置一些能够激发学生兴趣的题目,培养学生编写程序解决问题的能力。3)教师可在适当的时候进行演示。4)在所有学生编写的程序中,挑出具有代表性的程序,进行讲解,让大家分享,从而找出自己的不足,进一步提高自己的编程水平。

4 总结

C语言作为一门计算机知识的专业基础课程,主要的目的是培养学生的逻辑思维和计算能力。作为教师,必须认识到非计算机专业的C语言课程存在着很多自身的特点,应该根据各个专业的不同而制定不同的教学大纲和计划。在教学中应当遵循“算法重于语法,语法重于编码”的原则因材施教,并且要注重理论知识和实践环节的相互结合。

摘要:C语言是高校非计算机专业的必修课程,但由于各专业有所差别,不同专业对C语言学习的要求有时相差很大。这就给C语言的日常教学提出了新的课题。该文在具体讲授这门课程的实践中,对如何提高该门课的教学以及与该门课教学有关的一些问题进行了相关的探讨。

关键词:C语言,编程,教学方法

参考文献

[1]谭浩强.C程序设计[M].北京:清华大学出版社,2001.

[2]王宁.C语言程序设计教学初探[J].科技创新导报,2008,29.

[3]张玉学.高职电子专业C语言教学探讨[J].现代企业教育,2007,8.

[4]张敏霞.程序设计语言课程教学方法改革的探索与实践[J].中国高教研究,2004,2.

上一篇:以整村推进扶贫开发为动力全面加快社会主义新农村建设下一篇:安明施工费拨付规定