行程编码实验报告(C语言)

合集下载

C语言数据结构课程设计航空订票实验报告(含源代码)

C语言数据结构课程设计航空订票实验报告(含源代码)

数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。

2.订票输入旅客的姓名,证件号,航班号,和订票张数。

程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。

此也采用单链表的数据结构。

c语言实验报告实验

c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。

三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。

熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。

2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。

运用 switch 语句进行多分支选择,处理不同的情况。

利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。

3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。

掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。

4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。

实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。

5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。

掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。

6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。

了解共用体的概念和使用场景,比较结构体和共用体的区别。

四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。

c语言实验报告5篇

c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。

其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。

c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。

3、掌握C程序的运行、调试方法等。

二、实验内容编写一个学生信息排序程序。

要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、使用函数方法定义各个模块。

三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。

(]1.2 实验要求在报告中记录建立、保存C程序实习过程。

1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。

C语言实验指导书的程序编码

C语言实验指导书的程序编码

C语言实验指导书的程序编码C语言实验程序编码1.平面上两点间的距离#include#includeint main(){double a1,a2;double b1,b2;double distance;printf("please input value a1 and a2:\n"); scanf("%lf%lf",&a1,&a2);printf("please input value b1 and b2:\n"); scanf("%lf%lf",&b1,&b2);distance=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));printf("%lf\n",distance);return 0;}2.#include#includeint main(){double a1,a2;double b1,b2;double distance;printf("please input value a1 and a2:\n");scanf("%lf%lf",&a1,&a2);printf("please input value b1 and b2:\n");scanf("%lf%lf",&b1,&b2);distance=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));printf("%lf\n",distance);return 0;}3.#include//int 占用四字节的32位机#define LOW16 0xFFFFint main(){unsigned int A=0,B=0,C=0,t=0;char hex[33]={0};printf("Please input two unsigned int A and B: "); scanf("%u%u",&A,&B);C=A & LOW16;C<<=16;C |= (B>>16) & LOW16;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}4.#include#includemain(){double x1,y1;double x2,y2;double s;printf("please input a point a:\n");scanf("x1=%lf,y1=%lf\n",&x1,&y1);printf("please input the orther point b:\n");scanf("x2=%lf,y2=%lf\n",&x2,&y2);s=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));printf("平面上任意两点间的距离:%lf\n",s);return 0;}5.#includevoid main(){int i,head,foot,rabbit,chick;printf("Enter the 2 numbers :");scanf("%d%d",&head,&foot);printf("head=%d,foot=%d\n",head,foot);for(i=0;i<=head;i++){rabbit=i;chick=head-rabbit;if(rabbit*4+chick*2==foot)printf("rabbit=%d,chick=%d\n",rabbit,chick);}}6.#include//int 占用四字节的32位机#define LOW16 0xFFFFint main(){unsigned int A=0,B=0,C=0,t=0;char hex[33]={0};printf("Please input two unsigned int A and B: \n"); scanf("%u%u",&A,&B);C=A & LOW16;C<<=16;C |= (B>>16) & LOW16;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}7.#include "stdio.h"main()long int rmb,a,b,c,d,e,f,gw,sw,i;printf("Please enter a number:");scanf("%d",&rmb);if(rmb>0 && rmb<=2147483647){sw=rmb%100;gw=rmb%10;a=rmb/100;b=sw/50;c=(sw-b*50)/20;d=(sw-b*50-c*20)/10;e=gw/5;f=(gw-e*5)/1;printf("$100=%d\n$50=%d\n$20=%d\n$10=%d\n$5=%d\n $1=%d\n",a,b,c,d,e,f);}else printf("Error of money!");return 0;}8.#includevoid main(){float a;printf("请输入成绩a:\n");scanf("%f",&a);if (a>=0&&a<=100){switch((int)(a/10)){case 10:case 9:printf("优\n");break;case 8:printf("良\n");break;case 7:printf("中\n");break;case 6:printf("及格\n");break;default:printf("差\n");break;}}elseprintf("输入错误\n");printf("a=%f\n",a);}9.#include//int 占用四字节的32位机int main(){unsigned int A,B,C;printf("Please input two unsigned int A and B: \n"); scanf("%u%u",&A,&B);A=A<<16;B=B>>16;C=A|B;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}10.#includemain(){unsigned int a,b,c;a=65;b=66;c=67;printf( "a=%c,b=%c,c=%c\n",a,b,c); } 11.#includeint main(){int h,f,x,y;printf( "Input h and f:\n ");scanf( "h=%d,f=%d",&h,&f);y=(f-h-h)/2;x=h-y;printf( "x=%d,y=%d\n ",x,y); return 0;}12.#includevoid main(){int x,y;printf("please enter x,y:");scanf("%d%d",&x,&y);printf("\nx+y=%d\n",x+y);printf("x-y=%d\n",x-y);printf("x*y=%d\n",x*y);printf("x/y=%d\n",x/y);printf("x%y=%d\n",x%y);}13.#includemain(){int h,f,x,y;printf("please input values h and f:\n"); scanf("%d,%d",&h,&f);if (h>0 && f>0){x=(4*h-f)/2;y=(f-2*h)/2;printf("x=%d,y=%d\n",x,y);}elseprintf("input error!\n");return 0;}14.#includeint main(){int i,j,k;for(i=0;i<=100/3;i++){for(j=0;j<=100/2;j++){for(k=0;k<=100;k+=2){if(((i+j+k)==100)&&((3*i+2*j+k/2 )== 100)) printf("%d ,%d ,%d\n", i,j,k);}}}return 0;}15.#includeint main(){int i,j,k;for(i=100/3;i>0;i--){for(j=100/2;j>0;j--){for(k=100;k>0;k-=2){if(((i+j+k)==100)&&((3*i+2*j+k/2 )== 100)) printf("%d ,%d ,%d\n", i,j,k);}}}return 0;}16.#include#include#include//模拟一次投骰子的函数,返回值为0~5,表示骰子的六个面int get_number(void){int num = 0;num = rand() % 6;return num;}main(){int data[6];int i=0;srand(time(NULL));//设置随机数种子for( i=0 ; i < 6 ; i++)//数据初始化{data[i]=0;}for( i=0 ; i<1000; i++)//进行1000次试验{data[get_number()]++;}for( i=0 ; i < 6 ; i++)//统计结果输出{printf("点数为%d的次数为: %d\n",i+1,data[i]);}return 0;}16.1. #include#include#include#includevoid main(){srand(time(NULL));double p1=0,p2=0,p3=0,p4=0,p5=0,p6=0; floati1=0,i2=0,i3=0,i4=0,i5=0,i6=0;for(int i=0;i<1000;i++){if(rand()%6+1==1){i1++;}if(rand()%6+1==2){i2++;}if(rand()%6+1==3){i3++;}if(rand()%6+1==4){i4++;}if(rand()%6+1==5){i5++;}if(rand()%6+1==6){i6++;}}p1=i1/1000;p2=i2/1000;p3=i3/1000;p4=i4/1000;p5=i5/1000;p6=i6/1000;printf("出现1的概率%f:\n",p1); printf("出现2的概率%f:\n",p2); printf("出现3的概率%f:\n",p3);printf("出现4的概率%f:\n",p4);printf("出现5的概率%f:\n",p5);printf("出现6的概率%f:\n",p6);}17.#includemain( ){har string[81];int i,num=0,word=0;char c;gets(string);for(i=0;(c=string[i])!=′\0′;i++)if(c==' '||c==' ')word=0;else if(word= =0){word=1;num++;}printf(″There are %d words in the line.\n″,num);}18.#include#define N 5void main(){int i,j;float max,min,t,a[N];float pjf,sum=0;printf("please input value a[i]:\n");for(i=0;i<n;i++)< p="">scanf("%f",&a[i]);for (i=0;i<n;i++)< p="">{sum=sum+a[i];pjf=sum/N;}max=min=a[0];for(i=1;i<n;i++)< p="">{if(max<a[i])< p="">{max=a[i];}if(min>a[i]){min=a[i];}}printf("大于平均值的数是:\n"); for(i=0;i<n;i++)< p=""> {if(a[i]>pjf)printf("a[%d]=%5.2f\t",i,a[i]); }printf("\n");printf("排列后的数是:\n");for(i=0;i<n-1;i++)< p=""> {for(j=i;j<n;j++)< p=""> {</n;j++)<></n-1;i++)<></n;i++)<></a[i])<></n;i++)<></n;i++)<></n;i++)<>。

行程编码实验报告

行程编码实验报告

行程编码以vc方式实现实验目的:了解行程算法的压缩和解压过程,学会计算压缩比以及与行程算法相关的问题。

实验平台:在vc2010下以c++代码的形式完成。

软件设计说明:该程序主要是为了实现压缩和解压的功能。

压缩算法相对较为简单,主要是对输入的要压缩的数据进行遍历,遍历并同时记录相同的数据的数目,当遍历到不相同的数据后停止遍历并将数据和数目压入到vector中保存,考虑到可能会在数据间产生误差,我加入’\’用于区分不同的两个数据,还有若数据的长度为1时,我不将1保存到vector中,以此方式尽可能的减少压缩数据的长度,增加压缩的效果。

函数中使用了<sstream>中的功能,其作用为将int转换为string的类型,便于储存数据,其功能函数如下:void yasuo(vector<string> a) //a传入要压缩的数据{int length=a.size(); //原数据的长度vector<string> temp; //保存压缩后的数据int j=0;int n=1;for(int i=0;i<length-1;i++){string b=a[i];if(i!=length-2){if(a[i]!=a[i+1]){if(n!=1){if(b=="\\"){temp.push_back(b);temp.push_back(b);}elsetemp.push_back(b);string s;stringstream out;out<<n;s = out.str();temp.push_back(s);s="\\";temp.push_back(s);n=1;j=j+2;}else{if(b=="\\"){temp.push_back(b);temp.push_back(b);}elsetemp.push_back(b);string s;s="\\";temp.push_back(s);n=1;j=j+1;}}elsen++;}else{if(a[i]==a[i+1]){n++;if(b=="\\"){temp.push_back(b);temp.push_back(b);}elsetemp.push_back(b);string s;stringstream out;out<<n;s = out.str();temp.push_back(s);n=1;j=j+2;}else{if(n!=1){if(b=="\\"){temp.push_back(b);temp.push_back(b);}elsetemp.push_back(b);string s;stringstream out;out<<n;s = out.str();temp.push_back(s);s="\\";temp.push_back(s);n=1;if(a[i+1]=="\\"){temp.push_back(a[i+1]);temp.push_back(a[i+1]);}elsetemp.push_back(a[i+1]);j=j+2;}else{if(b=="\\"){temp.push_back(b);temp.push_back(b);}elsetemp.push_back(b);string s;s="\\";temp.push_back(s);n=1;if(a[i+1]=="\\"){temp.push_back(a[i+1]);temp.push_back(a[i+1]);}elsetemp.push_back(a[i+1]);j=j+2;}}}}print(temp,a,j); //用于数据的输出}然后是解压算法的设计思路如下,主要是定义三个vector的向量,一个用于记录要压缩的数据,一个用于记录标志’\’的在string中的位置,然后根据’\’的位置求出数据的数目,将数目保存到另外一个vector中,然后根据数据和长度一一对应输出,这样就将数据解压完成。

编码仿真实验报告(3篇)

编码仿真实验报告(3篇)

第1篇实验名称:基于仿真平台的编码算法性能评估实验日期:2023年4月10日实验地点:计算机实验室实验目的:1. 了解编码算法的基本原理和应用场景。

2. 通过仿真实验,评估不同编码算法的性能。

3. 分析编码算法在实际应用中的优缺点。

实验环境:1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 仿真平台:MATLAB 2020a4. 编码算法:Huffman编码、算术编码、游程编码实验内容:1. 编写Huffman编码算法,实现字符序列的编码和解码。

2. 编写算术编码算法,实现字符序列的编码和解码。

3. 编写游程编码算法,实现字符序列的编码和解码。

4. 在仿真平台上,分别对三种编码算法进行性能评估。

实验步骤:1. 设计Huffman编码算法,包括构建哈夫曼树、编码和解码过程。

2. 设计算术编码算法,包括编码和解码过程。

3. 设计游程编码算法,包括编码和解码过程。

4. 编写仿真实验代码,对三种编码算法进行性能评估。

5. 分析实验结果,总结不同编码算法的优缺点。

实验结果及分析:一、Huffman编码算法1. 编码过程:- 对字符序列进行统计,计算每个字符出现的频率。

- 根据频率构建哈夫曼树,叶子节点代表字符,分支代表编码。

- 根据哈夫曼树生成编码,频率越高的字符编码越短。

2. 解码过程:- 根据编码,从哈夫曼树的根节点开始,沿着编码序列遍历树。

- 当遍历到叶子节点时,输出对应的字符。

3. 性能评估:- 编码长度:Huffman编码的平均编码长度最短,编码效率较高。

- 编码时间:Huffman编码算法的编码时间较长,尤其是在构建哈夫曼树的过程中。

二、算术编码算法1. 编码过程:- 对字符序列进行统计,计算每个字符出现的频率。

- 根据频率,将字符序列映射到0到1之间的实数。

- 根据映射结果,将实数序列编码为二进制序列。

2. 解码过程:- 对编码的二进制序列进行解码,得到实数序列。

游程编码实验报告

游程编码实验报告

实验二游程编码一、实验目的1、掌握游程编码原理;2、理解数据编码压缩和译码输出编码的实现。

二、实验要求实现游程编码和译码的生成算法。

三、实验内容输入一幅二值图像,先统计要压缩编码的文件中的字符字母出现的次数,按字符字母和空格出现的概率对其进行哈夫曼编码,然后读入要编码的文件,编码后存入另一个文件;接着再调出编码后的文件,并对其进行译码输出,最后存入另一个文件中。

四、实验原理1、xx树的定义:假设有n个权值,试构造一颗有n个叶子节点的二叉树,每个叶子带权值为wi,其中树带权路径最小的二叉树成为哈夫曼树或者最优二叉树;2、xx树的构造:weight为输入的频率数组,把其中的值赋给依次建立的HT Node对象中的data属性,即每一个HT Node对应一个输入的频率。

然后根据data属性按从小到大顺序排序,每次从data取出两个最小和此次小的HT Node,将他们的data 相加,构造出新的HTNode作为他们的父节点,指针parent,leftchild,rightchild赋相应值。

在把这个新的节点插入最小堆。

按此步骤可以构造出一棵xx树。

通过已经构造出的哈夫曼树,自底向上,由频率节点开始向上寻找parent,直到parent为树的顶点为止。

这样,根据每次向上搜索后,原节点为父节点的左孩子还是右孩子,来记录1或0,这样,每个频率都会有一个01编码与之唯一对应,并且任何编码没有前部分是同其他完整编码一样的。

五、实验程序#include<stdio.h>#include<string.h>#define NUM 1000char dat,flag,str[NUM],b[NUM];printf("(请输入待编码的字符串)\n\n");printf("原字符串为:");gets(str);//输入待编码的字符串flag=str[0];//记下第一个字符值作为flag游程编码的起始值/************************编码部分**********************************************/printf("\n游程编码为:");for(i=0;i<strlen(str);i++)//输入字符串的循环{if(str[i+1]==str[i])/************************译码部分**********************************************/printf("\n\n译码结果为:");for(j=0;j<h;j++)//对计数数组进行循环,次数为游程改变的次数{ for(z=0;z<a[j];z++)flag='1';else if(flag=='1')flag='0';//让flag轮流从0和1切换赋值}for(x=0;x<k;x++)printf("%c",b[x]);//将译出的码显示出来printf("\n\n\n");}八、结果分析九、实验心得。

c语言航班信息查询系统实验报告

c语言航班信息查询系统实验报告

软件学院大作业任务书题目:航班信息查询系统专业:班级:姓名:学号:完成人数:起讫日期:任课教师:职称:讲师部分管主任:完成时间:说明1.本任务书由任课教师填写后,下达到学生。

2.任务完成后,任课教师需填写小结表。

3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。

4.另附一份全班大作业总结NANCHANG UNIVERSITY高级语言程序设计课程设计题目: 航班信息查询系统学院:专业:班级:完成人数:成员:起讫日期:任课教师:完成时间:填表日期:目录一、需求分析............................................................. - 1 -1.1 项目介绍....................................................... - 1 -1.2 功能需求....................................................... - 1 -二、系统分析............................................................. - 1 -2.1 本程序需解决的关键技术问题..................................... - 1 -2.2 程序流程....................................................... - 1 -三、程序设计与实现....................................................... - 2 -3.1 程序设计....................................................... - 2 -3.2 程序实现........................................... 错误!未定义书签。

列车时刻表信息管理系统实践报告C语言源代码

列车时刻表信息管理系统实践报告C语言源代码

printf("********************************************************************* ***********\n"); printf(" 请选择要执行的操作: \n");/* 菜单程序,用于各种功能的选择 */ } struct train/* 定义结构体 */{char name[8];char checi[6];int year;int month; int day; int hour;int minute;}lieche[N];/* 定义一个结构体数组 */ void paixu(struct train *p);/* 函数声明 */void chaxun(struct train *p)/* 子程序,其功能是查询列车 */ {paixu(lieche);/* 先排序一下,方便查看 */ char a[8];/* 定义一个字符数组,输入要查询的列车 int k=0,i,c;printf(" 请输入要查询的列车 :\n"); scanf("%s",a);for(i=0;i<N;i++) #include"stdio.h"#include"stdlib.h" #include"string.h"/* 定义头文件,处理文件及字符数组时要用到相应功能 #define N 10 void fmenu() { system("cls"); printf("************************v1.20*****************\n");%c1. 查询列车 */欢迎使用苏州列车时刻表信息管理系统printf("\t\t\t\tprintf("\n");printf("\t\t\t\t printf("\n"); printf("\t\t\t\t printf("\n"); printf("\t\t\t\tprintf("\n"); printf("\t\t\t\t printf("\n"); printf("\t\t\t\t%c2. 修改列车 %c3. 增加列车 %c4. 取消列车 %c5. 保存信息 \n",3); \n",3); \n",3);\n",3);\n",3);%c0. 退出 \n",3); */{if(strcmp(p[i].name,a)==0){printf(" 苏州—%s\t%s( 车次 )\t%d 年 %d\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute) ;/* 车的信息全部打出 */k++;}}if(k==0)printf(" 抱歉,没有这趟列车 \n");/* 没有查到时,打出通知 */ printf(" 按 1 继续,按 0 退出 \n");/* 选择继续或者退出 */ scanf("%d",&c);if(c!=0)chaxun(lieche);}void xiugai(struct train *p)/* 子程序,用于修改列车时间 */{char a[8],b[6];int i,x,c,k=0,h,mi,y,m,d,q;printf(" 请输入要修改的列车 :\n");scanf("%s",a);for(i=0;i<N;i++){if(strcmp(p[i].name,a)==0){printf(" 苏州—%s\t%s() 车次 \t%d 年 %d\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute) ;printf(”要修改这趟列车吗?\n1.是0.否\n");scanf("%d",&q); if(q==1){printf(" 请输入修改后的车次 :\n"); scanf("%s",b);printf(" 请输入修改后的年月日 :\n"); scanf("%d%d%d",&y,&m,&d); scanf("%d%d",&h,&mi);printf("确定修改吗?\n1.是2.否\n");/*选择是否确定修改列车时间,防止错误操作 */scan f("%d", &x);if(x==1){strcpy(p[i].checi,b);p[i].year=y;%d 日将所查列%d 日p[i].month=m; p[i].day=d; p[i].hour=h; p[i].minute=mi;printf(" 已经修改此列车 ");}}k++;}} if(k==0)printf(" 抱歉,没有这趟列车 \n");/* 没有查到时,打出通知 */ printf(" 按 1 继续,按 scanf("%d",&c); if(c!=0)xiugai(lieche);printf(" 请输入要增加的列车目的地 scanf("%s",);printf(" 请输入修改后的车次 :\n");scanf("%s",a.checi);printf(" 请输入所增加列车的年月日 scanf("%d%d%d",&a.year,&a.month,&a.day);printf(" 请输入所增加列车的小时和分钟 :\n");scanf("%d%d",&a.hour,&a.minute);printf (”确定要增加这一趟列车吗? \n1.是0.否\n");scanf("%d",&x);if(x==1) for(i=0;i<N-1;i++){if(strcmp(p[i].name,b)==0){strcpy(p[i].name,); strcpy(p[i].checi,a.checi);p[i].year=a.year;p[i].month=a.month; p[i].day=a.day; p[i].hour=a.hour;p[i].minute=a.minute;0 退出 \n");}void zengjia(struct train*p)/*{struct train a;charb[]={"0000000"};/*子程序,用于列车增加 */ 空白位置, 在此处插入所填列车 */:\n");:\n");strcpy(p[i+1].name,b);/* 找到位置, 插入列车, 并把 0000000 给后面一个结构体printf(" 已经增加这趟列车 "); break; } paixu(lieche); printf(" 按 1 继续,按 0 退出 \n"); scanf("%d",&c);if(c!=0) zengjia(lieche);paixu(struct train *p)/* 子程序,用于同名列车时刻排序 */ int i,x;char a[6];for(i=0;i<N;i++){if(strcmp(p[i].name,p[i+1].name)==0)/* 先找到相同名字的列车 */ {if(p[i].year>p[i+1].year)// 根据年份排序 {strcpy(a,p[i].checi);strcpy(p[i].checi,p[i+1].checi);strcpy(p[i+1].checi,p[i].checi); x=p[i].year;p[i].year=p[i+1].year;p[i+1].year=x;x=p[i].month;p[i].month=p[i+1].month;p[i+1].month=x;x=p[i].day;p[i].day=p[i+1].day;p[i+1].day=x;x=p[i].hour;p[i].hour=p[i+1].hour;p[i+1].hour=x;x=p[i].minute;p[i].minute=p[i+1].minute;p[i+1].minute=x;}else if(p[i].year==p[i+1].year)*/} void{{if(p[i].month>p[i+1].month)// 相同年数,根据月份排序。

游程编码实验报告

游程编码实验报告
% 下面程序是游程编码解压
l=1;
for m=1:image4length
for n=1:1:image4(m);
rec_image(l)=data(m);
l=l+1;
end
end
u=1:1:length(rec_image); % 查看解压后的图像数据
figure,plot(u,rec_image(u));
3、游程编码算法
一般游程编码有两种算法,一种是使用1的起始位置和1的游程长度,另一种是只使用游程长度,如果第一个编码值为0,则表示游程长度编码是从0像素的长度开始。这次实验采用的是前一种算法。两种方法各有优缺点:前一种存储比第二种困难,因此编程也比较复杂。而后一种需要知道第一个像素值,故压缩编码算法中需给出所读出的图的第一个像素值。
三、仿真方案详细设计
实验过程分为四步:分别是读入一副图象,将它转换成为二进制灰度图像,然后对其进行游程编码和压缩,最后恢复图象(只能恢复为二值图像)。
1、二值转换
所谓二值图像,就是指图像上的所有像素点的灰度值只用两种可能,不为“0”就为“1”,也就是整个图像呈现出明显的黑白效果。
2、游程编码原理
游程编码是一种无损压缩编码,对于二值图有效。游程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。游程编码分为定长行程编码和不定长行程编码两种类型。游程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。
image4length=length(image4); % 统计游程编码后的所占字节长度

旅游管理系统c语言编程实验报告

旅游管理系统c语言编程实验报告

旅游管理系统c语言编程实验报告这篇实验报告将介绍关于旅游管理系统用C语言编程的实验过程与成果。

旅游管理系统是一个旨在帮助旅游行业提高管理效率的软件应用程序,主要功能包括旅游订单管理、景点信息查询、客户信息管理等。

下面将详细介绍该项目的实验目的、原理、实验步骤、实验结果与总结。

实验目的:1.了解C语言的基本知识,掌握C语言编译和执行流程;2.掌握文件I/O函数和字符串处理函数等相关知识;3.了解软件开发流程,学习代码调试与优化。

原理:本次实验以C语言作为开发语言。

根据项目需求,开发软件主要功能包括旅游订单管理、景点信息查询、客户信息管理等。

实验步骤:1.根据项目需求,分析数据结构与算法,设计程序框架;2.编写代码实现主要功能,包括旅游订单管理、景点信息查询、客户信息管理等;3.通过调试,发现程序中的错误,并优化代码,使其更加稳定和可靠;4.编写测试用例,对程序进行测试,发现并解决问题;5.编写实验报告,记录实验过程和实验结果。

实验结果:通过C语言编程实现了旅游管理系统,其主要功能包括旅游订单管理、景点信息查询、客户信息管理等。

程序运行稳定,具有较高的可靠性。

同时,程序的开发也提高了软件开发的能力,对数据结构、算法等方面也有了更深入的理解。

总结:通过本次实验,对软件开发流程和C语言编程有了更深入的认识。

同时,也了解了旅游管理系统的基本功能和开发过程。

通过实验,提高了编程能力,也发现了自己还需不断进步的地方。

在今后的学习中,会更加专注于C语言编程的学习和实践,不断提升自己的技术水平。

游程编码实验报告

游程编码实验报告

游程编码实验报告游程编码实验报告引言:游程编码是一种常用的数据压缩算法,通过统计连续重复的字符出现的次数,将其转化为一个字符和其重复次数的组合,从而实现对数据的高效压缩。

本实验旨在通过实际操作和数据分析,深入理解游程编码的原理和应用。

实验目的:1. 掌握游程编码的基本原理和算法;2. 了解游程编码在数据压缩中的应用;3. 分析游程编码的优缺点及适用范围。

实验步骤:1. 实验准备:a. 准备一段文本数据,长度不少于1000个字符;b. 编写游程编码的实现代码。

2. 游程编码实现:a. 将文本数据输入到游程编码算法中;b. 统计连续重复字符的次数,并将其转化为字符和重复次数的组合;c. 将游程编码后的数据输出。

3. 数据分析:a. 比较游程编码前后数据的大小,计算压缩率;b. 统计游程编码后的数据中字符的平均重复次数;c. 分析游程编码在不同类型数据上的效果差异。

实验结果与分析:通过实验,我们得到了以下结果和分析:1. 游程编码前后数据大小比较:在我们的实验中,游程编码后的数据大小相对于原始数据大大减小。

这是因为游程编码将连续重复的字符转化为字符和重复次数的组合,从而减少了数据的冗余性。

通过计算压缩率,我们可以得知游程编码的压缩效果。

2. 压缩率计算:压缩率是衡量数据压缩效果的重要指标。

通过实验数据的分析,我们可以计算出游程编码的压缩率。

压缩率的计算公式为:压缩率 = (压缩后数据大小 / 原始数据大小)* 100%。

根据实验结果,我们可以进行压缩率的比较和评估。

3. 字符的平均重复次数:游程编码将连续重复的字符转化为字符和重复次数的组合。

通过统计游程编码后的数据中字符的平均重复次数,我们可以了解到数据中的重复性程度。

这对于数据的分析和应用具有一定的参考价值。

4. 游程编码在不同类型数据上的效果差异:游程编码的效果受到数据的特点和分布的影响。

在实验中,我们可以尝试不同类型的数据,比如文本数据、图像数据等,来分析游程编码在不同类型数据上的效果差异。

C语言程序设计报告(航班)

C语言程序设计报告(航班)
起始界面
输入航班信息
查询航班界面
订票系统
2.数据结构
先定义全局变量: int n=0,m=0,c;//定义全局变量 n 为航班数,m 为乘客数,c 则是常用变量 结构体: struct plane//定义航班结构体
{
int airnum;//航班号 int maxsize;//最大载客数 char start[20];//起飞地点 char time1[20];//起飞时间 char end[20];//降落地点 char time2[20];//降落时间 float price;//票价
2. 结束语 能够完成这次课程设计必须感谢 C 语言课程老师陈黎静、宋戈,还有同学的帮助。
参考文献
1、谭浩强 《C 程序设计》(第四版) 清华大学出版社 2、Greg Perry 《Absolute Beginner’s Guide To C》 第二版 Sams 3、: [美]普拉塔(Prata,S.) 《C Primer plus》 第 5 版 人民邮电出版社
printf("\n\t\t\t 订票成功!您的个人信息已保存.\n"); fwrite(&m,sizeof(int),1,fp); pas[m-1]=a;//将乘客信息放在结构体数组 pas[m-1]中 pas[m-1].seat=rand()%fly[l].maxsize+1; fly[l].maxsize=fly[l].maxsize-b;//修改剩余票数
{ l=i;//将对应航线的位置 i 赋值给 l break;
} }
if(l==-1) { printf("\n\t\t\t 该航班不存在!\n"); } else if(b>fly[l].maxsize)//判断票是否售完 {

游程编码实验报告

游程编码实验报告

一、实验目的1. 理解行程编码的基本原理和算法。

2. 掌握行程编码在数据压缩中的应用。

3. 通过实际操作,提高对行程编码算法的实践能力。

二、实验原理行程编码(Run-Length Encoding,RLE)是一种无损失的数据压缩算法。

它通过记录连续相同数据出现的次数来减少数据量。

行程编码的基本原理是将输入数据序列中连续相同的元素用一个元素和其出现次数表示,从而实现数据压缩。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:NumPy、Pandas四、实验步骤1. 数据准备:准备一段待压缩的数据,可以是任意格式的文本或二进制数据。

2. 行程编码实现:- 定义一个函数,用于实现行程编码算法。

- 遍历输入数据,记录连续相同元素的个数。

- 将连续相同元素用一个元素和其出现次数表示。

- 返回编码后的数据。

3. 解码实现:- 定义一个函数,用于实现行程解码算法。

- 遍历编码后的数据,根据元素和出现次数还原原始数据。

- 返回解码后的数据。

4. 性能测试:- 对编码后的数据进行解码,验证编码的正确性。

- 计算编码前后的数据量,评估行程编码的压缩效果。

五、实验结果与分析1. 数据准备:以一段文本数据为例,内容为“AAAABBBCCDAA”。

2. 行程编码实现:```pythondef run_length_encode(data):encoding = []count = 1for i in range(1, len(data)):if data[i] == data[i-1]:count += 1else:encoding.append(data[i-1] + str(count)) count = 1encoding.append(data[-1] + str(count))return ''.join(encoding)encoded_data = run_length_encode("AAAABBBCCDAA")print("Encoded data:", encoded_data)```输出:`Encoded data: A4B3C2D1A2`3. 解码实现:```pythondef run_length_decode(encoded_data):decoded_data = []for i in range(0, len(encoded_data), 2):char = encoded_data[i]count = int(encoded_data[i+1])decoded_data.extend([char] count)return ''.join(decoded_data)decoded_data = run_length_decode(encoded_data)print("Decoded data:", decoded_data)```输出:`Decoded data: AAAABBBCCDAA`4. 性能测试:- 编码前数据量:13字节- 编码后数据量:8字节- 压缩比:13 / 8 = 1.625六、实验结论1. 行程编码是一种有效的数据压缩算法,能够显著减少数据量。

C语言程序设计实验报告范文c语言程序设计实验报告书

C语言程序设计实验报告范文c语言程序设计实验报告书

C语言程序设计实验报告范文c语言程序设计实验报告书c语言程序设计实验报告篇一一、实验目的:1、掌握C语言的`数据类型和变量的声明。

2、掌握不同类型数据之间赋值的规律。

3、掌握C语言的运算符和表达式的使用。

4、熟悉C程序的编辑、编译、连接和运行的过程。

二、实验内容:①输人程序: includevoid main() { int a, b; float d,e; charc1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000;p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); }②运行此程序并分析结果按习题4. 8要求编写程序题目为: 设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。

程序:三、实验步骤:①输人程序:includevoid main() { int a, b; float d,e; char c1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%dc1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); }②运行此程序并分析结果。

编码实训报告

编码实训报告

一、实训背景随着信息技术的飞速发展,编程能力已成为现代社会不可或缺的基本技能之一。

为了提高我国大学生的编程水平,培养适应时代需求的创新型人才,我国高校普遍开展了编码实训课程。

本报告旨在总结我在编码实训过程中的学习成果、心得体会以及遇到的问题和解决方法。

二、实训目标1. 掌握一门编程语言的基本语法和常用数据结构;2. 能够运用编程语言解决实际问题;3. 提高团队协作能力和沟通能力;4. 培养良好的编程习惯和解决问题的能力。

三、实训内容1. 编程语言:Java2. 实训项目:学生信息管理系统四、实训过程1. 学习阶段在实训开始前,我对Java语言进行了自学,包括基本语法、常用数据结构等。

通过查阅资料、观看视频教程等方式,逐步掌握了Java编程的基本知识。

2. 实训阶段(1)需求分析首先,我对学生信息管理系统的需求进行了分析,明确了系统需要实现的功能,如添加、删除、修改、查询学生信息等。

(2)系统设计根据需求分析,我设计了系统的整体架构,包括数据层、业务逻辑层和表示层。

同时,我选择了MySQL数据库作为数据存储,并设计了相应的数据库表结构。

(3)编码实现在编码实现阶段,我遵循以下步骤:① 数据库连接与操作:通过JDBC连接MySQL数据库,实现数据的增删改查操作。

② 业务逻辑层实现:编写Java类,封装业务逻辑,如添加学生信息、删除学生信息等。

③ 表示层实现:使用Java Swing框架设计用户界面,实现与用户的交互。

(4)调试与优化在编码过程中,我遇到了一些问题,如数据库连接失败、界面布局不正确等。

通过查阅资料、请教老师和同学,逐步解决了这些问题。

同时,我还对代码进行了优化,提高了系统的运行效率。

3. 团队协作与沟通在实训过程中,我与团队成员进行了密切的沟通和协作。

我们共同讨论需求、设计系统架构、分配任务、编写代码等。

在遇到问题时,我们互相帮助、共同解决,提高了团队的整体能力。

五、实训成果1. 完成了学生信息管理系统的设计与实现;2. 掌握了Java编程语言的基本语法和常用数据结构;3. 提高了团队协作能力和沟通能力;4. 培养了良好的编程习惯和解决问题的能力。

rle算法,c语言实现 -回复

rle算法,c语言实现 -回复

rle算法,c语言实现-回复RLE算法(Run-Length Encoding),又称为行程长度编码,是一种简单有效的无损数据压缩算法。

其基本原理是通过记录相同连续出现的字符的个数来减少重复数据的存储。

这种算法在数据中存在大量连续相同字符的情况下能够取得较好的压缩效果。

在本文中,我们将使用C语言来实现RLE算法,并详细解释其实现过程。

首先,我们需要定义一个函数来实现RLE算法的编码。

在编码中,我们将检查字符串中的相邻字符是否相同。

如果相同,则我们将计数器加1。

如果不同,则我们将当前字符和计数器的值一起写入输出字符串,并将计数器重置为1。

代码如下:c#include <stdio.h>#include <string.h>void RLE_Encode(char* input, char* output) {int count = 1;int len = strlen(input);for (int i = 0; i < len; i++) {if (input[i] == input[i+1]) {count++;}else {sprintf(output, "cd", input[i], count);output += (arr_len + 1);count = 1;}}*output = '\0';}在这段代码中,我们使用`sprintf()`函数来将字符和计数器的值存储在输出字符串中。

`sprintf()`函数的第一个参数是输出字符串的指针,第二个参数是格式化字符串,其中`c`表示一个字符,`d`表示一个整数。

`output += (arr_len + 1)`是将输出字符串的指针移动到下一个位置。

接下来,我们需要定义一个函数来实现RLE算法的解码。

在解码中,我们将检查字符串中的每一个字符。

如果遇到一个数字字符,则我们将它转换为整数,并在输出字符串中重复前面的字符相应次数。

行编程程序实验报告

行编程程序实验报告

实验名称:行编程程序设计实验实验日期:2023年X月X日实验地点:计算机实验室实验指导教师:XXX实验学生:XXX一、实验目的1. 了解行编程的基本概念和原理。

2. 掌握行编程程序的设计方法。

3. 提高编程实践能力,培养逻辑思维和问题解决能力。

二、实验内容本次实验主要涉及以下内容:1. 行编程的基本概念和原理。

2. 行编程程序的设计方法。

3. 实现一个简单的行编程程序。

三、实验原理行编程(Procedural Programming),又称过程式编程,是一种以过程(函数、子程序)为基本单位的编程范式。

它强调算法的顺序执行,将程序分解为一系列有序的步骤,每个步骤负责完成特定的功能。

行编程程序通常包括变量、数据结构、控制结构(如循环、条件判断)和函数等基本组成部分。

四、实验步骤1. 熟悉行编程的基本概念和原理。

2. 设计一个简单的行编程程序,实现以下功能:(1)接收用户输入的整数序列。

(2)计算序列中所有整数的平均值。

(3)输出平均值。

具体步骤如下:(1)创建一个新的行编程项目,并设置相应的项目属性。

(2)编写代码实现以下功能:```python# 定义一个函数,用于计算平均值def calculate_average(numbers):total = 0for number in numbers:total += numberaverage = total / len(numbers)return average# 获取用户输入的整数序列input_sequence = input("请输入一个整数序列,用逗号分隔:") numbers = [int(x) for x in input_sequence.split(",")]# 调用函数计算平均值average_value = calculate_average(numbers)# 输出平均值print("平均值:", average_value)```(3)编译并运行程序,验证程序功能。

行程长度编码

行程长度编码

行程长度编码
行程长度编码(Trip Length Encoding)是一种数据压缩算法,
以便在只有有限字节可用时能够最有效地传输数据。

它的原理是将相
同的数字用更少的字节数表示,从而缩短行程长度。

行程长度编码的基本原理是通过查找一组数字的重复,然后跳过
重复的数字,以节省字节。

例如,若要传输数字序列 1, 2, 2, 3, 3, 3,可以在传输中跨过重复的数字,只需要写出“1, 2, (2), 3, (3)”这样的简短信息即可。

根据跳过时有多少重复的数字,可以将其视为
一个字节以将其表示成较小的序列,从而缩短行程长度。

此外,行程长度编码还可以将更长的数字序列以更短的字节序列
表示,从而实现更高效的传输。

传输数据时,可以将多个数字合并为
一个数字,然后压缩字节数。

行程长度编码常用于标准压缩,视频传输,网络数据库管理和实
时视频流传输等。

其技术实现由多个组成,如编码,层次和块编码,
流量控制,前向编码,熵编码和视频编码等等。

总的来说,行程长度编码是一种数据压缩技术,它可以高效地通
过有限的字节数传输大量数据。

它可以为压缩技术提供有利的性能,
既改善网络数据传输性能,又节省存储空间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;a[i]!='\0';i++)
{
if(a[i]==a[i+1]) jishu++;
else
{
yasuo[j+1]=jishu+48;
j=j+2;
yasuo[j]=a[i+1];
jishu=1;
}
}
yasuo[j]='\0';
cout<<"压缩后为:"<<endl<<yasuo<<endl;
#include<iostream>
using namespace std;
char a[100];
char yasuo[100];
char jieya[100];
void main()
{
cout<<"请输入行程编码:"<<endl;
cin>>a;
int i= bz=0;
for(i=0;yasuo[i]!='\0';i=i+2)
{
jieya[bz]=yasuo[i];
for(j=bz,jishu=1;/*a[i]!='\0';*/jishu<=yasuo[i+1]-48;jishu++,j++)
jieya[j]=yasuo[i];
bz=j;
}
jieya[bz]='\0';
cout<<"解压后为:"<<endl<<jieya<<endl;
}
三、实验结果:
多媒体技术实验报告
行程编码
一、实验内容:
行程编码又称“运行长度编码”或“游程编码”,是一种统计编码,该编码属于无损压缩编码。
行程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”。行程编码因此而得名),使符号长度少于原始数据的长度。
编写模拟行程编码。
二、程序:
相关文档
最新文档