计算机导论课程报告
课程报告要求
每人提交一份打印的纸质课程报告。
篇幅:8-10A4页。要求摘要和参考文献。鼓励正文中使用图表表述。要打印封面,报告的格式要规范。
不允许相互抄袭和直接抄袭科技论文,要有自己的观点和想法。
12月29日课堂上交报告。
课程论文内容
第一部分:围绕某个专题,从历史的演变,发展状态和未来趋势等展开讨论,论题要有新颖性、时代性和方向性。下面列举几个课程报告的方向供参考。
人工智能/数据库/计算机网络/数据挖掘/密码/信息安全/集群/云计算
软件项目管理/软件工程数据、信息和知识计算机程序设计语言计算机操作系统/体系结构
1Web技术/某一个技术应用方法和技术神经网络/网格/进化计算/计算机图像数据库/网络/网页设计/信息安全/病毒
第二部分:根据个人情况,通过本科课程学习和自己对计算机学科的了解,对教学方法进行讨论,下面列举几个课程报告的方向供参考。
对计算机学科/某一专业的认识/之我见计算机与社会
计算机专业及大学四年的专业学习规划计算机专业与专业人生规划
Xxx(研究方向、学科、课程等)学习方法计算机专业学习方法论之我见计算机专业教学计划之我见我的大学生活专业学习
2面格式:
佛山科学技术学院本科生课程考试
考生姓名考生学号系、年级考试科目计算机导论考试日期201*年12月29日3
封内容格式:
题目
摘要:关键词:
正文:(四号、1.2倍行间距)……………………
参考文献:(按引用先后顺序)
扩展阅读:计算机导论课程报告
计算机学院网络工程专业
《面向对象程序设计》课程报告
(201*/201*学年第二学期)
学生姓名:学生班级:学生学号:授课教师:
201*年6月27日
内容简介
本学期主要学习了计算机语言程序设计,包括汇编语言和高级程序语言设计(C语言和C++语言)的基本介绍和初级应用。
其中第一章的语言介绍,旨在系统的了解计算机的构造原理和计算机语言的特点,以及通过对比其他语言了解计算机的逻辑思维范式,只是系统的介绍,让其对计算机语言有一个初步系统的了解。
第二章汇编语言的介绍学习,是对以后的高级程序语言即C语言和C++语言做铺垫,学习目的旨在进一步了解计算机语言的逻辑特点和使用方法。熟悉计算机的思维方式,为以后学习C语言和C++语言打基础。熟悉各种逻辑指令和操作方法,
练习一些使用编写一些简单的逻辑指令,熟悉程序操作在计算机内的运行情况和方法。了解程序的基本原理。
第三章的高级语言程序设计,是在原来的汇编语言基础上进一步去深入学习语言程序设计,C语言和C++语言属于高级语言程序设计,学习使用这两种语言需要多种知识的了解,本章的学习重点就是介绍这两种语言的具体操作流程和使用的逻辑指令,练习熟悉各种库语言的使用,在实际操作中加深对程序语言的认识,并对各种语句操作有系统的认识为以后进一步学习做基础。
目录
第一章计算机语言概述............................................5
第一节.语言......................................................................................................................................5
1.11.语言(学习格式思维了解和掌握语言共同性)..........................................................51.12.程序设计(算法程序)........................................................................................51.13.语言结构..............................................................................................................................5 第二节.计算机硬件结构..................................................................................................................51.21.冯诺伊曼结构........................................................................................................................51.22.CPU从内存取指令数据.......................................................................................................61.23.CPU的内部结构...................................................................................................................6
第二章.汇编语言程序设计........................................7
第一节.汇编语言的特点及其操作.........................................................................................7
2.11.汇编语言的特点..............................................................................................................82.12.汇编语言简易的操作............................................................................................................8 第二节.程序流程图画法..................................................................................................................92.21.基本概念................................................................................................................................92.22.常用算法流程图符号和功能................................................................................................9 第三节.中断机制(INTERRUPT软中断).......................................................................................102.31.int3代码:处理结束程序(间接寻址机制)...............................................................102.32.int21代码...........................................................................................................................112.33.中断......................................................................................................................................112.35.子程序调用..........................................................................................................................122.35.扩展(与数据有关的寻址方式)......................................................................................13
第三章.高级语言程序设计......................................14
第一节.C语言的概念与特点.........................................................................................................14
3.11.C语言的概念.....................................................................................................................143.12.设计design........................................................................................................................14第二节.高级语言程序的初步认识................................................................................................153.21.标识符..................................................................................................................................153.22.库runtime(运行库)....................................................................................................163.23.内存的分配,数据的分配,和一些指令的初步认识..................................................17扩展知识:格式化输入输出函数........................................................................................20第三节.循环结构............................................................................................................................213.31.If结构.................................................................................................................................213.32.Switch语句......................................................................................................................213.33.For循环语句......................................................................................................................223.34.While语句.........................................................................................................................3.35.Dowhile语句.................................................................................................................233.36.循环嵌套结构....................................................................................................................24 第四节.指针..................................................................................................................................253.41.指针的概念..........................................................................................................................253.42.指针的类型..........................................................................................................................263.43.指针应用中常见的错误......................................................................................................27 第五节.函数..................................................................................................................................283.51.函数的概念..........................................................................................................................283.52函数的描述..........................................................................................................................293.53.函数的申明与调用..............................................................................................................293.54函数的传值方式..................................................................................................................29 第六节.递归程序设计和调用......................................................................................................303.61递归程序的调用...................................................................................................................30 第七节.数组....................................................................................................................................313.71.数组的定义与初始化..........................................................................................................313.72.多维数组..............................................................................................................................313.73.字符数组..............................................................................................................................32
第一章计算机语言概述
第一节.语言
1.11.语言(学习格式思维了解和掌握语言共同性)1.自然语言:如汉语,法语,英语2.人工语言
(1).世界语言(中间语言)(2).计算机语言
①高级数据库语言和C语言(低级)(与硬件相关,系统语言)为机器开发②低级(OS)机器语言
特点:移植性差可读性差复杂性高可维护性差
3.C语言特点
(1).可以做到机器语言的功能(2).与机器语言的差别20%效率高1.12.程序设计(算法程序)
设计:组织
分解:将复杂,大,任务简单易完成易理解1.13.语言结构
1.字母表:机器语言01自然语言Az2.词汇表(由字母构成)3.句子(由词汇构成)4.段落(由句子构成)
5.章节(由段落构成):节即高级语言中的函数,章包括字段,文件。
第二节.计算机硬件结构
1.21.冯诺伊曼结构
现在计算机的结构是由冯诺伊曼在1945年提出的它明确规定新型计算机有5个组成部分:①计算器CA;②逻辑控制装置CC;③存储器M;④输入I;⑤输出O。并详细描述了这5个部分的职能和相互关系。以后称此结构为冯诺伊曼式结构其图示如下
1.22.CPU从内存取指令数据1.指令周期
(1)fetch取指令(2)decoder解指令if(3)取数据
(4)execute执行指令if(5)将结果存入内存1.23.CPU的内部结构
CPU内部结构包括:运算器,控制器,寄存器。关系如下图:
输入输出IO1.Address地址总线
Bus2.Date数据总线
3.Control控制总线
与Bus相连
1.寄存器类型
Ax加法寄存器存被加数运算结果BX基址寄存器内存的起始位置CX计数寄存器配合寻址DX数据寄存器存放中间数据
2.段寄存器CS:代码段基址DS:数据段基址SS:stack栈节省内存3.标志寄存器:flag8位
Zero0位Carry进位overflaws溢出
第二章.汇编语言程序设计
用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
第一节.汇编语言的特点及其操作2.11.汇编语言的特点
(1).面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
(2).保持了机器语言的优点,具有直接和简捷的特点。2.12.汇编语言简易的操作
(1).打开debug程序:所在位置系统目录\\system32\\debug.exe,.打开开始运行debug
(2).内存命令,使用“-?”了以查看可以使用的命令“-d+数字”进入相应内存地址“-r”显示相应内存当前的值
“-e+数字”查看并修改当前内存值,改下个直接按空格,回车结束修改。(3).实际操作
例如对01110100金额00011101进行加法操作:计算机的逻辑:先将两数与操作左移一位
若有进位结束无进位求异或(结果与进位求异或)进位不为零则重复
如图示:求以下两数和汇编语言
[0200]01110100MOVDL[0200][0201]00011101MOVAL[0201]A:MOVCLAL
先与操作AND00010100ANDALDL左移SHL00101000SHLAL1异或XOR01101001判断进位是否为0JC(end)
AND00101000XCHGALDLSHL01010000XORALCLXOL01000001TESTDLFFAND01000000JZ(end)SHL10000000JMPAXOR01000001int3AND00000000
SHL00000000进位全为0XOR10010001输出结果
即91
(4).移位和转位
Shift简写SH移动命令SHL左移SHR右移Relate简写RO转位命令ROL左转ROR右转
图示:
Carry
00010左移1
Carry000100
010010右移100100
(5).跳转
Jump+目的地址JZ+目的,相等跳转JC有错位跳转JNC无错位跳转
第二节.程序流程图画法
2.21.基本概念
流程图是一种用带线头的箭头将有限几个几何图形框连接起来的,其中框用来表示指令动作或指令顺序或条件判断,箭头用来说明算法走向。流程图通过形象化的图示,能够较好的表示算法中描述的各种结构,有了流程图程序设计可以更方便和严谨。
2.22.常用算法流程图符号和功能
表示开始或结束表示算法数据中数据的输入或输出
表示为程序的表达语句,对数据进行处理表示对数据进行判断
表示算法中处理流程的走向例如:根据以下画流程图1.从内出取两个二进制数2.求无进位和3.左移一位
4.无进位和与进位做二进制加法
5.在求出进位后,判断进位是否为0,若为0结束,不为0则判断是否溢出。
开始进位=0?从内存取两个二进左移1位求无进位和(XOR)CF=1?求进位(AND)将进位与无进位和放入内存中结束
注释:算法要写明基本思路,用自然语言写流程,判断循环和结束条件
第三节.中断机制(interrupt软中断)
2.31.int3代码:处理结束程序(间接寻址机制)
以16位机制为例,以3×2所得字节数来得到当前地址,然后再运行中断机制。
038A070362805204103303201*1结果“int3”运算3×2找到6号地址位置,并取出放入IP中。
注释:中断处理机制程序在外存中,当放入内存中并不固定的内存数。
中断处理程序地址表:一般的0号中断在内存0300中,1
号在0320中,2号在0380中,3号在03A0中。
2.32.int21代码
从键盘读一个字符到AL中:AH01从键盘读一串字符(以结尾):AH0A向显示器写一个字符到AL中:AH02向显示器写一串字符(以结尾):AH09其中AH表示内存高8位,用来放功能符号例:
1)写一个字符到标准输出(显示器)MOVAH=2
MOVDL=“41”A的ASCII码为41int21
2)读一个字符到显示器MOVAH=1int212.33.中断
中断和子程序调用的共同机制,浮动代码器,可以访问浮动代码,并对浮动代码在内存的位置和内存中的位置移动重定位程序。2.34.栈(堆栈stack)
1.特点:后进先出LIFO先进后出FIFO2.保存环境push进栈(压栈)pushAX:表示将AX的数据压到堆栈中POP出栈(退栈)2.35.子程序调用
1.取址永IP指针取指令,调整IP值到下一条指令地址2.执行指令:例如JMP105则会用105改变IP中原有值3.执行(call)pushIP用address修改IP值4.取指(RET)
例:1.执行RETPOPIP则执行call的下一条指令,执MOVCLALCall200MOVAH1MOVAL5RET11611811A200
子程序调用实验例题:显示一串字符内存设置:
主程序:04004D,41,49,4E,main子程序:041053,55,42sub
420
程序设计:(1).改写内存值
D400显示内存0400E400改写内存4D,41,44,4E,3D,3E,24“24”是的ASCII码E410
53,55,42,3D,3E,24
42,41,43,4EBack
行完116指令IP118
2.取指(call200)调整IP,11AIP1.执行指令(call)pushIP,然后200IP2.取指(MOVAL5)
3.RET取指RET执行指令POPIP(11AIP)
然后取指(MOVAH1)E420
42,41,43,24
(2).主程序3.子程序A100在0200处写程序MOVAH,09MOVAH,09MOVDX,0410MOVDX,0400Int21Int21RET返回CALL200调用子程序MOVAH,09MOVDX,0420Int21Int1
(3).程序运行
G=100从内存100处开始运行结果显示main=>sub=>back
用t指令观察程序运行具体变化,观察每步运行。
这种调用子程序和寻址方式在处理大量数据时效率高,速度快,修改起来方便。2.35.扩展(与数据有关的寻址方式)1.立即寻址2.寄存器寻址
①.有效地址四种成分:位移量,基址,变址,比例因子。②.有效地址的计算方式:EA=基址+(变址×比例因子)+位移量
3.直接寻址适用于处理单个变量,要处理某个存放在储存器中的变量,可以用直接寻址方式把该变量先取到一寄存器中然后再进一步处理4.寄存器间寻址方式
操作数的有效地址只包含基址,寄存器内容或变址寄存器内容5.寄存器相对寻址方式(直接变址寻址方式)
操作数的有效地址为基址寄存器或变址寄存器的内容和指令的位移量6.基址变址寻址方式操作数的有效地址是一个基址寄存器和变址寄存器内容组成。7.相对基址变址寻址方式
操作数的有效地址是一个基址寄存器和变址寄存器内容和指令中制定的位移量组成
8.比例寻址方式
操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上位移量之和,所以有效地址有三部分组成。9.基址比例变址寻址方式
操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄存器的内容。所以有效地址有三部分组成。10.相对基址比例变址寻址方式
操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄存器的内容再加上位移量的和。所以有效地址有四部分组成
第三章.高级语言程序设计
第一节.C语言的概念与特点
3.11.C语言的概念
C是一种结构化的程序设计语言,它简明易懂功能强大,可使程序员不必关注程序在何种机器上运行,而致力于问题本身处理。C语言集高级语言与低级语言功能于一体,适合于各种硬件平台,既可用于各种软件的开发,也适用于应用软件的开发。
C语言具有丰富的运算符和数据类型,便于实现各种复杂的类型的数据结构;它可以直接访问内存的物理地址,直接对硬件的底层操作,能实现汇编语言的大部分功能,因此,也有人把C语言称为中级语言;C语言还可以进行位的运算,实现对数据的“位”操作。另外,C语言还具有效率高,可移植性强等特点。
3.12.设计design1.选择(methods方法,techniques技术,tools工具)来满足需求(requirements),同时满足正确,成本(硬件,软件,人力资源)和效率。高级语言如C语言有标识符,地址包括指令地址,数据地址和函数地址例如:
#include#include表示宏(marro)CharszHello[]=!’Hello’;
Intmain()第一条命令指令从这里开始{
Cout(2).用“___”,“09”,“az”,“AZ”是规范标识符(3).C语言或C++语言中大小写字母表示不同标识符(4).开头小写字母要表明内存中所存数据类型例如:chuserinput:表明接收用户输入n(整数数字)coefficient:存的是整数db/dw:小数szstandNO:符号(5).定义布尔值
Is(开头)NUM:是一个数字吗?(6).定义常数
Const:doublePI=3.14const类型:(字符串,整数,小数等)全大写标识符=最后值
(7).标号是有多个字母构成其中首字母大写,其他小写(8).单词过长时可以缩写字符(符合惯例)3.标识符的基本数据类型(1).包括数据类型和数据含义
Char字符型,1个字节int整数型,4个字节double浮点型,8个字节bool布尔型,1个字节shortint,2个字节
例如:C语言中charszstudNo[10](9位)大于9位就会溢出
C++中charszstudNo:#include3.22.库runtime(运行库)1.C库与C++库的比较
C库:加后缀.h如:#include#include#include#include
C++库类库不加.h如#include,#include等Usingnamespacestd使用标准C++库例如程序:
#include使用标准C库//#include
Charch=‘a’;单引号表示字符长度为1/双引号表示字符长度为2Intnum1=8;ShortIntnum2=5;Doubledw=0.5;Boolb=true;
Cout
00000005&num0200;Num=5;直接寻址
*(&)num;取地址中的值
2.C语言中有printf()表示格式化输出函数,其包含在这个库中printf(“格式”)标识符列表
如果“:”以整数输出如果“f”以小数输出如果“x”以十六进制输出如果“c”以字符输出
L表示显示长度,D表示小数点位数,f以什么格式输出例如:
%8.2f8:长度为8,2:小数点第二位,f:以小数输出“+”表示右对齐“-”表示左对齐3.标识符内存分配
(1).标识符在某函数内部从栈上分配,一旦return退出,函数从内存空间释放。
(2).标识符定义在所有程序之外,内存从栈上分配,只有从程序退出(程序结束)相应空间程序才释放。
(3).虽然定义在某函数内部,但若是用static定义(静态)则为全局的内存分配的规矩从偶数开始,这样做只需一个周期即可。例如:
Char:a61:420e741Shortint:10a:420e762Int:55:420e784char:a61:420e741Int:55:420e784Shortint:10a:420e764.If(条件判别)逻辑表达式Printf格式化输入输出
Cout使用scanf()注意
1).要注意数值型数据和字符型数据的取值特点,如果要同时输入这两种类型的数据,可采取先输入字符数据后输入数值型数据,以减少错误的发生。2).为减少错误的发生,建议在scanf()语句中不要加入可见字符,如果想知道应该输入什么数据,可以再scanf()语句前面加上一个提示语句。***********************************************************扩展知识:格式化输入输出函数1.格式化输出函数
(1).作用:控制字符串的指定格式
(2).格式:Printf(“控制字符串”,输出项列表)
(3).输出项列表:常量,变量,表达式。输出多项时,各项要用逗号隔开。控制字符串是由格式说明和普通字符组成,只有普通字符串时不需要输出列表(4).格式说明
格式%[];(5).输出格式字符
d十进制整数e科学计数法o八进制输出hd十进制输出短数型ld十进制输出长数型u无符号x十六进制f浮点小数c字符型s字符串
2..格式化输入函数scanf()
(1).格式:Scanf(“控制字符串”,输入项目列表);规定数据输入格式
Scanf()中输入列表中变量地址前应加操作符“&”变量类型与中格式说明一致(2).格式说明
格式%[]1)字符宽度
如scanf(“%3d”,&a);数据宽度不能超过3个字符
2)字符头“*”*按规定格式输出但不赋变量,作用跳过相应的数据。例:intx=0j=0z=Scanf(“%d%*d%d”,&x&y&z);若输入112233结果x=11y=33z未赋值
**************************************************************
第三节.循环结构
3.31.If结构
if语句是最简单的分支结构,一般形式为:If()例如ifelse语句:
if()else如果真执行语句A若否执行语句B
If语句的嵌套
If()Elseif()
Else任意嵌套
在ifelse结构中任意执行程序中插入if结构或ifelse结构
3.32.Switch语句1.一般形式为:switch()
{Case:语句序列1;Case:语句序列2;
Case:语句序列n
Default:语句序列(n+1);}
2.常量表达式如:整型字符型枚举型流程图:
由于switch语句形式不具有通常意义上的“分支”根据switch语句的语法规则:程序在满足第i个条件后,从语句序列i开始执行,直到为止
3.33.For循环语句
1.for语句其循环次数是通过一个循环变量来控制的故把这种循环称为计数循环包含3个重要组成部分
(1).初始化循环控制变量(2).测试循环条件(3).变更循环控制变量的值
2.格式:其一般形式为
For(;;){}3.功能:如下4个步骤
(1).计算对循环变量进行初始化
(2).判断若“假”退出,若“真”执行循环(3).计算更新循环变量的值(4).转第二步
For语句流程图While语句的流程图
3.34.While语句1.格式:一般形式while(){}
构成循环体语句用来更新计算变量的值
3.35.Dowhile语句1.一般形式:Do
{While()}
2.语法功能
(1).执行
(2).计算条件表达式,若值为真则执行步骤1若为假则退出循环执行下一条语句。
3.36.循环嵌套结构
1.概念:循环结构的嵌套,指的是在某一循环结构的语句中,包含有另一个循环结构,理论上,循环嵌套的深度不受限制,但实际中不提倡使用嵌套层次太多的循环结构。
2.使用嵌套的结构:要注意嵌套的层次,不能交叉,嵌套的内外层循环不能使用同名的循环变量,并列结构的内外层循环允许使用同名的循环变量。举例:九九乘法表:
#include
voidmain(){
inti,j;
for(i=1;i1*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*2=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
第四节.指针
3.41.指针的概念
在C语言中,指针被用来表示内存单元的地址。指针变量的值就是某个内存单元的地址或称为某内存单元的指针。指针的引入为系统存取数据提供了一种“间接访问”方式。所谓间接访问,是先访问存放变量地址的存储单元,得到该变量的地址,再对变量内容进行访问。指针变量是一种特殊变量。系统为指针变量分配一块连续存储单元不是供其存储数据,而是存储内存地址。因此,指针变量是存储内存地址的变量。
例如:
假设有:intI=-5;Charch=’A’;Floatx=7.34;
则变量i,ch,x占用的内存可由下图表示:整数型变量i占2单元,字符型变量ch占一个单元;二浮点型变量x占4个单元。
3.42.指针的类型
1.指向简单变量的指针。指针所指的数据类可以是简单的数据类型。例:(1).int*p,i;p=&i;意思是指针变量指向整型变量i
1111111111111111111111111111(2).char*p,a;p=&a;意思是指针变量指向字符型变量a
(3.)int*p,a[10];p=a;意思是指针变量指向数组a
2.指向数组的指针。指针所指的数组既可以是一维数组,也可以是多维数组。例:main()
{int[4]={2,4,6,8};int*p;
for(p=a;pq=p;
printf("%d\\n",*(*(q+1)+1));}
分析:指针数组p的各个指针变量指向数组a的各行首地址,q指向指针数组p的首地址,*(q+1)等同p[1],如此,*(*(q+1)+1)便等同*(p[1]+1)也就是a[1][1],因此程序输出7。
5、指向函数的指针。指针变量指向函数的首地址,然后通过该指针变量调用该函数。定义如:int(*p)()。例:intmax(inta,intb){return((a>b)?a:b);}main()
{intmax(int,int);int(*p)();inta,b;
p=max;scanf("%d,%d",&a,&b);printf("max=%d\\n",(*p)(a,b));}
分析:int(*p)()表示定义了一个指向函数的指针变量,函数名max代表了函数的入口地址,执行p=max后,p指向了函数max,(*p)(a,b)便是通过p调用函数max。
6、指向文件的指针。C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成一个文件指针,通过该指针来对文件进行操作.定义如:FILE*fP;(fp为文件指针,此时fp不指向任何文件)。3.43.指针应用中常见的错误
1.把数据赋给指针变量。指针在使用前必须进行初始化,赋予指针的值必须是地址。例:main()
{inti=6,*p;p=6;printf“(*p=%d\\n”,*p);}
正确语句:p=&i;“&”是一个取变量地址的运算符。2.指针常量运算错误。
程序中常量指针是不能被修改的。典型有数组名指针常量和指向字符串常量的指针。例:main()
{inta[5]={1,2,3,4,5},*p;p=a;printf“(%d\\n”,*(++a));}正确语句:printf“(%d\\n”,*(++p));3、指针赋值类型不一致例:main()
{int*p,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};p=a;printf(“%d\\n”,*p);}
正确语句:p=a[0];或p=&a[0][0];如果一定把a赋值给p,必须先将a转换成整型指针类型,如:p=(int*)a;。特别是将多维数组赋值给指针变量时应注意类型匹配。
第五节.函数
3.51.函数的概念1.函数概念
在C语言中函数可分为两大类,一类是系统定义的标准函数,又称库函数,其函数申明一般是放在系统的include目录下以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#include命令将函数库的信息包含到本程序中。
另外一类是自定义的函数,这类函数是根据问题的特殊要求而设计的,自定义的函数为程序的模块化提供了有效的技术支撑,有利于函数的维护和扩充。
2.函数定义
函数定义一般形式为:
[存储类型符][返回值类型符]函数名{函数语句体}*说明:
1.[存储类型符]是指函数作用范围,有两种形式:static和extern.
2.[返回值类型符]是指函数体语句执行完后,函数返回类型,如int,float,char等,若函数无返回值则用空类型void来定义函数返回值,默认值为int。
3.52函数的描述1.接口函数的描述
2.函数名:如scanf()printf()srand()等。3.函数功能:
一些语句的集合,这些语句组合在一起完成一项操作,返回所需要的结果。4.输入参数:
例如:char*sz1:第一个函数的首地址
char*sz2:第二个函数的地址
5.输出参数:传递结果
6.返回值:“int”返回什么位置7.函数签名
参数个数和类型:只要个数和类型又不相同的,函数就不同。其中函数名相同但里面的参数个数和模型不同称为函数的重载。
3.53.函数的申明与调用1.函数的申明
函数申明语句的一般形式为:
【储存类型符】【返回值类型符】函数名(【形参说明表】);2.函数的调用
一个函数写好后,若不通过函数调用,是不会发挥任何作用的,函数调用是通过函数调用语句来实现的,分为以下两种形式:
(1).函数无返回值的函数调用语句(2).函数有返回值的函数调用语句3.54函数的传值方式1.调用方式
变量名=函数名;
在调用函数时,若函数是有参数的,则必须采用实参表将每一个实参的值相应地传递给每一个形参变量,形参变量在接收实参表传过来的值时,会在内存临时开辟的新空间,以保存形参变量的值,当函数执行完毕时,这些临时开辟的内存空间会被释放,并且形参的值在函数中无论是否发生变化,都不会影响实参变量的值的变化,这就是函数的传值方式。
2.传值方式
自定义函数在程序中的使用顺序有以下两种形式:
(1).先进行函数申明,再进行函数调用,函数定义放在main函数后面。函数申明应放在函数调用的前面,具体位置与编译环境有关。
(2).函数定义放在main函数的前面,再进行函数调用。在这种情况下,可以不进行函数申明。
第六节.递归程序设计和调用
3.61递归程序的调用1.直接递归调用
直接递归调用是指在函数定义的语句中,存在着调用本函数的语2.间接递归调用
间接递归调用是指在不同函数定义中,存在着互相调用函数语句的情况递归有几个部分组成(1).结束条件(最小规模)
(2).递归条件。(即n与n-1的关系)例如用递归求阶乘:
#includeIntjc(int);intMain(){
intn=1;
cout(pleaseenterainteger:\\n”);cin>>n;
coutIntj=1{if(n==1){j=1;}Else
{j=jc(n-1)*n;}
Returnj;}}
运行结果为:pleaseenterainteger:输入5结果5!=120
第七节.数组
3.71.数组的定义与初始化1.一维数组的定义
为了与简单变量区别开来,数组利用其下标来区分不同变量,一维数组的定义格式:
[存储类型][数组大小];如inta[6];
数组名为a,它有6个元素,分别为a[0]、a[1]、a[2]、a[3]、a[4]、a[5],每个元素都代表一个整型变量。
数组在内存中式按顺序连续存放着,占用的内存大小为,每一个元素占用内存大小的和。
2.一维数组的初始化
C语言允许在定义数组的同时,可以对数组中的元素赋初始值,称为数组的初始化。
其格式为:[static]<数组名[]>={};3.72.多维数组
1.二维数组的概念
二维数组的应用很广,如平面上的一组电的集合就可用二维数组表式,每个点代表着X轴的横坐标和代表着Y轴的纵坐标来表式,应此平面上的电可用二维数组表式:
2.二维数组的定义二维数组的定义格式为:
数组名[行元素个数][列元素个数];
如:charword[3][2];/*数组word,具有3行2列,每一个数组元素的值都是字符型数据*/
intnum[2][4];/*数组num,具有2行4列,每一个数组元素的值都是整型数据*/
floatterm[4][3]/*数组term,具有4行3列,每一个数组元素的值都是浮点型数据*/
3.多维数组的定义多维数组的定义格式为:
数组名[元素1的个数][元素2的个数][元素3的个数][元素N的个数];
4.二维数组及多维数组的初始化
同一维数组一样,可以在定义的同时对数组元素赋以初值。对二维数组及多维数组的元素赋初始值时,采用按行优先的顺序对数组元素赋值。赋值时可以采用对元素全部赋值和部分赋值两种方式。3.73.字符数组
1.字符串的输入
(1).向数组元素name[0]输入一个字符,其概念与简单的字符变量的输入相同,既scanf(“%c”,&name[0]);(2).向数组输入整个字符串:scanf(“%s”,name);或scanf(“%s”,&name);3.字符串的输出
用printf函数可输出一个或几个数组元素,也可以将存放在字符数组中的字符输出,例如:printf(“%c,%s”,name[0],name);先输出一个字符数组元素的值name[0],然后输出name数组中整个字符串。如果name数组中的元素值如图所示,则printf函数输出为:v,very
name[0]name[1]name[2]name[3]name[4]name[5]name[6]name[7]name[8]veryhot\\0这是由于在用printf(“%s”,name);来输出字符串时,会把空格符也当成字符串的结束符。另外C语言提供了一个输出函数puts(),用它可输出字符串的空格。
友情提示:本文中关于《计算机导论课程报告》给出的范例仅供您参考拓展思维使用,计算机导论课程报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《计算机导论课程报告》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/730528.html
- 上一篇:微机原理课程设计总结
- 下一篇:计算机硬件课程设计报告(模板)