第一篇:高级语言
高级语言百科名片
由于汇编语言依赖于硬件体系,且助记符量太难记,于是人们又发明了更加易用的所谓高级语言。在这种语言下,其语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。高级语言通常按其基本类型、代系、实现方式、应用范围等分类。简介
计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言(其中C/C++属于中低级语言)等等,这些语言的语法、命令格式都不相同。
低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。
高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。
高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。类型
程序设计语言的类型:
1.命令式语言。这种语言的语义基础是模拟“数据存储/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖语句或命令产生的副作用。现代流行的大多数语言都是这一类型,比如Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C#等,各种脚本语言也被看作是此种类型。2.函数式语言。这种语言的语义基础是基于数学函数概念的值映射的λ算子可计算模型。这种语言非常适合于进行人工智能等工作的计算。典型的函数式语言如Lisp、Haskell、ML、Scheme、F#等。
3.逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现中。最著名的逻辑式语言是Prolog。
4.面向对象语言。现代语言中的大多数都提供面向对象的支持,但有些语言是直接建立在面向对象基本模型上的,语言的语法形式的语义就是基本对象操作。主要的纯面向对象语言是Smalltalk。虽然各种语言属于不同的类型,但它们各自都不同程度地对其他类型的运算模式有所支持。好处 程序设计语言从机器语言到高级语言的抽象,带来的主要好处是:
1.高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
2.高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
3.高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
4.由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
第二篇:《高级语言程序设计》课程设计大纲
《高级语言程序设计》课程设计教学大纲
课程名称:高级语言程序设计课程设计
课程总学时:32 适用专业:广播电视工程、电子信息工程、电子科学与技术
课程类别:必修
一、课程设计任务与目的
《高级语言程序设计》课程是一门实践性较强的课程,课程设计环节是课程学习的重要组成,是课程教学的必经步骤。目的是培养学生实际操作技能和解决实际问题的能力。要求学生掌握C语言设计、调试、运行方法,获得用C语言解题的实际体会,加深对C语言的理解,得到C程序设计方法和技巧的训练,掌握C程序设计的全过程。通过课程设计的教学,使学生巩固和深化已学的理论知识,加强综合应用能力,训练学生掌握分析问题、解决问题的方法,培养较强的动手能力和一定的设计和调试能力。
二、课程设计基本内容与要求
鉴于课程设计的性质、要求和具体内容,对课程设计提出如下要求;
1、关于课题及选题
在课程设计任务书中列出了多个设计课题,每个课题都有相应的要求或说明。参加课程设计的学生首先要了解设计的任务,仔细思考各题的设计要求,然后根据自已的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为原则。
若学生对任务书中课题以外的相关课题较感兴趣,希望选作课程设计的课题时,应征得指导教师的认可,并写出明确的设计要求和说明。
2、关于设计的总要求
在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。
3、验收
在课程设计完成后应由指导教师当场运行、验收,只有在验收合格后才能算设计部分的结束。
4、设计报告
课程设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告一般要以固定规格的纸张书写并装订,字迹及图形要清楚、工整(电子文档尤佳)。内容及要求如下:
(1)设计任务、要求及所用软件环境或工具。
(2)问题模型化描述以及求解算法的简要描述。
(3)设计的模块构成、各模块的简要说明、流程图、调用关系表。
(4)所设计软件的组成(程序文件和数据文件)及使用说明。
(5)设计总结和体会。
(6)验收情况。
三、课程设计设备与材料
计算机;Visual C++6.0或C-Free3.5或Turbo C++3.0软件。
四、考核方式与评分办法
1、学生按照实习计划和大纲完成实习教学任务,考试合格取得相应学分。
2、学生实习考核内容与成绩比例:实习态度与实习纪律占20%、业务能力与水平占40%、答辩与验收情况占20%,实习报告占20%。
3、无故不参加实习或实习全过程缺勤在三分之一及以上者,实习成绩视为不及格。
4、学生实习成绩按优秀、良好、中等、及格和不及格五级评定,原则上呈正态分布,严格控制优秀比例,一般优秀率不大于20%。
五、课程设计参考书
1、潭浩强.C语言程序设计.清华大学出版社.2000
2、廖湖声等.C语言程序设计案例教程.人民邮电出版社.2003
3、张仁杰 王风茂.《C语言程序设计实训教程》中国电力出版社.2004
执笔人:裘姝平
教研室:电子信息工程教研室 编制日期: 2008 年 9月
第三篇:《高级语言程序设计C》实验教学大纲
《高级语言程序设计C》实验教学大纲
课程编号:1021742 总学时:56学时
适用专业:非计算机理工科各专业 总实验学时:24 实验次数: 12 次 应开实验个数:13 已开实验个数:13 实验开出率:100%
实验一
熟悉C 程序的运行环境
一、学时:2
二、实验类型:演示、验证
三、实验目的和主要内容:
1.了解计算机系统对高级语言的基本操作方法
2.熟悉和了解Turbo C 系统软件的使用和操作
3.能进行简单的C语言程序录入、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.熟悉开机操作,使用单机或计算机上网。
2.进入 Turbo C 系统。
3.熟悉Turbo C 系统各菜单命令的使用和操作
4.模仿简单的源程序,编写自己的小程序,并能运行这些程序。
5.录入、调试、编译和运行C语言程序
实验二
数据类型、表达式及输入输出函数实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1. 熟悉和了解C语言的数据类型
2. 使用C语言的有关算术运算符,以及包含这些运算符的表达式
3.进行简单的C语言输入输出函数的使用,格式控制符的涵意,简单C程序的设计、调 试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.编写简单的有输入输出的C程序,并进行该程序的运行、调试、编译。
3.编写一个输入三条边,计算三角形面积的程序。
4.编写程序,计算a+b×c÷d-d3,其中:a,b为整型变量,c,d为实型变量。
5.编写一个有关数据计算程序,验证运算符及表达式的结果。
6.可从布置的作业中,再任选一编程题,进行上机。
实验三
顺序程序结构程序设计
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.进一步掌握C程序的编辑、编译、连接和运行的过程。2.熟悉顺序结构的程序设计方法。3.熟练使用C的各种表达式。
4.熟练掌握输入、输出函数的使用。
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.输入x,y,编写程序求z=x+|y|的值。实验步骤与要求:
(1)程序中用scanf函数输入x和y的值,请分析以下两个语句 scanf(“%f%f”,x,y);scanf(“%f%f”,&x,&y);
哪一个是正确的,分别运行之,分析程序运行结果。
(2)如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。2.编写输入三角形的三边长a、b、c,求三角形面积area的程序。实验步骤与要求:
(1)输入前要加提示语句。
(2)输出结果前要有必要的文字说明。(3)输入一组数据3,4,5,观察运算结果。
(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。
实验四
分支控制语句实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言系统分支语句的使用和操作
2.进行C语言分支控制语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行分支控制源程序的设计,并进行该程序的运行、调试、编译。
3.编辑一个分支控制程序,求:任意输入数(n>2)是否为素数。
4.编辑一个分支控制程序,求:任意输入3个数,求其最大数。
实验五
循环语句实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言循环语句的使用和操作
2.进行C语言循环语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行循环源程序的设计,并进行该程序的运行、调试、编译。
3.编辑一个循环程序,求:1到100的和及平方和。
4.编辑一个循环程序,求:任意输入10个数,求其最大数。
5.可从布置的作业中,再任选一编程题,进行上机。
实验六
数组实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言数组程序的设计方法
2.学会使用C语言数组进行程序设计
3.进行C语言数组语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行数组的定义和使用方法,即:一维和二维数组的应用。
3.进行数组语句源程序的设计,并进行该程序的运行、调试、编译。
4.编辑数组应用程序:
(1)任意输入20个数在一维数组a中,求20个数的平均值。
(2)定义2个二维数组A[2][3]、B[2][3],分别对这2个数组输入数据,求A+B和A-B的值。
(3)用字符数组存储任意输入10字符,求其最大字符。
(4)编辑一个有5个学生,考 3门功课。求出每一个学生的总分及平均分,统计平均成绩低于 60 分的学生人数。
5.可从布置的作业中,再任选一编程题,进行上机。
实验七
有关数组的程序设计
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.掌握有关数组和字符串的程序设计方法。
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤: 已知一组数据如下:6,3,42,23,35,71,98,67,56,38。编写程序,把它们按 从小到大的次序排列起来。求2行3列矩阵A 的转置矩阵。
实验八
函数实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言函数程序的设计方法。
2.学会使用C语言函数的定义及调用,并进行程序编制。
3.进行C语言函数语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行函数的定义及调用。
3.进行函数语句源程序的设计,并进行该程序的运行、调试、编译。
(1)任意输入一个数n,用两个子函数实现1+2+3„n以及n!,在主函数中输出该结果。
(2)在主函数中定义二维数组A[3][4]、B[4],用子函数对数组A[3][4]每一行求和,其值放在数组B[4]中,在主函数中输出该值。
(3)用字符数组存储任意输入的10字符,在子函数中把该字符数组的小写字母转换成大写字母。
4.可从布置的作业中,再任选一编程题,进行上机。
实验九
常用指针实验
(一)一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言指针一般设计方法
2.学会使用C语言指针进行程序设计
3.进行简单C语言指针语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行C语言指针语句的定义和使用方法。
3.进行C语言指针语句源程序的设计,并进行该程序的运行、调试、编译。
4.编辑一个找出字串 str1中 str2出现的位置,用指针编程实现。
5.可从布置的作业中,再任选一编程题,进行上机。
实验十
复杂指针实验
(二)一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.进一步熟悉和了解C语言指针语句设计方法
2.进行C语言中的指针与函数、指针数组、多级指针语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行C语言指针与函数、指针数组、多级指针语句的定义和使用方法。
3.进行C语言该指针语句源程序的设计,并进行该程序的运行、调试、编译。
4.编辑一个在主程序里输入十个不等长的字串,调用自编的函数把它们按升序排列,用指针编程实现。
5.可从布置的作业中,再任选一题编程题,进行上机。
实验十一
结构类型实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言结构、联合数据的定义及设计方法
2.学会使用C语言结构、联合数据类型进行程序设计
3.进行C语言结构、联合语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行C语言结构、联合数据类型的定义和使用。
3.进行C语言结构、联合数据类型源程序的设计,并进行该程序的运行、调试、编译。
4.编辑一个能处理学生综合信息的程序(包括:学号、姓名、班级、语文成绩、数学成绩、英语成绩等)。
实验十二
有关结构的程序设计
一、学时:2(课后完成或选作)
二、实验类型:验证、设计
三、实验目的和主要内容:
1.掌握结构体类型和结构体变量的定义。2.掌握结构类型变量的定义和使用;
3.掌握链表的概念,初步学会对链表进行操作;
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。实验步骤与要求:
用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。
2.三个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到“3”者退出圈子,找出最后流在圈子中的人原来的序号。
3.建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
实验十三
文件实验
一、学时:2
二、实验类型:验证、设计
三、实验目的和主要内容:
1.熟悉和了解C语言文件系统的组成及设计方法。
2.学会使用C语言文件系统进行程序设计
3.进行C语言文件语句的设计、调试、编译和运行
四、需用仪器、设备:
1.硬件环境
PC-486以上微机
32M以上的内存
VGA显卡
2.软件环境
西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统
Turbo C(2.0版)
五、实验方法及步骤:
1.进入 Turbo C 系统。
2.进行C语言文件系统类型的定义和使用。
3.进行C语言文件系统类型源程序的设计,并进行该程序的运行、调试、编译。
4.编辑程序。
(1)用数组存储10个数据,并存储在“date.dat”文件中
(2)对存储在“date.dat”文件中的数据读入到一个数组中,求出总和及最大值,并把它存储在“dsum.dat”文件中
第四篇:《C语言高级应用》实验指导书
C语言高级应用
实验指导书
电子与计算机科学技术学院 实验一 顺序、选择及循环结构程序设计
一、实验目的
1.熟悉C语言编程环境 2.掌握输入输出函数的使用
3.掌握if语句和switch语句的使用
4.掌握for语句、while语句和do-while语句的使用 5.通过练习掌握顺序、选择及循环结构程序设计方法
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料
3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时
四、实验内容和步骤
1.实验内容
(1)求解方程ax2+bx+c=0。
(2)打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
打印水仙花数时,要分别求出三位数的个位数、十位数和百位数,试问:除了你所用的的方法外,是否还有其它方法?请写出。
实验二 数组的应用
一、实验目的
1.通过实验理解掌握数组的基本概念
2.熟悉数组的定义、数组元素初始化、数组元素引用 3.理解字符数组的基本概念、基本操作和应用 4.能利用数组解决简单的应用问题
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料
3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时
四、实验内容和步骤
1.实验内容
(1)将一个数组中的值按逆序重新存放。
(2)编一程序,将两个字符串连接起来,不要用strcat函数。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
(1)在字符串常量中,其结束符‘ ’要占一个字节的内存空间,在计算字符串长度时,是否也包括了字符串结束符?
(2)在对字符数组进行输入时,可以用scanf函数,也可以用gets函数,若定义了一字符数组,从键盘输入了以下内容:You are my student。试问:用scanf函数和gets函数得到的结果一样吗?请分别指出。
实验三 结构体及其应用
一、实验目的
1.理解结构体的基本概念 2.掌握结构体类型的定义方法
3.掌握结构体变量的定义、初始化和引用 4.理解结构体数组的定义、初始化和引用 5.通过实验熟悉结构体及结构体数组的应用
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解结构体的应用及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,求出每个学生3门课的平均成绩,并输出最高分的学生的数据(包括学号、姓名、3门课的成绩、平均成绩)。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
假如你所定义的结构体类型名为:STUDENT,试问:sizeof(STUDENT)的值是多少?
实验四
函数的应用
一、实验目的
1.理解函数的基本概念
2.掌握函数的定义、调用方法及参数传递方式 3.理解变量的作用域和变量的存储类别 4.通过实验掌握函数的使用
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解函数的应用及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
(1)写一个判素数的函数,在主函数中输入一个整数,输出是否是素数的信息。(2)写一函数,使给定的一个二维数组(3×3)转置。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
如果一个函数的定义如下所示: void hello(){ „„ return;} 请说明其中return语句的作用。其中的return语句可以省略吗?
实验五
指针及其操作
一、实验目的
1.通过实验进一步掌握指针的概念
2.理解指针的定义和简单指针变量的使用方法
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解指针的使用及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
输入4个整数,按由小到大的顺序输出,使用指针进行处理。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 请说明以下程序段存在的问题,并改正。int a,*p;scanf(“%d”,p);
实验六
数组的指针操作
一、实验目的
1.理解数组的指针和指向数组的指针变量 2.理解指针变量作为函数参数时的参数传递方式
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解数组指针的使用及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
(1)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数实现:① 输入10个数;②进行处理;③输出10个数(2)将n个整数的前面各数向后移m 个位置,最后m 个数变成最前面m个数。在主函数中输入n个整数和输出调整后的n个数。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
int *p, a[10]={0,1,2,3,4,5,6,7,8,9};p=a;试问:如果数组a的首地址为:0x1000,&a[3]与p+3的值分别是多少?*p+3与*(p+3)的值分别是多少?
实验七
结构体的指针操作
一、实验目的
1.理解结构的指针和指向结构的指针变量及链表的基本概念 2.理解链表的基本操作
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解结构的指针的使用及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中有年龄等于此年龄的结点,则将此结点删除,否则新建一结点,插入到链表末尾。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
在建立链表时,要用到malloc函数来开辟内存空间,例如: p=(struct student *)malloc(sizeof(struct student));试问:为什么要在malloc函数前加(struct student *),去掉其中的*号可以吗?并说明原因。
实验八
文件的基本操作与应用
一、实验目的
1.理解文件及文件指针的概念
2.学会使用打开、关闭、读、写等文件操作函数 3.学会创建自己需要的文件格式
二、实验环境
1.计算机
2.Turbo C集成环境
三、实验说明
1.熟练操作Turbo C运行环境
2.自主编写程序,必要时参考相关资料 3.充分理解文件的基本操作及编程技巧
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
编程实现以下内容:
(1)建立一数据文件,该数据文件包括文件头:0X146F,0X1234;
(2)一个班有5个学生,每个学生包括:学号、姓名和三门课成绩,从键盘输入5个学生的信息,并保存到该数据文件;
(3)从文件中读出5个学生的信息,计算平均成绩;
(4)把5个学生的所有信息(包括平均成绩)输出到数据文件。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。
(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(5)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
为什么在对文件操作结束后,要用fclose函数关闭文件?
实验九
串口通信的简单应用
一、实验目的
1.理解串口的操作方式和模式控制方式 2.理解串口数据通信的实现过程 3.能够编写简单的串口通信程序
二、实验器材
1.计算机
2.DB_9串口插头两个,导线若干
三、实验说明
1.自主编写程序,必要时参考相关资料 2.充分理解串口的基本操作 3.理解串口通讯的基本过程
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
将两台计算机的COM口相连,一个作为接收端,另一个作为发送端,编程实现两台计算机之间的简单通信。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)将两台计算机的COM口连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。(5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(6)执行程序,并检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
两台计算机在通过串口进行串行通信时,它们的串口参数(如波特率)可以设置为不一样吗?
实验十
并口通信的简单应用
一、实验目的
1.理解并口的操作方式
2.理解并口寄存器的含义和并口读写时序
3.能够针对简单的应用问题,编写简单的并口通信程序
二、实验器材
1.计算机
2.实验电路板(包括并行接口、数模转换器DAC0832、运算放大器LM741、电阻、电容等),DB_25并口插头一个,导线若干 3.示波器、微机—II型电源各一套
三、实验说明
1.自主编写程序,必要时参考相关资料 2.充分理解并口的基本操作 3.理解并口通讯的基本过程
4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
通过计算机并口向数模转换器发送数据,实现D/A转换。2.实验步骤
(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)把实验电路板与计算机并口、示波器、电源(此时电源关闭)连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。
(5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。
(6)打开电源,执行程序,通过示波器观察D/A转换器和运算放大器输出的波形。
(7)如发现波形输出有问题,若是程序有问题,关闭电源,修改程序并保存,重复步骤(5),(6),(7),直到输出正确的波形为止。若是电路有问题,请查找原因,或更换实验板,验证程序的正确性。
五、实验报告要求
1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:
计算机并口的基地址有哪些?若要改变并口的基地址,应如何操作?
第五篇:高级语言程序设计课后练习参考答案(全部)
特别说明:此答案不是标准答案,仅供参考,如有疑问,请与老师共同商量
第1章
一、单项选择题 1-6 ACDBBD
二、填空题
1、机器、过程
2、源、解释、编译、目标
3、用某种计算机能理解并执行的计算机语言描述解决问题的方法和步骤、分写解决问题的方法步骤并将其记录下来的过程
第2章
一、单项选择题
1-5 ACCBB 6-10 ADDDD
二、填空题1、2、小写
3、字母、下划线、32、8
4、P10
5、P10-11
6、函数调用、表达式
7、main
8、main、main
9、/*、*/
10、分
11、略
第3章
一、单项选择题
1-5 CBABB 6-10 ACBAB 11-15 AADAD 16-20 CDCCB 21-25 CCCDB 26-30 ACDDC 31-34 CADC
二、填空题
1、字符、字符串
2、-
15、-15 3、0、65535 4、2、1
5、' '、0
6、#define 符号常量 常量 7、4
8、数据类型符 变量名1,变量名2,„„
9、unsigned int、double、char
10、const int nn=199;11、1.0
12、a/(b*c)13、1、0
14、非0、0、1、0 15、1
16、(x>20 && x<30)||x<-100
17、x<0 || y<0 || z<0 18、0 19、11110000 20、5、5、3
21、++、&&
22、算术、关系、逻辑、赋值、逗号、条件
第4章
一、单项选择题
1-5 BCBDC 6-10 CBCAB 11-15 CAADC 16-18 ADA
二、填空题
1、顺序、循环
2、单分支、双分支、多分支
3、直到、当
4、#include
5、输出格式字符串、输出表达式表
6、整、短整、无符号、字符、长整、无符号长整、单精度、双精度、单精度、双精度。
7、如果e1和e2两个条件都成立,那么就执行语句s。
8、如果e1条件成立执行语句s1,如果e1不成立但e2成立则执行语句s2。
9、###a=26,b=13,c=19。
10、if(a<=b){ x=1;printf(“%d”,x);} else { y=2;printf(“%d”,y);}
11、先执行语句然后判断表达式,直到表达式不成立才停止执行语句。
12、先判断表达式再执行语句,如果表达式不成立就停止执行语句。13、10
三、阅读程序题
1、A=65,A=0101,A=0x41 2、10,4,3
3、-1 4、0,8,-22 5、8,5,2
6、在循环语句中重复输入数值,如果输入的数值小于0就输出-1,如果输入的数大于0则输出1,如果输入的数值是0则结束循环。
7、输出10个数,求这10个数中的奇数之和保存在s1中,偶数之和保存在s2中,最后分别输出s1和s2。
8、输出1到99中能被3整除且被10整除余数为1的数。
四、程序填空题
1、if(x 2、i=3,s=0 3、x>=1 4、x%i == 0 5、t3=-t3 五、程序设计题 1、思路:输入f之后,按照公式计算c即可。#include 2、思路:输入a之后,判断如果大于等于0则输出1,否则输出-1。#include printf(“1n”);else printf(“-1n”);} 3、思路:输入一个数之后,先考虑x小于等于1的情况,如果不满足这个条件,则再判断是否小于10,针对每种情况进行计算即可。 #include y=x;else { if(x<10)/*处理x大于1小于10的情况*/ y=2*x-1; else /*处理x大于等于10的情况*/ y=3*x-11;} printf(“y=%fn”,y); } 4、思路:输入3个数之后,如果a小于b则a为小的,否则b为小的,在这个判断中将小的值保存在min中;最后再判断c是否比min小,如果比min小则c是最小的,否则就是原来的min是最小的。 #include min = a;else /*否则b为小的*/ min = b;if(c min = c;printf(“最小值为%fn”,min);} 5、思路:让输入的数除以10求余得到最后一位数字,然后判断这位数字是否比当前最大的要大,如果比当前最大的要大,则更新maxnum;求得最后一位数之后,让这个数除以10则去掉它的最后一位。依次循环直到这个数变为0。 #include if(a%10>maxnum)/*判断目前这个数的最后一位是否大于最大的*/ maxnum = a%10; a=a/10;/*去掉这个数的最后1位*/ } printf(“最大的数字为%dn”,maxnum);} 6、思路:根据题意这个数为3位的数,则本题的循环初值是100,终值是999。在循环题中,对每个i都求出它的个位、十位和百位,然后对这三个数字求他们的立方和,如果等于1099,就输出它。当循环完毕之后就能把100-999中所有满足条件的数字输出。 #include x=i;/* 将i复给x,下列语句中求出x的个、十、百位就等于是求i的个、十、百位 */ a=x%10;/* 求x的个位 */ x=x/10;b=x%10;/* 求x的十位 */ x=x/10;c=x%10;/* 求x的百位 */ if(a*a*a+b*b*b+c*c*c == 1099)/*如果个、十、百位的立方和等于1099则输出这个数 */ printf(“%d ”,i);} } 7、思路:设置3个变量分别保存每一类数的个数,开始时这三个变量的初值均为0。然后在循环体中依次输入10个数(每次循环输入一个),输入一个数之后,判断这个数的类型并使对应类的变量加1。 #include 8、题目中的应该修改为 思路:这是一种累加运算,n从1开始,每次累加,直到小于10-6。#include 9、思路:这是一种累加运算,n从1开始,每次累加 11,直到小22n1n11n!1n!33!13!于10-6。 #include 10、思路:在循环体中,依次把0x30至0x5f的值用%d以及%c输出即可。#include 11、方法1: #include #include #include 第5章 一、单项选择题 1-5 DCBDA 6-10 CDDAC 11-15 ACDCA 二、填空题 1、0、6 2、0、0 3、float s[2][3]={{70.5,85.0,69.5},{92.5,89.5,78.0}}; 4、s[3][0],s[0][2],s[3][2] 5、10 说明:n个数用冒泡法需要比较n-1趟,第1趟需要比较n-1个数,第2趟需要比较n-2个数,依次类推。所以本体需要比较4趟,从第1趟到第4趟的比较次数分别为4、3、2、1,所以共比较了10次。 6、全部、所有行的前若干个 7、#include 8、x1小于x2、x1等于x2、x1大于x2 9、4、s[0]、' ' 三、阅读程序题 1、12 2、22 3、18 10 4、说明:下列的□表示空格 ***** □***** □□***** □□□***** □□□□***** 5、efabcd 6、abcAB 7、先输入9个数保存到3行3列的数组a中(程序第4、5行),然后将数组a转置的结果保存到数组b中(程序第6、7行),最后将数组b的所有元素输出(程序第8、9、10、11行)。 8、先输入9个数保存到3行3列的数组a中(程序第4、5行),再输入9个数保存的3行3列的数组b 中(程序第6、7行),然后将数组a和b中对应下标的元素相加并将相加的结果保存到3行3列的数组c中(程序第8、9行),最后将数组c的所有元素输出(程序第10、11、12、13行)。 四、程序填空题 1、k=p 2、n=strlen(s1) 3、s[i]+=32;、i++; 4、n%base、[d] 5、max_i=min_i=0、max_i=i 五、程序设计题 1、思路:输入10个数保存到数组a中,然后计算数组a中10个元素之和,最后让这个和除以10就得到平均值。 #include 2、思路:先输入10个数保存到数组a中;然后通过一个循环将第一个元素与最后一个元素交换,第2个元素与倒数第2个元素交换,交换到中间即可完成逆序存放;最后输出数组a的元素即可。 #include 3、思路:输入两个字符串保存到str1和str2数组之后,然后将第2个字符串str2连接到第1个字符串str1的后面。难点是如何确定把str2添加到str1的哪个元素之后以及为连接后的字符串加结束标志;可以通过统计str1的长度,将str2的每个元素加在str1数组长度位置之后,最后记得给连接后总的字符串添加上' '作为字符串的结束标志。 #include k++;} str1[len1+len2]=' ';/* 给连接后的字符串添加结束标志 */ puts(str1);} 4、思路:先输入n,接着根据n输入n个数保存到数组x中。然后计算出这n个数的平均值,最后按照公式计算这n个数与平均值的平方和。 #include scanf(“%f”,&x[i]);for(i=0;i x0=x0+x[i];x0=x0/n;/*计算这n个数的平均值 */ for(i=0;i s=s+(x[i]-x0)*(x[i]-x0);printf(“s=%fn”,s);} 5、思路:通过一个双重循环输入数据保存到数组a中,然后假设a[0][0]既是最大(max)的又是最小(min)的,同时将最大和和最小的行、列坐标均设置为0;接着使用双重循环依次遍历数组a的每一个元素,如果比max大就更新max(同时也更新max对应的行和列坐标),如果比min小则更新min(同时更新min对应的行和列坐标);最后输出数据时要将行和列坐标的值均加1,因为在数组中下标从0开始而实际生活中的下标是从1开始。 #include max=a[i][j]; max_i=i; max_j=j;} else /*不是最大的,有可能是最小的 */ if(a[i][j] { min=a[i][j]; min_i=i; min_j=j; } } printf(“最大值为%d,行为%d,列为%dn”,max,max_i+1,max_j+1);printf(“最小值为%d,行为%d,列为%dn”,min,min_i+1,min_j+1);} 6、思路:通过一个循环输入数据保存在50行3列的数组a中(每列放一科的成绩),然后通过一个循环计算每科的平均值,最后输出这3个平均值。 #include sum1=sum1+stu[i][0]; sum2=sum2+stu[i][1]; sum3=sum3+stu[i][2];} printf(“%f,%f,%fn”,sum1/5,sum2/5,sum3/5);/*输出平均分*/ } 7、输入一个数保存到num中,然后将num的每一位数值逆序存储到数组a中。求num每一位数值的方法:让num除以10求余数则得到这个数的最后1位数值,让num除以10则将最后一位去掉,如此重复直到num为0。最后逆序输出数组a中保存有数值的元素即可。 #include /*由于刚才存放时,是将这个数的每1位逆序存放到数组a中,所以在下面的输出时要从最后一个存放数值的元素开始输出*/ i--;/*由于在前一个循环中,i增加到没有存放数的地方*/ while(i>=0){ printf(“%d”,a[i]);if(i>0)/*由于最后一个数值之后不输出逗号,所以在最后一个数值之前都输出逗号 */ printf(“,”);i--;} } 8、思路:通过gets函数将输入字符串保存到数组中;然后通过循环依次读取每个字符,判断处理每个字符,处理方法为:通过if判断如果是大写字母让其加3,是小写字母让其减3;最后输出处理之后的字符。 #include if(a[i]>='A'&&a[i]<='Z')/*判断是否是大写字母*/ a[i]=a[i]+3; else if(a[i]>='a'&&a[i]<='z')/*判断是否是小写字母*/ a[i]=a[i]-3;} puts(a);/*输出字符串*/ } 9、思路:与上一题一致,只是输入数据后,通过循环读取每个字符的处理方法不同,如果值是大于等于'A'+3且小于等于'Z'+3则让其减3(这个地方处理的是由原来大写字母加密所得的),如果值是大于等于'a'-3且小于等于'z'-3则让其加3(这个地方处理的是由原来小写字母加密所得的)。 #include if(a[i]>='A'+3&&a[i]<='Z'+3)/*判断是否是大写字母加密所得的字符*/ a[i]=a[i]-3; else if(a[i]>='a'-3&&a[i]<='z'-3)/*判断是否是小写字母加密所得的字符*/ a[i]=a[i]+3;} puts(a);/*输出字符串*/ } 10、思路:先通过一个双重循环输入5行5列的数据保存到二维数组a中。然后通过一个双重循环读取矩阵上三角的数据(特点是列下标大于行下标),如果其a[i][j]的值不等与a[j][i]的值则设置标志flag的值为1并结束内循环,在外循环中判断如果标志flag的值变为1则结束整个循环;最后判断flag的值并输出对应的内容。 #include for(j=0;j<5;j++) scanf(“%d”,&a[i][j]);for(i=0;i<5;i++)/*这个双重循环读取矩阵上三角的数据*/ { for(j=i+1;j<5;j++) { if(a[i][j]!= a[j][i])/*如果满足这个条件,则矩阵是不对称矩阵*/ { flag = 1;/*是不对称矩阵,设置标志为1,并结束内循环*/ break; } } if(flag==1)/*如果已经知道是不对称矩阵,则可以直接结束整个循环*/ break;} if(flag == 1)/*判断是否是对称矩阵并输出对应的内容*/ printf(“non”);else printf(“yesn”);} 第6章 一、单项选择题 1-5 DBBDD 6-10 BDDCC 11-15 BACDD 16 D 二、填空题 1、该字节、第一个字节 2、指针、取地址 3、a+i*4 4、地址 5、关系 6、3、+3 7、double *p=&d 8、地址、所指向的值、地址 9、ABCD、A 10、&变量名、数组名、&数组第一个元素名 11、2、5 三、阅读程序题 1、ABCDEFGH 2、eybdooG 3、4,p= 4、ABCD BCD CD D 5、17,10,-3,13,1,-21 6、从键盘输入10个整数保存在数组a中,然后将这10个数逆序输出。 7、从键盘输入一串字符保存在数组a中,然后通过一个循环统计左圆括号'('和右圆括号')'的数量,如果两个括号的数量相等则输出ok!,否则输出no!。 四、程序填空题 1、' '、++ 2、x=x*10+((long)(*p++)-48); 五、程序设计题 略,考试一般不会考指针类的编程题,根据历年的情况只考一题顺序或分支结构的题目、一题函数或循环结构的编程题,所以本章只要能掌握第6章课件中相关的例子即可。 第7章 一、单项选择题 1-5 BACCC 6、D 7、C 8、无答案,全部都可以 9、C 10、C 二、填空题 1、所定义的函数或它所在的复合语句。 2、地址传递、值传递 3、函数定义的语句块中、内部定义的局部 4、return、void 5、函数外、函数内、static、外部 6、整、地址 7、嵌套、递归 8、指针、指针型 9、按照1000赫兹的频率连续发出鸣笛声、产生0-999之间的随机整数 三、阅读程序题 1、30,20,10 2、BABBAB 3、5 4、12 5、此题比较难,不需要理解。 6、如果p1指向的内容比p2指向的内容大,则交换p1和p2所指向的内容 7、求数组a中前n个数的平均值。 8、此题的题目有错,将题目中第5行的:*p++''改为:*p==' '。那么这个函数的功能为:统计p所指向的一串字符中空格和星号(*)的个数。 9、此题比较难,不需要理解。 四、程序填空题 1、int *、*z 2、-1 3、此题的题目有错,将第2行的“int;”改为“int t;”,将第4行程序if括号内的内容修改为:*pc>*pb。第1空填:pc,pb 第2空填:pa,pc 第3空填:pa,pb 4、tupper(x)、f(ch) 5、w[i-1] 五、程序设计题 在此处的程序设计题中,题目仅要求设计函数。但在下列给出的程序中,除开写出规定的函数外,还写出main函数,以方面大家能够正常执行程序。 1、思路:假设函数的形式参数a、b和c为整型数据,那么返回值b2-4ac也应该是整型数据。在函数体中只要按照公式计算好b2-4ac并将其返回即可。 #include 2、思路:假设函数的名称为leap,那么这个函数有一个整型的参数y用来接受年份,有一个整型的返回值,用来返回0或者1,然后在函数体中判断y是否为闰年并返回对应的值即可。判断闰年的条件是年份y能被4整除但是不能被100整除,或者年份y能被400整除。 #include return(1);/*是闰年返回1*/ else return(0);/*不是闰年返回0*/ } void main(){ int year;scanf(“%d”,&year);if(leap(year)==1) printf(“%d是闰年n”,year);else printf(“%d不是闰年n”,year);} 3、思路:此函数名为root2,有4个参数,分别是3个单精度型的a、b、c和单精度型的数组名root,在函数体中计算方程的2个根按照求根公式算即可。由于root是数组名,所以在子函数中将值保存到root数组中则会在主调函数中体现出来。 #include 4、思路:这个函数的名称为trus,函数中有2个二维数组的形式参数用来接受进行转置的数组和转置后的数组。在函数体中按照以前讲的知识通过一个双重循环将参数中数组s1转置之后保存到数组s2中,转置的方法是将s1的每个元素s1[i][j]赋值给s2的每个元素s2[j][i]即可。由于形参是数组名,所以在函数中进行的转置在主调函数的实参中能直接体现出来。 #include for(j=0;j<3;j++) s2[j][i]=s1[i][j];} void main(){ int a[2][3]={1,2,3,4,5,6},b[3][2],i,j;trus(a,b);printf(“转置后的数组为:n”);for(i=0;i<3;i++)/*输出转置后的数组*/ { for(j=0;j<2;j++) printf(“%3d”,b[i][j]); printf(“n”);} } 5、思路:该函数的名称为countc,函数的形参为一个字符型的数组,返回值类型为整型。在函数体中依次读取参数数组array中的每个元素,如果是大写字母则使计数器n加1,最后返回n的值。 #include if(array[i]>='A' && array[i]<='Z')/*如果是大写字母则让n++ */ n++;return(n);} void main(){ char a[50];int num;gets(a);/*输入一串字符保存到字符数组a中 */ num=countc(a);printf(“数组a中的大写字母个数为:%dn”,num);} 6、思路:此函数的名称为link,形参为3个字符数组,函数的返回值类型为void。在函数体中,难点是如何将s2连接到s1之后存入s3中;其实最简单的方法不是直接将s2连接到s1之后,而是先把s1的每个元素放到s3的前面元素中,然后再将s2的每个元素紧接着放在s3的后面元素中(即在s3中接着s1后的元素放s2的元素)。 #include s3[i]=s1[i];for(j=0;s2[j]!=' ';j++,i++)/*在s3中接着s1后的元素放s2的元素*/ s3[i]=s2[j];s3[i]=' ';/*给连接之后的数组添加字符串结束符号*/ } void main(){ char a[40]=“abcde”,b[40]=“12345”,c[80];link(a,b,c);printf(“连接后的字符串为:%sn”,c);} 7、思路:假设函数的名称为find,函数的返回值为void,由于本题函数计算的结果最大值、最小值、平均值均要通过函数的形参在主调函数中能体现,那么这些形参必须为指针类型,则函数的形参共有5个参数,分别为实型数组f、整型变量n、三个实型指针变量。函数体中寻找最大值、最小值和平均值的方法与之前讲的一致;求平均值为将所有元素值求和,最后再除以n即可;求最大值为假设第一个值是当前最大的,然后依次用每个元素与当前最大的比较,如果这个元素比当前最大的要大,则把这个元素更新为当前最大的;求最小值与求最大值类似。 #include *avg = *avg + f[i];/*把元素求和*/ if(f[i]>*max)/*判断当前元素是否比当前最大的要大,如果成立则更新当前最大的*/ *max=f[i]; else if(f[i]<*min)/*判断当前元素是否比当前最小的要小,如果成立则更新当前最小的*/ *min=f[i];} *avg = *avg/n;/*根据元素和求它们的平均值*/ } void main(){ float a[10]={6,3,8,9,10,7,4,1,2,5};float da,xiao,pingjun,*max=&da,*min=&xiao,*avg=&pingjun;/*da表示存储最大的值,xiao表示存储最小的值,pingjun表示存储平均值,并分别用三个指针指向它们 */ find(a,10,max,min,avg);printf(“最大值为%f,最小值为%f,平均值为%fn”,da,xiao,pingjun); } 8、思路:假设该函数的名称为f,则函数f有一个整型的形参n,用来接受进行判断是否是同构数的数,该函数有一个整型的返回值,返回的值为0或1。那么在函数体中主要是对接受到传递的数n判断是否为同构数,如果是则返回1,否则返回0;由于题目要求判断是否为同构数是2位的整数,那么判断同构数的方法:先求这个数的平方,如果被判断数(假设为n)与它的平方(假设为x)最后一位相同且倒数第2位也相同,则为同构数;最后一位相同的判断式子为n%10 == x %10,即某个数与10求余则得到这个数最后一位的值;倒数第2位相同的判断式子为(n/10)%10 ==(x/10)%10,即某个整数除以10则得到它删除最后1位后的值,再让删去最后一位的结果与10求余就可以得到倒数第2位的数值。 #include printf(“%d是同构数”,a);else printf(“%d不是同构数”,a);} x2x3x49、思路:这题比较难,难在如何求1x这个式子的值,2!3!4!x1x2x3x4()这个式子可以看成1,那么只要把括号里的式子求出来,1!2!3!4!x1x2x3x4然后加上1就得到整个式子的值。求为一种累加元素,假 1!2!3!4!设每次的被加数为n,则n为一个分数,分子的初值为x,分母的初值为1,则每加完一个数之后,被加数的分子多乘一个x,分母多乘一个i(从2开始,每x1x2x3x4次增加1),直到某个被加数的值小于10;那么计算的思 1!2!3!4!-4想为:在循环之前要给第一个被加数赋好初值,然后在循环体中先将被加数累加到变量sum中,然后更新被加数的分子和分母,并计算好下一个被加数。 那么假设计算ex的函数为f,则f有一个整型的参数用来接受x的值,并有一个浮点型的返回值,循环体中按照上述的方法求即可ex。 #include 10、递归函数设计比较难,在考试一般不考,所以本题不需要理解,略。 第8章 一、单项选择题 1、无答案,每个选项都错 2-7 DDDBCB 8、比较难,略 9-10 AC 二、填空题 1、struct a{char name[10];int age;float wage;}; 2、指向成员、结构型的指针名、成员名 3、.、结构型变量名、结构型的成员名 4、ab.a、(&ab)->a、p_ab->a、(*p_ab).a 5、ti_hour、ti_min、ti_sec、ti_hund 6、该结构型中所有成员所占的字节数之和 7、int *x[5]; 三、阅读程序题 1、name:zhang total=170.0 Name:wang total:150.0 2、2 3、123 abc 456 4、34 相关知识:date为系统提供的结构型,用于表示一个日期,在这个结构型中有三个成员da_year、da_mon、da_day分别表示日期中的年、月、日的值。使用getdate函数获得当前系统日期给参数中的指针。5、51,60,21 四、程序填空题 1、c[j]=c[j]+s[i].score[j]; 2、getdate(&date1); 五、程序设计题 略 第9章 一、单项选择题 1-5 BAABA 6-10 CDCBC 二、填空题 1、盘符:路径文件主名.扩展名、盘符、扩展名 2、打开、关闭 3、stdin、stdout、stderr 4、文件型指针变量p、stdio.h 5、a地址、b*c、d 6、rewind(fp)、fseek(fp,0,0) 三、阅读程序题 1、10 2、121314252627 3、567890 4、将f1指向的文件p1.c的内容读出,并依次写入到p2指向的文件p2.c中,即将文件p1.c的内容复制到文件p2.c中。 四、程序填空题 1、(!feof(fp)) 2、“w”、close(fp) 五、程序设计题 略