C语言与数据结构实验指导完整版
- 格式:docx
- 大小:899.29 KB
- 文档页数:66
数据结构(C语言版) 实验报告学院计算机科学与技术专业计算机大类强化学号xxx班级xxx姓名xxx指导教师xxx实验1实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。
实验要求:建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。
实验主要步骤:1、分析、理解给出的示例程序。
2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。
3、修改程序:(1)增加插入结点的功能。
(2)将建立链表的方法改为头插入法。
程序代码:#include"stdio.h"#include"string.h"#include"stdlib.h"#include"ctype.h"typedef struct node //定义结点{char data[10]; //结点的数据域为字符串struct node *next; //结点的指针域}ListNode;typedef ListNode * LinkList; // 自定义LinkList单链表类型LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表LinkList CreatList(void); //函数,用头插入法建立带头结点的单链表ListNode *LocateNode(); //函数,按值查找结点void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值void DeleteAll(); //函数,删除所有结点,释放内存ListNode * AddNode(); //修改程序:增加节点。
c 与数据结构实验报告C语言与数据结构实验报告引言:C语言作为一种高级编程语言,被广泛应用于软件开发和系统编程领域。
在计算机科学的学习过程中,数据结构是一门重要的课程,它涉及到如何组织和存储数据以便于有效地访问和操作。
本实验报告将探讨C语言与数据结构的关系,并介绍在实验中所学到的内容。
一、C语言的特点和应用C语言作为一种通用的高级编程语言,具有许多特点和优势。
首先,C语言具有高效性和可移植性。
它的语法简洁,执行效率高,可以在不同的操作系统上运行。
其次,C语言具有丰富的库函数支持,使得开发者可以方便地调用各种功能。
此外,C语言还支持指针操作,使得程序更加灵活和高效。
C语言在软件开发领域有广泛的应用。
例如,操作系统的开发离不开C语言,因为它能够直接访问硬件设备并进行底层编程。
此外,C语言还被广泛应用于嵌入式系统、游戏开发、网络编程等领域。
因此,掌握C语言对于计算机科学专业的学生来说是非常重要的。
二、数据结构的概念和分类数据结构是计算机科学中研究数据组织和存储方式的一门学科。
它涉及到如何将数据以某种特定的方式组织起来,以便于高效地访问和操作。
数据结构可以分为线性结构、树形结构和图形结构三大类。
1. 线性结构线性结构是最简单的数据结构之一,它的特点是数据元素之间存在一对一的关系。
常见的线性结构有数组、链表和栈等。
其中,数组是一种连续存储的数据结构,具有随机访问的特点;链表是一种离散存储的数据结构,通过指针将各个节点连接起来;栈是一种特殊的线性结构,具有后进先出(LIFO)的特点。
2. 树形结构树形结构是一种非线性的数据结构,它的特点是数据元素之间存在一对多的关系。
常见的树形结构有二叉树、堆和哈夫曼树等。
其中,二叉树是一种每个节点最多只有两个子节点的树形结构;堆是一种特殊的二叉树,具有一定的排序规则;哈夫曼树是一种用于数据压缩的树形结构。
3. 图形结构图形结构是一种更加复杂的非线性数据结构,它的特点是数据元素之间存在多对多的关系。
数据结构C语言版实验教案一、实验目的1. 理解数据结构的基本概念和原理。
2. 掌握C语言在数据结构中的应用和实现。
3. 培养动手实践能力和团队协作精神。
二、实验内容1. 线性表的实现与操作:顺序存储结构、链式存储结构。
2. 栈和队列的实现与操作。
3. 线性排序算法实现与分析。
4. 树与二叉树的实现与操作。
5. 图的实现与操作。
三、实验环境1. 编程语言:C语言。
2. 开发工具:Visual Studio、Code::Blocks等。
3. 操作系统:Windows、Linux或Mac OS。
四、实验步骤1. 实验准备:了解实验内容,阅读相关教材和资料,明确实验目标和任务。
2. 设计实验方案:根据实验内容,设计相应的数据结构和算法。
3. 编写实验代码:按照实验方案,用C语言编写代码。
4. 调试和测试:运行代码,检查功能是否符合预期,发现问题并及时修改。
五、实验评价1. 代码质量:代码结构清晰,注释详细,可读性强。
2. 功能实现:实验要求的功能全部实现,且运行稳定。
3. 算法效率:分析并优化算法,提高程序运行效率。
4. 实验报告:内容完整,包括实验目的、内容、步骤、总结等。
5. 团队协作:积极参与讨论,与团队成员共同解决问题。
六、实验一:线性表的实现与操作1. 实验目的:掌握顺序存储结构线性表的实现。
掌握链式存储结构线性表的实现。
熟悉线性表的基本操作,如插入、删除、查找等。
2. 实验内容:实现一个顺序存储结构线性表。
实现一个链式存储结构线性表。
实现线性表的插入、删除、查找等操作。
3. 实验步骤:设计顺序存储结构线性表的数据类型和操作函数。
实现链式存储结构线性表的数据类型和操作函数。
编写测试代码,验证线性表操作的正确性。
4. 实验评价:线性表结构设计合理,代码清晰。
能够正确实现线性表的基本操作。
测试代码全面,能够验证操作的正确性。
七、实验二:栈和队列的实现与操作1. 实验目的:理解栈和队列的基本概念。
掌握栈和队列的顺序存储结构实现。
数据结构C语言版实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】数据结构(C语言版) 实验报告专业:计算机科学与技术、软件工程学号:_______________________班级:_________软件二班______________姓名:________朱海霞______________指导教师:___刘遵仁________________青岛大学信息工程学院2013年10月实验1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。
实验要求:建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。
实验主要步骤:1、分析、理解给出的示例程序。
2、调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。
程序代码:#include<>#include<>#define OK 1#define ERROR 0#define OVERFLOW -2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{int* elem;int length;int listsize;}Sqlist;int InitList_Sq(Sqlist &L){=(int*)malloc(LIST_INIT_SIZE*sizeof(int));if(! return -1;=0;=LIST_INIT_SIZE;return OK;}int ListInsert_Sq(Sqlist&L,int i,int e){if(i<1||i>+1) return ERROR;if=={int *newbase;newbase=(int*)realloc,+LISTINCREMENT)*sizeof(int));if(!newbase) return -1;=newbase;+=LISTINCREMENT;}int *p,*q;q=&[i-1]);for(p=&[]);p>=q;--p)*(p+1)=*p;*q=e;++;return OK;}int ListDelete_Sq(Sqlist &L,int i,int e){int *p,*q;if(i<1||i>return ERROR;p=&[i-1]);e=*p;q=+;for(++p;p<=q;++p)*(p-1)=*p;;return OK;}int main(){Sqlist L;InitList_Sq(L);ertex=a; irstedge=NULL; irstedge;G->adjlist[i].firstedge=s; irstedge;G->adjlist[j].firstedge=s; //将新结点*S插入顶点Vj的边表头部}}//=========定义标志向量,为全局变量=======typedef enum{FALSE,TRUE} Boolean;Boolean visited[MaxVertexNum];//========DFS:深度优先遍历的递归算法======void DFSM(ALGraph *G,int i){ //以Vi为出发点对邻接链表表示的图G进行DFS搜索给出你的编码//==========BFS:广度优先遍历=========void BFS(ALGraph *G,int k){ //以Vk为源点对用邻接链表表示的图G进行广度优先搜索给出你的编码//==========主函数===========void main(){int i;ALGraph *G;G=(ALGraph *)malloc(sizeof(ALGraph));CreatALGraph(G);printf("Print Graph DFS: ");DFS(G);printf("\n");printf("Print Graph BFS: "); BFS(G,3);printf("\n");}实验结果:1.邻接矩阵作为存储结构2.邻接链表作为存储结构心得体会:实验6实验题目:二分查找算法的实现实验目的:掌握二分查找法的工作原理及应用过程,利用其工作原理完成实验题目中的内容。
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
数据结构实验指导书(C语言版)2017年9月目录1、顺序表的实现 (1)2、链栈的实现 (3)3、前序遍历二叉树 (5)4、图的深度优先遍历算法 (7)5、散列查找 (9)1、顺序表的实现1. 实验目的⑴掌握线性表的顺序存储结构;⑵验证顺序表及其基本操作的实现;⑶理解算法与程序的关系,能够将顺序表算法转换为对应的程序。
2. 实验内容⑴建立含有若干个元素的顺序表;⑵对已建立的顺序表实现插入、删除、查找等基本操作。
3. 实现提示定义顺序表的数据类型——顺序表结构体SeqList,在SeqList基础上实现题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。
简单起见,本实验假定线性表的数据元素为int型,要求学生:(1)将实验程序调试通过后,用模板类改写;(2)加入求线性表的长度等基本操作;(3)重新给定测试数据,验证抛出异常机制。
4. 实验程序在编程环境下新建一个工程“顺序表验证实验”,并新建相应文件,文件包括顺序表结构体SeqList的定义,范例程序如下:#define MaxSize 100 /*假设顺序表最多存放100个元素*/typedef int DataType; /*定义线性表的数据类型,假设为int型*/typedef struct{DataType data[MaxSize]; /*存放数据元素的数组*/int length; /*线性表的长度*/} SeqList;文件包括建立顺序表、遍历顺序表、按值查找、插入操作、删除操作成员函数的定义,范例程序如下:int CreatList(SeqList *L, DataType a[ ], int n){if (n > MaxSize) {printf("顺序表的空间不够,无法建立顺序表\n"); return 0;} for (int i = 0; i < n; i++)L->data[i] = a[i];L->length = n;return 1;}void PrintList(SeqList *L){for (int i = 0; i < L->length; i++)printf("%d ", L->data[i]); /*输出线性表的元素值,假设为int型*/ }int Locate(SeqList *L, DataType x){for (int i = 0; i < L->length; i++)if (L->data[i] == x) return i+1; /*返回序号*/return 0; /*退出循环,说明查找失败*/ }int Insert(SeqList *L, int i, DataType x){if (L->length >= MaxSize) {printf("上溢错误,插入失败\n"); return 0;} if (i < 1 || i > L->length + 1) {printf("位置错误,插入失败\n"); return 0;} for (int j = L->length; j >= i; j--) /*j表示元素序号*/L->data[j] = L->data[j - 1];L->data[i - 1] = x;L->length++;return 1;}int Delete(SeqList *L, int i, DataType *ptr){if (L->length == 0) {printf("下溢错误,删除失败\n"); return 0;} if (i < 1 || i > L->length) {printf("位置错误,删除失败\n"); return 0;} *ptr = L->data[i - 1]; /*取出位置i的元素*/for (int j = i; j < L->length; j++) /* j表示元素所在数组下标*/L->data[j - 1] = L->data[j];L->length--;return 1;}在定义了顺序表的存储结构SeqList并实现了基本操作后,程序中就可以使用SeqList 类型来定义变量,可以调用实现基本操作的函数来完成相应的功能。
数据结构C语言版实验教案一、实验目的1. 理解数据结构的基本概念和原理。
2. 掌握C语言的基本语法和编程技巧。
3. 培养实际操作能力和问题解决能力。
二、实验内容1. 线性表的实现与操作。
2. 栈和队列的实现与操作。
3. 链表的实现与操作。
4. 树和图的实现与操作。
5. 排序和查找算法的实现与优化。
三、实验环境1. 操作系统:Windows或Linux。
2. 编程语言:C语言。
3. 编译器:GCC或Clang。
4. 开发工具:Visual Studio或Code::Blocks。
四、实验步骤1. 了解实验要求,阅读相关教材和资料。
2. 分析实验问题,设计实验方案。
3. 编写实验代码,进行调试和测试。
4. 分析实验结果,总结实验经验和教训。
5. 完成实验报告,提交实验代码和报告。
五、实验评价1. 代码规范性和可读性。
2. 实验问题的解决能力和创新性。
4. 实验操作的熟练程度和团队合作能力。
六、线性表的实现与操作1. 实验目的:学习线性表的基本概念。
掌握线性表的顺序存储结构和存储结构。
学会实现线性表的基本操作,如插入、删除、查找和打印。
2. 实验内容:实现一个简单的线性表。
实现线性表的插入和删除操作。
实现线性表的查找和打印操作。
3. 实验环境:同上。
4. 实验步骤:设计一个线性表的数据结构。
编写实现线性表操作的函数。
编写测试线性表操作的程序。
调试并运行程序,验证操作的正确性。
5. 实验评价:同上。
七、栈和队列的实现与操作1. 实验目的:理解栈和队列的基本概念和特点。
掌握栈和队列的顺序存储结构和存储结构。
学会实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
2. 实验内容:实现一个简单的栈。
实现一个简单的队列。
实现栈和队列的综合应用,如数制转换等。
3. 实验环境:同上。
4. 实验步骤:设计栈和队列的数据结构。
编写实现栈和队列操作的函数。
编写测试栈和队列操作的程序。
调试并运行程序,验证操作的正确性。
5. 实验评价:同上。
数据结构实验C语言版数据结构实验C语言版第一章实验目的1.熟悉C语言编程环境。
2.掌握数据结构中常用的线性结构和非线性结构。
3.学习使用C语言实现常见的数据结构操作。
4.培养解决实际问题的思维能力。
第二章实验内容1.线性表1.1 顺序表1.1.1 初始化顺序表1.1.2 在顺序表中插入元素1.1.3 删除顺序表中的元素1.1.4 查找顺序表中的元素1.1.5 显示顺序表中的元素1.2 链表1.2.1 初始化链表1.2.2 在链表中插入节点 1.2.3 删除链表中的节点 1.2.4 查找链表中的节点1.2.5 显示链表中的节点2.栈和队列2.1 栈2.1.1 初始化栈2.1.2 入栈操作2.1.3 出栈操作2.1.4 获取栈顶元素2.1.5 判断栈是否为空 2.2 队列2.2.1 初始化队列2.2.2 入队操作2.2.3 出队操作2.2.4 获取队头元素2.2.5 判断队列是否为空3.树和图3.1 二叉树3.1.1 创建二叉树3.1.2 前序遍历二叉树3.1.3 中序遍历二叉树3.1.4 后序遍历二叉树3.1.5 层序遍历二叉树3.2 图3.2.1 创建图3.2.2 深度优先搜索遍历图3.2.3 广度优先搜索遍历图3.2.4 最短路径算法3.2.5 最小树算法第三章实验步骤1.确定实验目标和需求。
2.根据实验内容,编写C语言程序。
3.调试和运行程序,验证程序的正确性。
4.根据实验结果进行分析和总结。
第四章实验结果与分析1.线性表的操作结果分析。
2.栈和队列的操作结果分析。
3.树和图的操作结果分析。
附件:________源代码文件法律名词及注释:________1.版权:________指对作品享有的本质的、来自著作权法的权益。
2.许可证:________指权利人向他人授予合法使用作品的权利的法律文件。
3.商标:________指与一种商品及其生产者和经销者有关的特定名称、标识或符号。
4.注册商标:________指在商标局进行了合法登记并取得专有权的商标。
数据结构(C语言版) 实验报告实验报告1·实验目的本实验的目的是通过使用C语言实现各种数据结构,包括链表、栈、队列和树等,以加深对这些数据结构的理解,并学习其基本操作和应用场景。
2·实验环境和工具●操作系统:Windows 10●开发工具:Code::Blocks●编程语言:C语言3·实验内容3·1 链表3·1·1 定义链表结点的结构体3·1·2 创建链表3·1·3 插入结点3·1·4 删除结点3·1·5 遍历链表3·1·6 查找链表中的某个结点3·2 栈3·2·1 定义栈的结构体3·2·2 初始化栈3·2·3 入栈操作3·2·4 出栈操作3·2·5 判断栈是否为空3·2·6 获取栈顶元素3·3 队列3·3·1 定义队列的结构体3·3·2 初始化队列3·3·3 入队操作3·3·4 出队操作3·3·5 判断队列是否为空3·3·6 获取队头元素3·4 树3·4·1 定义树的结构体3·4·2 创建树3·4·3 插入结点3·4·4 删除结点3·4·5 遍历树3·4·6 查找树中的某个结点4·实验结果通过实验,我们成功实现了链表、栈、队列和树的基本操作,并对其进行了测试,验证了其正确性和效果。
5·总结与讨论本次实验使我对数据结构有了更深的理解,通过实际编写代码,加深了对链表、栈、队列和树等数据结构的认识。
《数据结构》实验参考资料目录一、课程编号 (2)二、课程类型 (2)三、本课程的地位、作用与任务 (2)四、课程基本要求 (2)五、实验安排 (2)1、数据结构实验机器与环境 (2)(一)计算机的硬件配置 (2)(二)计算机的软件配置 (2)2、VisualC++6.0开发C语言程序 (2)(一)进入C++工作环境 (2)(二)编译、运行C程序 (2)3、上机实验 (6)实验1:线性表操作 (6)实验2:单链表操作...................................................................... 错误!未定义书签。
实验3:二叉树操作...................................................................... 错误!未定义书签。
实验4:图的运算.......................................................................... 错误!未定义书签。
数据结构(C语言版)实验一、课程编号(本科)二、课程类型课程类型:必修课。
适用专业:计算机大类各专业实验学时:16学时三、本课程的地位、作用与任务《数据结构》在计算机科学中是一门综合性的专业基础课。
数据结构的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有密切的关系,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础,它的主要任务是讨论各种数据结构的逻辑结构,存储结构及有关操作的算法。
目的是使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。
Harbin Institute of TechnologyC语言与数据结构实验指导书刘梅索莹田文龙哈工大电子与信息工程学院电子工程系实验1 实验平台一、实验目的1.掌握Microsoft Visual C++ 集成环境的使用方法。
2.掌握C程序在Microsoft Visual C++ 开发环境中的编辑、编译、链接和运行全过程二、实验内容1)启动Microsoft Visual C++ 开发环境双击桌面应用程序图标或云兄“开始”菜单程序组中的Microsoft Visual C++ 应用程序,启动VC++,如图所示图 VC++初始界面2)建立C源程序文件方法1:单机工具栏的“新建文本文件”按钮,打开文本文件编辑界面如下图所示图文本文件编辑界面方法2:执行“文件”->“新建”命令,在“文件”选项卡下选择C++ Source File 文件类型,然后输入C源程序文件名和保存文职,如图所示,然后单击“确定”按钮,打开源程序文件编辑界面,如图所示。
注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展名为“.cpp”的C++文件。
3)编辑源文件方法1:在如图所示的文本文件编辑界面中输入源程序代码,如图所示。
方法2:在如图所示的C源程序文件编辑界面中编辑源程序代码,如图所示。
图新建文件图 C源程序文件编辑界面图文本文件编辑界面编辑源文件图 C源程序编辑界面编辑源文件4)保存源文件源文件编辑结束后,执行“文件”->“保存”命令保存文件,文本文件编辑界面中编辑的源文件保存时必须在文件名后加上扩展名“.c”,否则保存的是扩展名为txt的文本文件,不能编译运行。
5)组件文件执行“组建”->“组建”命令或直接按F7功能键或单机工具栏Build 按钮,可以对源文件进行编译、链接而不运行改程序。
当然也可以先执行“组建”->“编译”(快捷键Ctrl+F7)命令编译文件,再执行“组建”->“组建”(快捷键F7)命令链接文件。
由于VC++有工作区的要求,所以组建时,系统提示需要建立工作区,如图所示。
单机“是”按钮,系统会自动建立工作区,组建后的结果如图所示。
图提示建立工作区图组建源程序结果注意:图下方的“组建”信息窗口中的内容说明了组建的结果,必须保证错误(error(s))数为0才能运行程序。
6)运行文件执行“组建”->“执行”命令或直接按Ctrl+F5键或单机工具栏BuildExecute按钮,可以运行程序,结果显示在用户输出窗口中,如图所示。
图用户输出窗口注意:如果要编辑下一个C源程序,由于新建的文件不会自动加入工作区,因此需要先关闭当前工作区。
方法是执行“文件”->“关闭工作空间”命令,或者关闭后重新启动VC++,再按照上述方法建立、编辑新的C 源文件,让VC++自动建立工作区。
7)运行“加法”程序在VC++环境中建立并编辑实现加法运算的源程序,然后组建该文件,结果如图所示。
运行该文件,并按要求输入数据,得到运行结果。
图 VC++环境下组建“加法”程序后的界面实验2 顺序结构程序设计一、实验目的1.掌握上机运行C程序的全过程。
2.掌握各种格式说明符的使用方法。
3.掌握格式输入输出函数scanf()和printf()的用法。
4.熟悉字符输入输出函数getchar()和putchar()的用法。
二、实验内容1.格式说明符的使用。
创建并编辑输入输出各个类型数据的程序,分析各个格式说明符的作用。
2.编写“输入输出字符”程序,功能如下:使用getchar()函数接收一个字符,用printf()函数显示;使用scanf()函数接收一个字符,用putchar()函数显示。
3.编写“求三角形面积”程序,功能如下:输入三角形三边长,求三角形的面积。
已知三角形的三边长a、b、c,则该三角形的面积公式为:09okm其中,()/2=++。
s a b c4.编写“圆柱体”程序,功能如下:设圆柱体的半径r=,圆柱高h=,求出该圆柱体的表面积和体积。
要求:用scanf()函数输入数据,输出时要求有文字说明,取小数点后两位数字。
三、实验指导1.格式说明符的使用(参考教材)2. “输入输出字符”程序1)编程分析(1)需要定义字符型变量存放输入的数据;(2)用scanf()函数输入字符时,要注意不要接收缓冲区中已有的字符。
2)参考程序#include ""main(){char a,b,c;printf(" a character:\n");a=getchar();c=getchar();printf("The character is:%c\n\n",a);printf(" a character:\n");scanf("%c",&b);printf("The character is:");putchar(b);putchar('\n');}3. “求三角形面积”程序1)编程分析(1)该问题的解决过程如下:(2)需要定义实型(float或double)变量存放相应的数据;(3)计算面积需要用到开平方函数sqrt(),该函数原型包含在头文件中,因此需要在程序开始将头文件包含进来;(4)根据实际情况确定各个变量在输出时的宽度和小数位数。
2)参考程序#include “”#include “”main(){float a,b,c,s,area;printf(“Input a,b,c:\n”);scanf(“%f ,%f,%f”,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*s(s-a)*(s-b)*(s-c));printf(“a=%,b=%,c=%\n”,a,b,c);printf(“area=%\n”,area);}3. “圆柱体”程序1)编程分析(1)该问题的解决过程如下:(2)需要定义实型(float或double)变量存放相应的数据;(3)计算过程中需要用到常数π,为使用方便,在程序开始用宏定义命令define将常数(即π)用PI表示;(4)输出数据时根据要求确定各个变量的宽度和小数位数(本例采用)。
2)参考程序#include “”#define PImain(){float r,h;double s,v;printf(“Input the value of r and h:\n”);scanf(“%f ,%f”,&r,&h);s=2*PI*r*r+2*PI*r*h;v=PI*r*r*h;printf(“The value of s is:%\n”,s);printf(“The value of v is:%\n”,v);}实验3 选择结构程序设计一、实验目的1.学会使用逻辑表达式表示条件的方法。
2.掌握switch语句的用法。
二、实验内容语句的应用编写计算器程序。
要求从键盘任意输入两个数值,然后输入一个四则运算符,自动完成运算后输出结果。
三、实验指导语句的应用1)编程分析(1)四则运算共有加(+)、减(-)、乘(*)、除(/)4种运算,要做出判断需使用switch语句。
(2)当输入符号为四则运算之外的符号时,不进行任何运算,但应给出相应的提示信息。
当使用提示信息时,switch语句应含有default子句。
2)参考程序#include “”void main(){float x,y;char p;scanf(“%f,%f”,&x,&y);p=getchar();switch(p){case ’+’:printf(“%f+%f=%f\n”,x,y,x+y);break;case ‘-’:printf(“%f-%f=%f\n”,x,y,x-y);break;case ‘*’:printf(“%f*%f=%f\n”,x,y,x*y);break;case ‘/’:printf(“%f/%f=%f\n”,x,y,x/y);break;default:printf(“Input is error!\n”);}}3)程序调试调试程序时,+、-、*、/及非四则运算符的情况都应予以调试。
实验4 循环结构程序设计一、实验目的1.通过本实验,加深对循环控制结构有关概念的理解。
2.掌握二重循环结构程序的设计方法。
二、实验内容1.阶乘累加问题。
编写程序,求1!+2!+3!+…+n!的值。
2.取彩球问题。
有12个彩球:3个白色,5个红色,4个黄色,从中任意取n个球12(2n),求出所有不同的取法。
≤≤三、实验指导1.阶乘累加问题1)编程分析(1)本实验内容为求解阶乘问题。
(2)求n!用一个循环即可实现。
(3)求1!+2!+3!+…+n!的值,需要在求阶乘程序之外增加一个外重循环。
2)参考程序#include “”void main(){long int s=1,t;int i,j,n;printf(“n=”);scanf(“%d”,&n);for(i=2;i<=n;i++){for(t=1,j=1;j<=i;j++)t*=j;s+=t;}printf(“s=%ld\n”,s);}3)程序调试(1)输入一个不大的正整数,分析程序执行结果。
(2)输入一个零或者负数,分析程序执行结果。
(3)输入一个很大的正整数,分析程序执行结果。
(4)当程序结果不符合要求时,修改程序,直到对任何输入数据都能输出正确的执行结果,或者给出一个明确的提示信息。
例如,当输入数据非法时,给出一个错误的提示信息。
2.取彩球问题1)编程分析本题用到“穷举”算法。
穷举的基本思想是对问题的所有可能性一一测试,直到找到解或将全部可能状态都测试过为止。
“穷举”的核心是依次测试循环体。
循环控制有两种办法:计数法和标志法。
计数法要先确定循环次数,然后逐次测试,完成测试次数后循环结束;标志法是达到某一目标后循环结束。
2)参考程序#incude “”void main(){int n,white,red,yellow,count=0;printf(“Input”);scanf(“%d”,&n);printf(“white red yellow\n”);for(white=1;white<=3;white++)for(red=1;red<=5;red++){yellow=n-white-red;if(yellow>=1&&yellow<=4){printf(“%5d%5d%5d\n”,white,red,yellow);count++;}}printf(“Total:%d\n”,count);}3)程序调试(1)输入不小于2并且不大于12的整数值,查看并分析程序结果。