C语言与数据结构实验指导(完整版)

合集下载

(完整版)数据结构(C语言版)实验报告

(完整版)数据结构(C语言版)实验报告

数据结构(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语言,因为它能够直接访问硬件设备并进行底层编程。

此外,C语言还被广泛应用于嵌入式系统、游戏开发、网络编程等领域。

因此,掌握C语言对于计算机科学专业的学生来说是非常重要的。

二、数据结构的概念和分类数据结构是计算机科学中研究数据组织和存储方式的一门学科。

它涉及到如何将数据以某种特定的方式组织起来,以便于高效地访问和操作。

数据结构可以分为线性结构、树形结构和图形结构三大类。

1. 线性结构线性结构是最简单的数据结构之一,它的特点是数据元素之间存在一对一的关系。

常见的线性结构有数组、链表和栈等。

其中,数组是一种连续存储的数据结构,具有随机访问的特点;链表是一种离散存储的数据结构,通过指针将各个节点连接起来;栈是一种特殊的线性结构,具有后进先出(LIFO)的特点。

2. 树形结构树形结构是一种非线性的数据结构,它的特点是数据元素之间存在一对多的关系。

常见的树形结构有二叉树、堆和哈夫曼树等。

其中,二叉树是一种每个节点最多只有两个子节点的树形结构;堆是一种特殊的二叉树,具有一定的排序规则;哈夫曼树是一种用于数据压缩的树形结构。

3. 图形结构图形结构是一种更加复杂的非线性数据结构,它的特点是数据元素之间存在多对多的关系。

数据结构C语言版实验报告完整版

数据结构C语言版实验报告完整版

数据结构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实验题目:二分查找算法的实现实验目的:掌握二分查找法的工作原理及应用过程,利用其工作原理完成实验题目中的内容。

数 据 结 构(C语言版) 实 验 指 导包含参考讲述

数 据 结 构(C语言版) 实 验 指 导包含参考讲述

数据结构(C语言版)实验指导预备实验C语言的函数、数组、指针和结构体知识一、实验目的1、复习C语言中函数、数组、指针、结构体与共用体等的概念。

2、熟悉利用C语言进行程序设计的一般方法。

二、实验内容1、调试程序:输出100以内所有的素数(用函数实现)。

#include<stdio.h>int isprime(int n){ /*判断一个数是否为素数*/int m;for(m=2;m*m<=n;m++)if(n%m==0) return 0;return 1;}int main(){ /*输出100以内所有素数*/int i; printf("\n");for(i=2;i<100;i++)if(isprime(i)==1) printf("%4d",i);return 0;}运行结果:2、调试程序:对一维数组中的元素进行逆序排列。

#include<stdio.h>#define N 10int main(){int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;printf("\nthe original Array is:\n ");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){ /*交换数组元素使之逆序*/temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nthe changed Array is:\n");for(i=0;i<N;i++)printf("%4d",a[i]);return 0;}运行结果:3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。

数据结构实验指导书(C版)

数据结构实验指导书(C版)

数据结构实验指导书(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语言版实验教案

数据结构c语言版实验教案

数据结构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语言版

数据结构实验报告c语言版数据结构实验报告(C语言版)引言:数据结构是计算机科学中的重要概念,它关注如何在计算机中存储和组织数据以便有效地访问和操作。

本实验报告将介绍在C语言中实现的一些常见数据结构及其应用。

一、线性表线性表是最基本的数据结构之一,它是一种有序的数据元素的集合。

在C语言中,可以使用数组或链表来实现线性表。

数组具有固定大小的优点,但插入和删除操作较为复杂。

链表则可以动态地分配内存,但访问元素需要遍历整个链表。

二、栈和队列栈和队列是两种特殊的线性表。

栈是一种后进先出(LIFO)的数据结构,可以使用数组或链表实现。

常见的应用包括函数调用、表达式求值等。

队列是一种先进先出(FIFO)的数据结构,同样可以使用数组或链表实现。

它常用于任务调度、消息传递等场景。

三、树树是一种非线性的数据结构,它由节点和边组成。

树的每个节点可以有零个或多个子节点,其中一个节点被称为根节点。

常见的树结构包括二叉树、二叉搜索树、平衡二叉树等。

树的应用广泛,例如文件系统、数据库索引等。

四、图图是由节点和边组成的非线性数据结构,它可以用来表示各种实体之间的关系。

图可以是有向的或无向的,可以是带权重的或无权重的。

图的常见应用包括社交网络、路由算法等。

在C语言中,图通常使用邻接矩阵或邻接表来表示。

五、排序算法排序算法是数据结构中的经典问题之一。

常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。

每种排序算法都有其特点和适用场景,选择合适的排序算法可以提高程序的效率。

六、查找算法查找算法是在数据集中查找指定元素的过程。

常见的查找算法包括线性查找、二分查找、哈希查找等。

线性查找适用于无序数据集,而二分查找适用于有序数据集。

哈希查找通过散列函数将关键字映射到存储位置,可以快速定位元素。

七、实验总结通过本次实验,我们学习了C语言中常见的数据结构及其应用。

线性表、栈和队列是最基本的数据结构,树和图则提供了更灵活的数据组织方式。

数据结构实验C语言版

数据结构实验C语言版

数据结构实验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.注册商标:________指在商标局进行了合法登记并取得专有权的商标。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Harbin Institute of TechnologyC语言与数据结构实验指导书刘梅索莹田文龙哈工大电子与信息工程学院电子工程系实验1 实验平台一、实验目的1.掌握Microsoft Visual C++ 6.0集成环境的使用方法。

2.掌握C程序在Microsoft Visual C++ 6.0开发环境中的编辑、编译、链接和运行全过程二、实验内容1)启动Microsoft Visual C++ 6.0开发环境双击桌面应用程序图标或云兄“开始”菜单程序组中的Microsoft Visual C++ 6.0应用程序,启动VC++,如图所示图1.1 VC++初始界面2)建立C源程序文件方法1:单机工具栏的“新建文本文件”按钮,打开文本文件编辑界面如下图所示图1.2 文本文件编辑界面方法2:执行“文件”->“新建”命令,在“文件”选项卡下选择C++ Source File 文件类型,然后输入C源程序文件名和保存文职,如图所示,然后单击“确定”按钮,打开源程序文件编辑界面,如图1.4所示。

注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展名为“.cpp”的C++文件。

3)编辑源文件方法1:在如图1.2所示的文本文件编辑界面中输入源程序代码,如图1.5所示。

方法2:在如图1.4所示的C源程序文件编辑界面中编辑源程序代码,如图1.6所示。

图1.3 新建文件图1.4 C源程序文件编辑界面图1.5 文本文件编辑界面编辑源文件图1.6 C源程序编辑界面编辑源文件4)保存源文件源文件编辑结束后,执行“文件”->“保存”命令保存文件,文本文件编辑界面中编辑的源文件保存时必须在文件名后加上扩展名“.c”,否则保存的是扩展名为txt的文本文件,不能编译运行。

5)组件文件执行“组建”->“组建”命令或直接按F7功能键或单机工具栏Build按钮,可以对源文件进行编译、链接而不运行改程序。

当然也可以先执行“组建”->“编译”(快捷键Ctrl+F7)命令编译文件,再执行“组建”->“组建”(快捷键F7)命令链接文件。

由于VC++有工作区的要求,所以组建时,系统提示需要建立工作区,如图1.7所示。

单机“是”按钮,系统会自动建立工作区,组建后的结果如图1.8所示。

图1.7 提示建立工作区图1.8 组建源程序结果注意:图1.8下方的“组建”信息窗口中的内容说明了组建的结果,必须保证错误(error(s))数为0才能运行程序。

6)运行文件执行“组建”->“执行”命令或直接按Ctrl+F5键或单机工具栏BuildExecute按钮,可以运行程序,结果显示在用户输出窗口中,如图1.9所示。

图1.9 用户输出窗口注意:如果要编辑下一个C源程序,由于新建的文件不会自动加入工作区,因此需要先关闭当前工作区。

方法是执行“文件”->“关闭工作空间”命令,或者关闭后重新启动VC++,再按照上述方法建立、编辑新的C源文件,让VC++自动建立工作区。

7)运行“加法”程序在VC++环境中建立并编辑实现加法运算的源程序,然后组建该文件,结果如图1.10所示。

运行该文件,并按要求输入数据,得到运行结果。

图1.10 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=2.5,圆柱高h=5.0,求出该圆柱体的表面积和体积。

要求:用scanf()函数输入数据,输出时要求有文字说明,取小数点后两位数字。

三、实验指导1.格式说明符的使用(参考教材)2. “输入输出字符”程序1)编程分析(1)需要定义字符型变量存放输入的数据;(2)用scanf()函数输入字符时,要注意不要接收缓冲区中已有的字符。

2)参考程序#include "stdio.h"main(){char a,b,c;printf("1.Input a character:\n");a=getchar();c=getchar();printf("The character is:%c\n\n",a);printf("2.Input a character:\n");scanf("%c",&b);printf("The character is:");putchar(b);putchar('\n');}3. “求三角形面积”程序1)编程分析(1)该问题的解决过程如下:(2)需要定义实型(float或double)变量存放相应的数据;(3)计算面积需要用到开平方函数sqrt(),该函数原型包含在头文件math.h中,因此需要在程序开始将头文件包含进来;(4)根据实际情况确定各个变量在输出时的宽度和小数位数。

2)参考程序#include “stdio.h”#include “math.h”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=%7.2f,b=%7.2f,c=%7.2f\n”,a,b,c);printf(“area=%9.2f\n”,area);}3. “圆柱体”程序1)编程分析(1)该问题的解决过程如下:(2)需要定义实型(float或double)变量存放相应的数据;(3)计算过程中需要用到常数π,为使用方便,在程序开始用宏定义命令define 将常数3.14159(即π)用PI表示;(4)输出数据时根据要求确定各个变量的宽度和小数位数(本例采用10.2)。

2)参考程序#include “stdio.h”#define PI 3.14159main(){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:%10.2f\n”,s);printf(“The value of v is:%10.2f\n”,v);}实验3 选择结构程序设计一、实验目的1.学会使用逻辑表达式表示条件的方法。

2.掌握switch语句的用法。

二、实验内容1.switch语句的应用编写计算器程序。

要求从键盘任意输入两个数值,然后输入一个四则运算符,自动完成运算后输出结果。

三、实验指导1.switch语句的应用1)编程分析(1)四则运算共有加(+)、减(-)、乘(*)、除(/)4种运算,要做出判断需使用switch语句。

(2)当输入符号为四则运算之外的符号时,不进行任何运算,但应给出相应的提示信息。

当使用提示信息时,switch语句应含有default子句。

2)参考程序#include “stdio.h”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 “stdio.h”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 “stdio.h”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的整数值,查看并分析程序结果。

相关文档
最新文档