武汉工程大学版《计算机程序设计基础》——实验报告[2]

合集下载

计算机软件技术基础实验报告_2

计算机软件技术基础实验报告_2

计算机软件基础实验报告姓名学号实验目的1. 掌握C语言程序设计方法, 并学会上机调试。

2. 熟悉Huffman编码源程序,并构造Huffman树。

实验内容试设计一算法, 从包括n个元素的数组中, 求最大和最小元素, 并使得当n个元素为有序排列时, 元素之间的比较次数仅为n-1次。

在给出的Huffman编码源程序基础上, 要求画出Huffman树, 求出与等长编码相比时的压缩比。

实验要求1.根据实验内容编写算法, 并用 C 语言进行程序设计。

2.将所编程序在计算机上调试通过,并全面测试.实验结果1. 以一个含有8个元素的一维数组{1, 2, 3, 5, 7, 8, 9, 12}为例,设计程序如下:#include<stdio.h>int maxArray(int x ,int y);int minArray(int x ,int y);int main(void){int i = 0 ;int array[8]={ 1, 2, 3, 5, 7, 8, 9, 12} ;printf;do{scanf("%d",&array[i]);i++;} while(i < 8);int maxTemp = array[0];int minTemp = array[0];int maxIndex = 0;int minIndex = 0;for(i=1;i<8;i++){maxTemp = maxArray(array[i] , maxTemp);minTemp = minArray(array[i] , minTemp);}for(i=0;i<8;i++){if (maxTemp == array[i]){maxIndex = i;}if (minTemp == array[i]){minIndex = i;}}printf;return 0;}运行结果如下:2.Huffman编码源程序#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{unsigned int weight; //结点权值unsigned int parent,lchild,rchild; //结点的父指针, 左右孩子指针}HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树进行编码void PrintHuffmanCode(HuffmanCode,unsigned int*,int); //显示哈夫曼编码void Select(HuffmanTree,int,int&,int&); //在数组中寻找权值最小的两个结点void main(){HuffmanTree HT; //哈夫曼树HTHuffmanCode HC; //哈夫曼编码表HCint n,i; //n是哈夫曼树叶子结点数unsigned int *w; //w存放叶子结点权值char j='y';printf("演示构造哈夫曼树.\n");printf("输入需要进行编码的字符数目.\n例如:8\n");printf("然后输入每个字符出现的次数/权值.\n");printf("例如:5 29 7 8 14 23 3 11\n");printf("自动构造一棵哈夫曼树并显示哈夫曼编码.\n");printf(" 5---0110\n 29---10\n 7---1110\n 8---1111\n 14---110\n");printf(" 23---00\n 3---0111\n 11---010\n");while(j!='N'&&j!='n'){printf("请输入字符数目:");scanf("%d",&n); //输入字符数目if(n<=1) {printf("该数不合理!\n");continue;}w=(unsigned int*)malloc(n*sizeof(unsigned int)); //开辟空间存放权值printf("请输入各字符出现的次数/权值:\n");for(i=0;i<n;i++) scanf("%d",&w[i]); //输入各字符出现的次数/权值CreateHuffmanTree(HT,w,n); //生成哈夫曼树HuffmanCoding(HT,HC,n); //进行哈夫曼编码PrintHuffmanCode(HC,w,n); //显示哈夫曼编码printf("哈夫曼树构造完毕, 还要继续吗?(Y/N)");scanf(" %c",&j);}}void CreateHuffmanTree(HuffmanTree &HT,unsigned int *w,int n){//w存放n个结点的权值, 将构造一棵哈夫曼树HTint i,m;int s1,s2;HuffmanTree p;if(n<=1) return;m=2*n-1; //n个叶子结点的哈夫曼树, 有2*n-1个结点HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //开辟2*n各结点空间for(p=HT+1,i=1;i<=n;++i,++p,++w) //进行初始化{p->weight=*w;p->parent=0;p->lchild=0;p->rchild=0;}for(;i<=m;++i,++p){p->weight=0;p->parent=0;p->lchild=0;p->rchild=0;}for(i=n+1;i<=m;++i) //建哈夫曼树{Select(HT,i-1,s1,s2);//从HT[1...i-1]中选择parent为0且weight最小的两个结点, 其序号分别为s1和s2HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2结点的父指针parentHT[i].lchild=s1; HT[i].rchild=s2; //修改i结点的左右孩子指针HT[i].weight=HT[s1].weight+HT[s2].weight; //修改权值}}void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n){//将有n个叶子结点的哈夫曼树HT进行编码, 所编的码存放在HC中//方法是从叶子到根逆向求每个叶子结点的哈夫曼编码int i,c,f,start;char *cd;HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); //分配n个编码的头指针向量cd=(char *)malloc(n*sizeof(char)); //开辟一个求编码的工作空间cd[n-1]='\0'; //编码结束符for(i=1;i<=n;++i) //逐个地求哈夫曼编码{start=n-1; //编码结束位置for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码if(HT[f].lchild==c) cd[--start]='0'; //若是左孩子编为'0'else cd[--start]='1'; //若是右孩子编为'1'HC[i]=(char *)malloc((n-start)*sizeof(char)); //为第i个编码分配空间strcpy(HC[i],&cd[start]); //将编码从cd复制到HC中}free(cd); //释放工作空间}void PrintHuffmanCode(HuffmanCode HC,unsigned int *w,int n){//显示有n个叶子结点的哈夫曼树的编码表int i;printf("HuffmanCode is :\n");for(i=1;i<=n;i++){printf(" %3d---",w[i-1]);puts(HC[i]);}printf("\n");}void Select(HuffmanTree HT,int t,int&s1,int&s2){//在HT[1...t]中选择parent不为0且权值最小的两个结点, 其序号分别为s1和s2 int i,m,n;m=n=10000;for(i=1;i<=t;i++){if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n)) if(m<n){n=HT[i].weight;s2=i;}else {m=HT[i].weight;s1=i;}}if(s1>s2) //s1放较小的序号{i=s1;s1=s2;s2=i;}}运行结果如下:输入数据后的运行结果:实验心得要熟练掌握程序的编写, 如果没有一定的想象能力和大量的上机实践是根本无法完成的。

武汉工程大学版《计算机程序设计基础》——实验报告[2]

武汉工程大学版《计算机程序设计基础》——实验报告[2]

武汉工程大学计算机科学与工程学院《计算机程序设计基础》实验报告[2]说明:评阅教师:日期:实验内容1•仔细阅读并上机运行实验指导第13页“实验三 选择结构程序设计”中“ 1.典型例题分析”中的例题,学习if 语句用法,并将运行结果窗口的抓图 粘贴2.上机运行实验指导第14页“ 2.程序调试”中的第2)、4)、6)题,结合程序运行结果理解每条语句的含义并将 运行结果窗口的抓图 粘贴到下面。

上机表现按时出勤、遵守纪律认真完成各项实验内容30分报告质量程序代码规范、功能正确填写内容完整、体现收获70分到下面Zg Mb CB*/. 二ATIJ , ■ dir±gg Mt> «•/••处SK ■」・Nd ZB.- d<g:i 1«氏*WM*I OCX ■•N •MwwX) "I j)IL- C» □ <*«yit4 fcBF•丄・fi戶GO [』■2HL3 i9rrnci Ixl CAM-J_I伸■血*■ t3.编程实现实验指导第16页“3.实验题目”中第1题,上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。

#inelude <> int main()float x,y;printf( "In put x:" );seanf( "%f",&x);if (x<1)y=x;if (x>=1 && x<10)y=2*x-1;if (x>=11)y=3*x-11;printf( "y=%f\n");return 0;|*M flKEi ■» W1MI ■-J" J s J * -J-& - - -I -I 3 li I W WI • * IG iP ■ 4 J *■? i J 卜二。

计算机基础实验报告2

计算机基础实验报告2

计算机基础实验报告2《计算机基础实验报告2》一、实验目的本次实验的主要目的在于熟悉C/C++编程语言,熟悉实验开发软件,从实践中加强对C/C++ 编程知识和技巧的掌握,进一步积累实验开发技能,以便以后解决新的更有趣的实验。

二、实验内容1.安装编程开发环境:本次实验以Visual Studio 2005编程开发环境为例,进行实验开发。

2.学习C/C++编程:使用C语言完成一切可能的实验,熟练掌握C/C++的编程技术。

3.编写程序:以完善的实验开发软件,使用C/C++语言设计实验程序,把实验内容和程序设计集成在一起。

4.测试实验程序:用实验开发软件编写实验程序,根据实验要求,编写出完整的程序,并测试运行程序,对程序的运行情况作出评估,反复修改,以使程序达到最佳的运行效果。

三、实验结果通过实验,我更好地了解了C/C++语言中常见的编程技术,如:函数调用、判断与循环结构、数组定义及操作、结构体定义与操作、指针及引用等技术,也掌握编写程序和使用实验开发软件、测试程序并记录结果的实验操作流程。

此外,还更加熟练地操作实验开发软件,如熟练操作应用程序框架、添加和删除文件的建立,以及综合编程和调试等技术。

本次实验初步体会到C/C++编程的乐趣,学会了编写程序、调试程序及把程序运行的方法,使我对计算机编程语言的把握更加细致,更加有安全感,可以更加熟练地使用实验开发软件,也可以在不同的实验开发环境下更加顺畅地完成编程任务。

四、实验总结本次实验,使我熟练掌握了C/C++编程语言的编程技巧及方法,从而更加深刻地理解了实验开发软件的使用,不但更为充分地理解了C/C++编程语言的特点,也增强了自己的实验开发能力,以便以后更好的解决新的实验。

因此,我将在日后的实验开发工作中继续努力,从而更好地提升自己的实验开发技能。

计算机基础实验实验报告

计算机基础实验实验报告
(3)编写一个程序测试该类,测试数据及要求如下:
圆柱体对象:v(1.0,3.0);
本程序的执行结果如下:
圆柱体属性数据:
半径:1米
高度:3米
面积:3.14平方米
体积:9.42立方米
题目:定义一个类为形状,由它公有派生出圆、正方形、长方形。
利用多态性以虚函数的形式完成计算圆、正方形、长方形的面积。
具体要求如ቤተ መጻሕፍቲ ባይዱ:
(1)形状类名为shape,圆、正方形、长方形的类名分别为circle,square,rectangle。
(2)基类shape中只有一个公有的成员函数:virtual double area();用于求面积,操作为空。
(3)各派生类的数据成员均是私有的,数据类型为double型。
圆的半径为r,正方形的边长为a、长方形的边长为a,b,各派生类均需要定义公有的构造函数。
源代码
(10)题目函数递归问题:求n的阶乘,π的近似值
源代码
2.面向对象题目(5题)
设计一个长方体类Box,它能计算并输出长方体的体积和表面积。具体要求如下:
(1)私有数据成员
数据成员floata,b,c;//分别存放长方体的三条边长
数据成员floatvolume,area;//分别存放长方体的体积和表面积
公有成员函数:float getr(); //取圆的半径r
double area(); //求圆的面积
(2)类colum
保护数据成员:float h; //圆柱体的高
公有构造函数:colum(float,float); //初始化r和h
公有成员函数:float geth(); //取圆柱体的高h
double vol (); //求圆柱体的体积

大学程序设计基础实验报告(2)

大学程序设计基础实验报告(2)

大学程序设计基础实验报告(2)**大学程序设计基础实验报告实验名称:实验三分支结构实验目的:1、掌握IF-ELSE语句使用。

2、掌握ELSE-IF语句使用。

3、熟悉SWITCH语句使用。

实验内容:在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。

启动C-Free,完成如下各题。

1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。

tax=rate * (salary–850),rate的计算方式如下:当salary 当850 当1350 当2850 当salary > 5850,则rate = 20%;。

3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。

等腰直角算作等腰)。

4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进除或求余运算。

【请分别用if语句和switch语句实现此题功能】上交作业的方法:1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。

2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。

武汉工程大学版《计算机程序设计基础》——实验报告

武汉工程大学版《计算机程序设计基础》——实验报告

.武汉工程大学计算机科学与工程学院《计算机程序设计基础》实验报告[2]1.仔细阅读并上机运行实验指导第13页“实验三选择结构程序设计”中“1.典型例题分析”中的例题3.1,学习if语句用法,并将运行结果窗口的抓图粘贴到下面2.上机运行实验指导第14页“2.程序调试”中的第2)、4)、6)题,结合程序运行结果理解每条语句的含义并将运行结果窗口的抓图粘贴到下面。

3.编程实现实验指导第16页“3.实验题目”中第1题,上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。

#include<stdio.h>int main(){float x,y;printf("Input x: ");scanf("%f",&x);if(x<1)y=x;if(x>=1&&x<10)y=2*x-1;if(x>=11)y=3*x-11;printf("y=%f\n");return0;}4.仔细阅读并上机运行实验指导第17页“实验四循环结构程序设计”中“1.典型例题分析”中的例题4.1,学习循环语句用法,并将运行结果窗口的抓图粘贴到下面。

5.仔细阅读实验指导第18页“2.程序调试”的内容,结合例题4.2熟悉程序调试的方法,并将运行结果窗口的抓图粘贴到下面。

6.上机运行实验指导第21页“(3)上机调试练习”中的第1)、3)题,结合程序运行结果理解每条语句的含义并将运行结果窗口的抓图粘贴到下面。

7.编程实现实验指导第23页“3.实验题目”中的第2题。

上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。

#include"stdio.h"int main(){int i,j,pro,sum;j=1;sum=0;pro=1;for(i=1;i<=9;i=i+2)while(j<=i){pro=pro*j;j++;}sum=sum+pro;}printf("1!+3!+5!+7!+9!=%d\n",sum);return0;}8.编程实现实验指导第23页“3.实验题目”中的第4题。

计算机程序设计类实验报告

计算机程序设计类实验报告

计算机类课程实验报告
课程名称:C#
实验名称:面向对象程序设计基础班级:xxxxxxxxxxxxxxxxx 姓名:xxxxxxx
学号:xxxxxxxxxxxx
实验四
算法描述及实验步骤(用适当的形式表达算法设计思想与算法实现步骤)1.启动VS2010,出现初始页。

界面如下:
2.创建Windows W32 Consol Application:名为lab1。

3.上机调试程序,按规定格式输入数据
4.上机调试程序,按规定格式输入数据
5.上机调试,程序分析
6.编写程序









(详细记录在调试过程中出现的问题及解决方法。

记录实验执行的结果。


总结(对实验结果进行分析,问题回答,实验心得体会及改进方法。


1.类是一种数据结构,它包含数据成员,函数成员和嵌套类型.类是相
同对象的集合.字段属性和索引器是类中用于存储数据的重要成员.
2.类是对象概念在面向对象编程语言中的反映,是相同对象的集合.对
象是具有数据,行为和标识的编程结构,它是面向对象应用程序的一
个组成部分.。

计算机基础与程序设计实践报告

计算机基础与程序设计实践报告

计算机基础与程序设计实践报告标题:计算机基础与程序设计实践报告引言:计算机基础与程序设计是计算机科学与技术专业的核心课程之一,本报告旨在总结和分享本学期的学习成果和经验。

通过本学期的学习,我对计算机基础知识和程序设计有了更深入的理解,并能够独立完成一些实际的编程任务。

一、计算机基础知识的学习与总结:1. 计算机组成与结构:学习了计算机的组成和各个主要部件的功能,如中央处理器、存储器、输入输出设备等,并了解了它们之间的工作原理和协作方式。

2. 操作系统与文件管理:学习了操作系统的功能和任务,掌握了文件管理的基本操作,并了解了进程管理、内存管理、文件系统等操作系统的重要概念和技术。

3. 网络与通信:学习了计算机网络的基本概念、原理和协议,了解了互联网的组成和工作方式,并学会了使用网络工具进行网络配置和故障排查。

4. 数据结构与算法:学习了常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、查找、图算法等),并能够灵活应用它们解决实际问题。

二、程序设计实践的经验和收获:1. 编程语言的选择和学习:经过对多种编程语言的比较和评估,最终选择了Python作为主要的编程语言,并通过自学和实践掌握了Python的基本语法和特性,能够进行简单的程序设计和开发。

2. 程序设计思维的培养:通过编程实践,我逐渐培养了良好的程序设计思维,学会了分析问题、设计算法和实现代码的方法,能够高效地解决实际问题,并编写出可读性和可维护性较高的代码。

3. 团队合作与沟通:在实践项目中,我与同学合作完成了一些小型的程序开发任务,通过合作学会了与他人进行有效的沟通和协作,提高了自己的团队合作能力和项目管理能力。

4. 调试与问题解决能力的提升:在编程实践中,我遇到了很多错误和问题,通过耐心的调试和查找解决方案的过程,我逐渐提高了自己的调试能力和问题解决能力,能够更快地找到问题所在并解决它们。

结论:通过本学期的学习和实践,我对计算机基础知识和程序设计有了更全面的理解,并能够独立进行一些实际的编程任务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.编程实现实验指导第16页“3.实验题目”中第1题,上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。
#include<stdio.h>
intmain()
{
floatx,y;
printf("Input x: ");
scanf("%f",&x);
if(x<1)
y=x;
if(x>=1&&x<10)
{
inti,j,pro,sum;
j=1;
sum=0;
pro=1;
for(i=1;i<=9;i=i+2)
{
while(j<=i)
{
pro=pro*j;
j++;
}
sum=sum+pro;
}
printf("1!+3!+5!+7!+9!=%d\n",sum);
return0;
}
8.编程实现实验指导第23页“3.实验题目”中的第4题。上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。
6.上机运行实验指导第21页“(3)上机调试练习”中的第1)、3)题,结合程序运行结果理解每条语句的含义并将运行结果窗口的抓图粘贴到下面。
7.编程实现实验指导第23页“3.实验题目”中的第2题。上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。
#include"stdio.h"
intmain()
武汉工程大学
计算机科学与工程学院
《计算机程序设计基础》实验报告[2]
专业班级
实验时间
学生学号
实验地点
学生姓名
指导教师
实验项目
程序控制结构
实验类别
基础性
实验学时
6
实验目的及要求
1.熟悉C语言各种语句的含义和用法。
2.掌握顺序结构程序设计的方法。
3.掌握if语句和switch语句的用法,并理解if_else语句嵌套中的匹配关系。
4.掌握for语句、while语句和do-while语句的用法,并熟练应用循环嵌套结构解决问题。能综合运用选择语句、循环语句和转向语句解决较复杂问题。
5.掌握一些常用算法,如穷举法、迭代法。
6.熟悉结构化程序设计的方法。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
按时出勤、遵守纪律
认真完成各项实验内容
#include"stdio.h"
intmain()
{
inti;
floats,a,b;
s=0;
b=100;
for(i=1;i<=10;i++)
{
a=b/2;
s=s+b+a;
b=a;
}
printf("经过的总路程是%.2f米\n",s);
printf("第十次弹起%.2f米\n",a);
return0;
printf("%d ",n);
}
return0;
}
12.编程实现实验指导第27页“3.实验题目”中的第3题,上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。
实验总结
对程序执行结果的分析,遇到的问题、解决的方法,新的认识、体会。
y=2*x-1;
if(x>=11)
y=3*x-11;
printf("y=%f\n");
return0;
}
4.仔细阅读并上机运行实验指导第17页“实验四循环结构程序设计”中“1.典型例题分析”中的例题4.1,学习循环语句用法,并将运行结果窗口的抓图粘贴到下面。
5.仔细阅读实验指导第18页“2.程序调试”的内容,结合例题4.2熟悉程序调试的方法,并将运行结果窗口的抓图粘贴到下面。
11.编程实现实验指导第27页“3.实验题目”中的第1题,上机运行正确后将程序源代码及运行结果的窗口抓图填写到下面。
#include"stdio.h"
intmain()
{
inti,n;
for(n=1;n<=1000;n++)
{
for(i=2;i<n-1;i++)
{
if(n%i==0)
break;
}
if(i<n-1)
30分
报告质量
程序代码规范、功能正确
填写内容完整、体现收获
70分
说明:
评阅教师:
日期:年月日
实验内容
1.仔细阅读并上机运行实验指导第13页“实验三选择结构程序设计”中“1.典型例题分析”中的例题3.1,学习if语句用法,并将运行结果窗口的抓图粘贴到下面
2.上机运行实验指导第14页“2.程序调试”中的第2)、4)、6)题,结合程序运行结果理解每条语句的含义并将运行结果窗口的抓图粘贴到下面。
}
9.仔细阅读并上机运行实验指导第23页“实验五综合性程序(一)”中“1.典型例题分析”的例题5.1,学习结构化程序设计的方法,并将运行结果窗口的抓图粘贴到下面。
10.上机运行实验指导第25页“2.程序调试”中的第1)、3)、5)题,结合程序运行结果理解每条语句的含义并将运行结果窗口的抓图粘贴到下面。
相关文档
最新文档