上机实验题
- 格式:pdf
- 大小:65.50 KB
- 文档页数:1
华南农业大学C语言实验上机实验第四版参考答案c语言程序设计上机实验指导与习题参考答案(第四版)实验1c语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个c程序。
(3)通过运行简单的c程序,初步了解c程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个c程序[题目:thefirstcprogram]将下列程序输入visualc++,编译、连接和运行该程序。
#include\main(){printf(\}[具体操作步骤](1)在编辑窗口中输出程序。
(2)留存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
(4)按照第三章了解的方法,将代码递交至在线评判系统,系统回到“通过”,则该题顺利完成。
2.在在线评判系统中提交实现了计算a+b功能的程序[题目1001:排序a+b]由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,#include\main(){inta,b;scanf(\printf(\}(1)在程序编辑窗口中输出程序。
(2)留存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入1530l(l则表示输出回车符)(5)如果看到如下输出结果,则表明15+30的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中了解的方法步入在线评判系统。
(7)显示题目列表,点击题号为1001,题名为“计算a+b”的题目。
(8)查阅回去题目建议后,页面页面下端的“sumbit”,参考第二章递交程序的方法递交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
3实验2基本数据类型、运算和表达式一、实验目的(1)掌握c语言数据类型,熟悉如何定义一个整型和实型的变量,以及对它们赋值的方法。
1. 下列程序中,要求main函数实现如下功能:从键盘上输入三个正整数,求出它们中的最大值。
请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果。
#in elude <stdio.h>void mai n(){ int a,b,c,max;prin tf("E nter three in tegers:");scan f("%d%d%d", &a, &b,&c);if(a>b)max=a;elsemax=bif(c>max)max=c;printf("max of the three nu mbers is %d",max);} /*1,2,5 max of the three nu mbers is 5*/2. 请编程序,对从键盘上输入的x值,根据以下函数关系计算出相应的y值(设x,y均为整型量)。
#in clude<stdio.h>main (){int x,y;scan f("%d",& x);if(x<0)y=0;elseif(x>=0&& x<=10)y=x;elseif(x>=10&& x<=20) y=10;elsey=-5*x+20; prin tf("%d",y);}1)1 23 4/53. 写程序计算下列各表达式的值:[ 2 22)13-(2.24-0.24 ) 耳3683) 2恵:;13 e2#in clude<stdio.h>#in clude<math.h>main () {float a,b,c;a=2.0/(4.0/5+3)+1;b=sqrt((13-pow(2.24-pow(0.24,2),2))/3.68);c=2*3.14159*sqrt(13+ exp(2));prin tf("%f\n%f\n%f',a,b,c);}4. 写程序计算5X2+2X+6的两个实根。
第1章计算机与信息表示基础习题一、选择题1.目前使用的计算机采用( )为主要电子元器件。
A. 电子管B. 晶体管C. 中小规模集成电路D. 超大规模集成电路2.个人计算机(PC)属于( )类型。
A. 大型计算机B. 微型计算机C. 小型机D. 超级计算机3.目前计算机最具有代表性的应用领域有科学计算、数据处理、实时控制和( )。
A. 文字处理B. 辅助设计C. 办公自动化D. 操作系统4.一般用高级语言编写的程序称为( ),这种程序不能直接在计算机中运行,需要相应的语言处理程序将之翻译成机器语言程序后,才能运行。
A. 用户程序B. 源程序C. 汇编程序D. 目标程序5.系统软件的核心是( ),它用于管理和控制计算机的软、硬件资源。
A. 语言处理程序B. 数据库管理系统C. 应用软件系统D. 操作系统6.运用计算机进行导弹轨道计算,是计算机在( )方面的应用.A. 数值计算B. 信息处理C. 自动控制D. 人工智能7.将十进制数89转换为二进制数,其值是()。
A. B. C. D.8.在计算机内部,一切信息的存取、处理和传送都是以()进行的。
A.ASCII码 B.二进制 C.十六进制 D.EBCDIC码9.计算机能够直接识别和执行的语言是()。
A.汇编语言B.高级语言C.英语D.机器语言10.计算机中存储数据的最小单位是()。
A.字节B.位C.字D.KB11.在国内流行的汉字系统中,一个汉字的机内码占()个字节。
A.1 B.2 C.3 D.412.在存储一个汉字内码的两个字节中,每个字节的最高位是()。
A.1 和1 B.1 和0 C.0 和1 D.0 和013.按16 × 16 点阵存放国标GB2312-80中一级汉字( 共3755个) 的汉字库,大约需占存储空间()。
A.1MB B.512KB C.256KB D.128KB14.计算机辅助教学简称()。
A.CAD B.CAM C.CMI D.CAI15.计算机辅助设计的英文缩写是()。
20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
目录第1章绪论——上机实验题1解析实验题1.1求素数实验题1.2求一个正整数的各位数字之和实验题1.3求一个字符串是否为回文第2章线性表——上机实验题2解析实验题2.1实现顺序表各种基本运算的算法/*文件名:algo2-1.cpp*/#include <stdio.h>#include <malloc.h>#define MaxSize 50typedef char ElemType;typedef struct{ElemType elem[MaxSize];int length;} SqList;void InitList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));L->length=0;}void DestroyList(SqList *L){free(L);}int ListEmpty(SqList *L){return(L->length==0);}int ListLength(SqList *L){return(L->length);}void DispList(SqList *L){int i;if (ListEmpty(L)) return;for (i=0;i<L->length;i++)printf("%c",L->elem[i]);printf("\n");}int GetElem(SqList *L,int i,ElemType &e){if (i<1 || i>L->length)return 0;e=L->elem[i-1];return 1;}int LocateElem(SqList *L, ElemType e){int i=0;while (i<L->length && L->elem[i]!=e) i++;if (i>=L->length)return 0;elsereturn i+1;}int ListInsert(SqList *&L,int i,ElemType e){int j;if (i<1 || i>L->length+1)return 0;i--; /*将顺序表位序转化为elem下标*/for (j=L->length;j>i;j--) /*将elem[i]及后面元素后移一个位置*/L->elem[j]=L->elem[j-1];L->elem[i]=e;L->length++; /*顺序表长度增1*/return 1;}int ListDelete(SqList *&L,int i,ElemType &e){int j;if (i<1 || i>L->length)return 0;i--; /*将顺序表位序转化为elem下标*/e=L->elem[i];for (j=i;j<L->length-1;j++)L->elem[j]=L->elem[j+1];L->length--;return 1;}实验题2.2实现单链表各种基本运算的算法*文件名:algo2-2.cpp*/#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct LNode /*定义单链表结点类型*/{ElemType data;struct LNode *next;} LinkList;void InitList(LinkList *&L){L=(LinkList *)malloc(sizeof(LinkList)); /*创建头结点*/L->next=NULL;}void DestroyList(LinkList *&L){LinkList *p=L,*q=p->next;while (q!=NULL){free(p);p=q;q=p->next;}free(p);}int ListEmpty(LinkList *L){return(L->next==NULL);}int ListLength(LinkList *L){LinkList *p=L;int i=0;while (p->next!=NULL){i++;p=p->next;}return(i);}void DispList(LinkList *L){LinkList *p=L->next;while (p!=NULL){printf("%c",p->data);p=p->next;}printf("\n");}int GetElem(LinkList *L,int i,ElemType &e) {int j=0;LinkList *p=L;while (j<i && p!=NULL){j++;p=p->next;}if (p==NULL)return 0;else{e=p->data;return 1;}}int LocateElem(LinkList *L,ElemType e){LinkList *p=L->next;int n=1;while (p!=NULL && p->data!=e){p=p->next;n++;}if (p==NULL)return(0);elsereturn(n);}int ListInsert(LinkList *&L,int i,ElemType e)int j=0;LinkList *p=L,*s;while (j<i-1 && p!=NULL){j++;p=p->next;}if (p==NULL) /*未找到第i-1个结点*/return 0;else /*找到第i-1个结点*p*/{s=(LinkList *)malloc(sizeof(LinkList)); /*创建新结点*s*/s->data=e;s->next=p->next; /*将*s插p->next=s;return 1;}}int ListDelete(LinkList *&L,int i,ElemType &e){int j=0;LinkList *p=L,*q;while (j<i-1 && p!=NULL){j++;p=p->next;}if (p==NULL) /*未找到第i-1个结点*/return 0;else /*找到第i-1个结点*p*/{q=p->next; /*q指向要删除的结点*/p->next=q->next; /*从单链表中删除*q结点*/free(q); /*释放*q结点*/return 1;}}第3章栈和队列——上机实验题3解析实验题3.1实现顺序栈各种基本运算的算法*文件名:algo3-1.cpp*/#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct{ElemType elem[MaxSize];int top; /*栈指针*/} SqStack;void InitStack(SqStack *&s){s=(SqStack *)malloc(sizeof(SqStack));s->top=-1;}void ClearStack(SqStack *&s){free(s);}int StackLength(SqStack *s){return(s->top+1);}int StackEmpty(SqStack *s){return(s->top==-1);}int Push(SqStack *&s,ElemType e){if (s->top==MaxSize-1)return 0;s->top++;s->elem[s->top]=e;return 1;}int Pop(SqStack *&s,ElemType &e){if (s->top==-1)return 0;e=s->elem[s->top];s->top--;return 1;int GetTop(SqStack *s,ElemType &e){if (s->top==-1)return 0;e=s->elem[s->top];return 1;}void DispStack(SqStack *s){int i;for (i=s->top;i>=0;i--)printf("%c ",s->elem[i]);printf("\n");}实验题3.2实现链栈各种基本运算的算法/*文件名:algo3-2.cpp*/#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct linknode{ElemType data; /*数据域*/struct linknode *next; /*指针域*/} LiStack;void InitStack(LiStack *&s){s=(LiStack *)malloc(sizeof(LiStack));s->next=NULL;}void ClearStack(LiStack *&s){LiStack *p=s->next;while (p!=NULL){free(s);s=p;p=p->next;}}int StackLength(LiStack *s){int i=0;LiStack *p;p=s->next;while (p!=NULL){i++;p=p->next;}return(i);}int StackEmpty(LiStack *s){return(s->next==NULL);}void Push(LiStack *&s,ElemType e){LiStack *p;p=(LiStack *)malloc(sizeof(LiStack));p->data=e;p->next=s->next; /*插入*p结点作为第一个数据结点*/s->next=p;}int Pop(LiStack *&s,ElemType &e){LiStack *p;if (s->next==NULL) /*栈空的情况*/return 0;p=s->next; /*p指向第一个数据结点*/e=p->data;s->next=p->next;free(p);return 1;}int GetTop(LiStack *s,ElemType &e){if (s->next==NULL) /*栈空的情况*/return 0;e=s->next->data;return 1;}void DispStack(LiStack *s){LiStack *p=s->next;while (p!=NULL){printf("%c ",p->data);p=p->next;}printf("\n");}实验题3.3实现顺序队列各种基本运算的算法/*文件名:algo3-3.cpp*/#include <stdio.h>#include <malloc.h>#define MaxSize 5typedef char ElemType;typedef struct{ElemType elem[MaxSize];int front,rear; /*队首和队尾指针*/} SqQueue;void InitQueue(SqQueue *&q){q=(SqQueue *)malloc (sizeof(SqQueue));q->front=q->rear=0;}void ClearQueue(SqQueue *&q){free(q);}int QueueEmpty(SqQueue *q){return(q->front==q->rear);}int QueueLength(SqQueue *q){return (q->rear-q->front+MaxSize)%MaxSize; }int enQueue(SqQueue *&q,ElemType e){if ((q->rear+1)%MaxSize==q->front) /*队满*/return 0;q->rear=(q->rear+1)%MaxSize;q->elem[q->rear]=e;return 1;}int deQueue(SqQueue *&q,ElemType &e){if (q->front==q->rear) /*队空*/return 0;q->front=(q->front+1)%MaxSize;e=q->elem[q->front];return 1;}实验题3.4实现链队各种基本运算的算法/*文件名:algo3-4.cpp*/#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct qnode{ElemType data;struct qnode *next;} QNode;typedef struct{QNode *front;QNode *rear;} LiQueue;void InitQueue(LiQueue *&q){q=(LiQueue *)malloc(sizeof(LiQueue));q->front=q->rear=NULL;}void ClearQueue(LiQueue *&q){QNode *p=q->front,*r;if (p!=NULL) /*释放数据结点占用空间*/{r=p->next;while (r!=NULL){free(p);p=r;r=p->next;}}free(q); /*释放头结点占用空间*/ }int QueueLength(LiQueue *q){int n=0;QNode *p=q->front;while (p!=NULL){n++;p=p->next;}return(n);}int QueueEmpty(LiQueue *q){if (q->rear==NULL)return 1;elsereturn 0;}void enQueue(LiQueue *&q,ElemType e){QNode *s;s=(QNode *)malloc(sizeof(QNode));s->data=e;s->next=NULL;if (q->rear==NULL) /*若链队为空,则新结点是队首结点又是队尾结点*/q->front=q->rear=s;else{q->rear->next=s; /*将*s结点链到队尾,rear指向它*/q->rear=s;}}int deQueue(LiQueue *&q,ElemType &e){QNode *t;if (q->rear==NULL) /*队列为空*/return 0;if (q->front==q->rear) /*队列中只有一个结点时*/{t=q->front;q->front=q->rear=NULL;}else /*队列中有多个结点时*/{t=q->front;q->front=q->front->next;}e=t->data;free(t);return 1;}第4章串——上机实验题4解析实验题4.1实现顺序串各种基本运算的算法/*文件名:algo4-1.cpp*/#include <stdio.h>#define MaxSize 100 /*最多的字符个数*/typedef struct{ char ch[MaxSize]; /*定义可容纳MaxSize个字符的空间*/ int len; /*标记当前实际串长*/} SqString;void StrAssign(SqString &str,char cstr[]) /*str为引用型参数*/ {int i;for (i=0;cstr[i]!='\0';i++)str.ch[i]=cstr[i];str.len=i;}void StrCopy(SqString &s,SqString t) /*s为引用型参数*/ {int i;for (i=0;i<t.len;i++)s.ch[i]=t.ch[i];s.len=t.len;}int StrEqual(SqString s,SqString t){int same=1,i;if (s.len!=t.len) /*长度不相等时返回0*/same=0;else{for (i=0;i<s.len;i++)if (s.ch[i]!=t.ch[i]) /*有一个对应字符不相同时返回0*/same=0;}return same;}int StrLength(SqString s){return s.len;}SqString Concat(SqString s,SqString t){SqString str;int i;str.len=s.len+t.len;for (i=0;i<s.len;i++) /*将s.ch[0]~s.ch[s.len-1]复制到str*/ str.ch[i]=s.ch[i];for (i=0;i<t.len;i++) /*将t.ch[0]~t.ch[t.len-1]复制到str*/ str.ch[s.len+i]=t.ch[i];return str;}SqString SubStr(SqString s,int i,int j){SqString str;int k;str.len=0;if (i<=0 || i>s.len || j<0 || i+j-1>s.len){printf("参数不正确\n");return str; /*参数不正确时返回空串*/}for (k=i-1;k<i+j-1;k++) /*将s.ch[i]~s.ch[i+j]复制到str*/str.ch[k-i+1]=s.ch[k];str.len=j;return str;}SqString InsStr(SqString s1,int i,SqString s2){int j;SqString str;str.len=0;if (i<=0 || i>s1.len+1) /*参数不正确时返回空串*/{printf("参数不正确\n");return s1;}for (j=0;j<i-1;j++) /*将s1.ch[0]~s1.ch[i-2]复制到str*/str.ch[j]=s1.ch[j];for (j=0;j<s2.len;j++) /*将s2.ch[0]~s2.ch[s2.len-1]复制到str*/str.ch[i+j-1]=s2.ch[j];for (j=i-1;j<s1.len;j++) /*将s1.ch[i-1]~s.ch[s1.len-1]复制到str*/str.ch[s2.len+j]=s1.ch[j];str.len=s1.len+s2.len;return str;}SqString DelStr(SqString s,int i,int j){int k;SqString str;str.len=0;if (i<=0 || i>s.len || i+j>s.len+1) /*参数不正确时返回空串*/{printf("参数不正确\n");return str;}for (k=0;k<i-1;k++) /*将s.ch[0]~s.ch[i-2]复制到str*/str.ch[k]=s.ch[k];for (k=i+j-1;k<s.len;k++)/*将s.ch[i+j-1]~ch[s.len-1]复制到str*/ str.ch[k-j]=s.ch[k];str.len=s.len-j;return str;}SqString RepStr(SqString s,int i,int j,SqString t){int k;SqString str;str.len=0;if (i<=0 || i>s.len || i+j-1>s.len) /*参数不正确时返回空串*/ {printf("参数不正确\n");return str;}for (k=0;k<i-1;k++) /*将s.ch[0]~s.ch[i-2]复制到str*/str.ch[k]=s.ch[k];for (k=0;k<t.len;k++) /*将t.ch[0]~t.ch[t.len-1]复制到str*/str.ch[i+k-1]=t.ch[k];for (k=i+j-1;k<s.len;k++) /*将s.ch[i+j-1]~ch[s.len-1]复制到str*/str.ch[t.len+k-j]=s.ch[k];str.len=s.len-j+t.len;return str;}void DispStr(SqString str){int i;if (str.len>0){for (i=0;i<str.len;i++)printf("%c",str.ch[i]);printf("\n");}}实验题4.2实现链串各种基本运算的算法*文件名:algo4-2.cpp*/#include <stdio.h>#include <malloc.h>typedef struct snode{char data;struct snode *next;} LiString;void StrAssign(LiString *&s,char t[]){int i;LiString *r,*p;s=(LiString *)malloc(sizeof(LiString));s->next=NULL;r=s;for (i=0;t[i]!='\0';i++){p=(LiString *)malloc(sizeof(LiString));p->data=t[i];p->next=NULL;r->next=p;r=p;}}void StrCopy(LiString *&s,LiString *t){LiString *p=t->next,*q,*r;s=(LiString *)malloc(sizeof(LiString));s->next=NULL;s->next=NULL;r=s;while (p!=NULL) /*将t的所有结点复制到s*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}}int StrEqual(LiString *s,LiString *t){LiString *p=s->next,*q=t->next;while (p!=NULL && q!=NULL && p->data==q->data){p=p->next;q=q->next;}if (p==NULL && q==NULL)return 1;elsereturn 0;}int StrLength(LiString *s){int i=0;LiString *p=s->next;while (p!=NULL){i++;p=p->next;}return i;}LiString *Concat(LiString *s,LiString *t){LiString *str,*p=s->next,*q,*r;str=(LiString *)malloc(sizeof(LiString));str->next=NULL;r=str;while (p!=NULL) /*将s的所有结点复制到str*/ {q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}p=t->next;while (p!=NULL) /*将t的所有结点复制到str*/ {q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}return str;}LiString *SubStr(LiString *s,int i,int j){int k;LiString *str,*p=s->next,*q,*r;str=(LiString *)malloc(sizeof(LiString));str->next=NULL;r=str;if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s)) {printf("参数不正确\n");return str; /*参数不正确时返回空串*/ }for (k=0;k<i-1;k++)p=p->next;for (k=1;k<=j;k++) /*将s的第i个结点开始的j个结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}return str;}LiString *InsStr(LiString *s,int i,LiString *t){int k;LiString *str,*p=s->next,*p1=t->next,*q,*r;str=(LiString *)malloc(sizeof(LiString));str->next=NULL;r=str;if (i<=0 || i>StrLength(s)+1) /*参数不正确时返回空串*/{printf("参数不正确\n");return str;}for (k=1;k<i;k++) /*将s的前i个结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}while (p1!=NULL) /*将t的所有结点复制到str*/ {q=(LiString *)malloc(sizeof(LiString));q->data=p1->data;q->next=NULL;r->next=q;r=q;p1=p1->next;}while (p!=NULL) /*将*p及其后的结点复制到str*/ {q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}return str;}LiString *DelStr(LiString *s,int i,int j){int k;LiString *str,*p=s->next,*q,*r;str=(LiString *)malloc(sizeof(LiString));str->next=NULL;r=str;if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s)) {printf("参数不正确\n");return str; /*参数不正确时返回空串*/ }for (k=0;k<i-1;k++) /*将s的前i-1个结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}for (k=0;k<j;k++) /*让p沿next跳j个结点*/p=p->next;while (p!=NULL) /*将*p及其后的结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}return str;}LiString *RepStr(LiString *s,int i,int j,LiString *t){int k;LiString *str,*p=s->next,*p1=t->next,*q,*r;str=(LiString *)malloc(sizeof(LiString));str->next=NULL;r=str;if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s)) {printf("参数不正确\n");return str; /*参数不正确时返回空串*/ }for (k=0;k<i-1;k++) /*将s的前i-1个结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}for (k=0;k<j;k++) /*让p沿next跳j个结点*/p=p->next;while (p1!=NULL) /*将t的所有结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p1->data;q->next=NULL;r->next=q;r=q;p1=p1->next;}while (p!=NULL) /*将*p及其后的结点复制到str*/{q=(LiString *)malloc(sizeof(LiString));q->data=p->data;q->next=NULL;r->next=q;r=q;p=p->next;}return str;}void DispStr(LiString *s){LiString *p=s->next;while (p!=NULL){printf("%c",p->data);p=p->next;}printf("\n");}第5章数组和稀疏矩阵——上机实验题5解析实验题5.1求5×5阶螺旋方阵/*文件名:exp5-1.cpp*/#include <stdio.h>#define MaxLen 10void fun(int a[MaxLen][MaxLen],int n){int i,j,k=0,m;if (n%2==0) //m=én/2ùm=n/2;elsem=n/2+1;for (i=0;i<m;i++){for (j=i;j<n-i;j++){k++;a[i][j]=k;}for (j=i+1;j<n-i;j++){k++;a[j][n-i-1]=k;}for (j=n-i-2;j>=i;j--){k++;a[n-i-1][j]=k;}for (j=n-i-2;j>=i+1;j--){k++;a[j][i]=k;}}}void main(){int n,i,j;int a[MaxLen][MaxLen];printf("\n");printf("输入n(n<10):");scanf("%d",&n);fun(a,n);printf("%d阶数字方阵如下:\n",n);for (i=0;i<n;i++){for (j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}printf("\n");}实验题5.2求一个矩阵的马鞍点/*文件名:exp5-2.cpp*/#include <stdio.h>#define M 4#define N 4void MinMax(int A[M][N]){int i,j,have=0;int min[M],max[N];for (i=0;i<M;i++) /*计算出每行的最小值元素,放入min[0..M-1]之中*/{min[i]=A[i][0];for (j=1;j<N;j++)if (A[i][j]<min[i])min[i]=A[i][j];}for (j=0;j<N;j++) /*计算出每列的最大值元素,放入max[0..N-1]之中*/{max[j]=A[0][j];for (i=1;i<M;i++)if (A[i][j]>max[j])max[j]=A[i][j];}for (i=0;i<M;i++)for (j=0;j<N;j++)if (min[i]==max[j]){printf(" A[%d,%d]=%d\n",i,j,A[i][j]); /*显示马鞍点*/have=1;}if (!have)printf("没有鞍点\n");}void main(){int i,j;int A[M][N]={{9, 7, 6, 8},{20,26,22,25},{28,36,25,30},{12,4, 2, 6}};printf("A矩阵:\n");for (i=0;i<M;i++){for (j=0;j<N;j++)printf("%4d",A[i][j]);printf("\n");}printf("A矩阵中的马鞍点:\n");MinMax(A); /*调用MinMax()找马鞍点*/}实验题5.3求两个对称矩阵之和与乘积/*文件名:exp5-3.cpp*/#include <stdio.h>#define n 4#define m 10int value(int a[],int i,int j){if (i>=j)return a[(i*(i-1))/2+j];elsereturn a[(j*(j-1))/2+i];}void madd(int a[],int b[],int c[n][n]){int i,j;for (i=0;i<n;i++)for (j=0;j<n;j++)c[i][j]=value(a,i,j)+value(b,i,j);}void mult(int a[],int b[],int c[n][n]){int i,j,k,s;for (i=0;i<n;i++)for (j=0;j<n;j++){s=0;for (k=0;k<n;k++)s=s+value(a,i,k)*value(b,k,j); c[i][j]=s;}}void disp1(int a[]){int i,j;for (i=0;i<n;i++){for (j=0;j<n;j++)printf("%4d",value(a,i,j));printf("\n");}}void disp2(int c[n][n]){int i,j;for (i=0;i<n;i++){for (j=0;j<n;j++)printf("%4d",c[i][j]);printf("\n");}}void main(){int a[m]={1,2,3,4,5,6,7,8,9,10};int b[m]={1,1,1,1,1,1,1,1,1,1};int c1[n][n],c2[n][n];madd(a,b,c1);mult(a,b,c2);printf("\n");printf("a矩阵:\n");disp1(a);printf("b矩阵:\n");disp1(b);printf("a+b:\n");disp2(c1);printf("a*b:\n");disp2(c2);printf("\n");}实验题5.4实现稀疏矩阵(采用三元组表示)的基本运算/*文件名:exp5-4.cpp*/#include <stdio.h>#define N 4typedef int ElemType;#define MaxSize 100 /*矩阵中非零元素最多个数*/ typedef struct{ int r; /*行号*/int c; /*列号*/ElemType d; /*元素值*/} TupNode; /*三元组定义*/typedef struct{ int rows; /*行数值*/int cols; /*列数值*/int nums; /*非零元素个数*/TupNode data[MaxSize];} TSMatrix; /*三元组顺序表定义*/void CreatMat(TSMatrix &t,ElemType A[N][N]){int i,j;t.rows=N;t.cols=N;t.nums=0;for (i=0;i<N;i++){for (j=0;j<N;j++)if (A[i][j]!=0){t.data[t.nums].r=i;t.data[t.nums].c=j;t.data[t.nums].d=A[i][j];t.nums++;}}}void DispMat(TSMatrix t){int i;if (t.nums<=0)return;printf("\t%d\t%d\t%d\n",t.rows,t.cols,t.nums);printf("\t------------------\n");for (i=0;i<t.nums;i++)printf("\t%d\t%d\t%d\n",t.data[i].r,t.data[i].c,t.data[i].d); }void TranMat(TSMatrix t,TSMatrix &tb){int p,q=0,v; /*q为tb.data的下标*/tb.rows=t.cols;tb.cols=t.rows;tb.nums=t.nums;if (t.nums!=0){for (v=0;v<t.cols;v++) /*tb.data[q]中的记录以c 域的次序排列*/for (p=0;p<t.nums;p++) /*p为t.data的下标*/if (t.data[p].c==v){tb.data[q].r=t.data[p].c;tb.data[q].c=t.data[p].r;tb.data[q].d=t.data[p].d;q++;}}}int MatAdd(TSMatrix a,TSMatrix b,TSMatrix &c){int i=0,j=0,k=0;ElemType v;if (a.rows!=b.rows || a.cols!=b.cols)return 0; /*行数或列数不等时不能进行相加运算*/c.rows=a.rows;c.cols=a.cols; /*c的行列数与a的相同*/while (i<a.nums && j<b.nums) /*处理a和b中的每个元素*/{if (a.data[i].r==b.data[j].r) /*行号相等时*/{if(a.data[i].c<b.data[j].c) /*a元素的列号小于b 元素的列号*/{c.data[k].r=a.data[i].r;/*将a元素添加到c中*/c.data[k].c=a.data[i].c;c.data[k].d=a.data[i].d;k++;i++;}else if (a.data[i].c>b.data[j].c)/*a元素的列号大于b元素的列号*/{c.data[k].r=b.data[j].r; /*将b元素添加到c中*/c.data[k].c=b.data[j].c;c.data[k].d=b.data[j].d;k++;j++;}else /*a元素的列号等于b元素的列号*/{v=a.data[i].d+b.data[j].d;if (v!=0) /*只将不为0的结果添加到c中*/{c.data[k].r=a.data[i].r;c.data[k].c=a.data[i].c;c.data[k].d=v;k++;}i++;j++;}}else if (a.data[i].r<b.data[j].r) /*a元素的行号小于b元素的行号*/{c.data[k].r=a.data[i].r; /*将a元素添加到c中*/c.data[k].c=a.data[i].c;c.data[k].d=a.data[i].d;k++;i++;}else /*a元素的行号大于b元素的行号*/{c.data[k].r=b.data[j].r; /*将b元素添加到c中*/c.data[k].c=b.data[j].c;c.data[k].d=b.data[j].d;k++;j++;}c.nums=k;}return 1;}int value(TSMatrix c,int i,int j){int k=0;while (k<c.nums && (c.data[k].r!=i || c.data[k].c!=j))k++;if (k<c.nums)return(c.data[k].d);elsereturn(0);}int MatMul(TSMatrix a,TSMatrix b,TSMatrix &c){int i,j,k,p=0;ElemType s;if (a.cols!=b.rows) /*a的列数不等于b的行数时不能进行相乘运算*/return 0;for (i=0;i<a.rows;i++)for (j=0;j<b.cols;j++){s=0;for (k=0;k<a.cols;k++)s=s+value(a,i,k)*value(b,k,j);if (s!=0) /*产生一个三元组元素*/{c.data[p].r=i;c.data[p].c=j;c.data[p].d=s;p++;}}c.rows=a.rows;c.cols=b.cols;c.nums=p;return 1;}void main(){ElemType a1[N][N]={{1,0,3,0},{0,1,0,0},{0,0,1,0},{0,0,1,1}};ElemType b1[N][N]={{3,0,0,0},{0,4,0,0},{0,0,1,0},{0,0,0,2}};TSMatrix a,b,c;CreatMat(a,a1);CreatMat(b,b1);printf("a的三元组:\n");DispMat(a);printf("b的三元组:\n");DispMat(b);printf("a转置为c\n");TranMat(a,c);printf("c的三元组:\n");DispMat(c);printf("c=a+b\n");MatAdd(a,b,c);printf("c的三元组:\n");DispMat(c);printf("c=a*b\n");MatMul(a,b,c);printf("c的三元组:\n");DispMat(c);}实验题5.5实现广义表的基本运算#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct lnode{ int tag; /*结点类型标识*/ union{ElemType data;struct lnode *sublist;}val;struct lnode *link; /*指向下一个元素*/} GLNode;extern GLNode *CreatGL(char *&s);extern void DispGL(GLNode *g);void Change(GLNode *&g,ElemType s,ElemType t) /*将广义表g中所有原子s 替换成t*/{if (g!=NULL){if (g->tag==1) /*子表的情况*/Change(g->val.sublist,s,t);else if (g->val.data==s) /*原子且data域值为s的情况*/g->val.data=t;Change(g->link,s,t);}}void Reverse(GLNode *&g) /*将广义表g所有元素逆置*/{GLNode *p,*q,*t;t=NULL;if (g!=NULL){p=g;while (p!=NULL) /*将同级的兄弟逆置*/{q=p->link;if (t==NULL){t=p;p->link=NULL;}else{p->link=t;t=p;}p=q;}g=t;p=g;while (p!=NULL){if (p->tag==1)Reverse(p->val.sublist);p=p->link;}}}int Same(GLNode *g1,GLNode *g2) /*判断两个广义表是否相同*/ {int s;if (g1==NULL && g2==NULL) /*均为NULL的情况*/return 1;else if ((g1==NULL && g2!=NULL) || (g1!=NULL && g2==NULL)) /*一个为NULL,另一不为NULL的情况*/return 0;else{s=1;while (g1!=NULL && g2!=NULL && s==1){if (g1->tag==1 && g2->tag==1)/*均为子表的情况*/s=Same(g1->val.sublist,g2->val.sublist);else if (g1->tag==0 && g2->tag==0)/*均为原子的情况*/{if (g1->val.data!=g2->val.data)s=0;}else /*一个为原子,另一为子表的情况*/s=0;g1=g1->link;g2=g2->link;}if (g1!=NULL || g2!=NULL) /*有一个子表尚未比较完时*/s=0;return s;}}ElemType MaxAtom(GLNode *g) /*求广义表g中最大的原子*/{ElemType m=0,m1; /*m赋初值0*/while (g!=NULL){if (g->tag==1) /*子表的情况*/{m1=MaxAtom(g->val.sublist); /*对子表递归调用*/if (m1>m) m=m1;}else{if (g->val.data>m) /*为原子时,进行原子比较*/m=g->val.data;}g=g->link;}return m;}void DelAtom(GLNode *&g,ElemType x) /*删除广义表g中的第一个为x原子*/{GLNode *p=g,*q,*pre;while (p!=NULL){q=p->link;if (p->tag==1) /*子表的情况*/DelAtom(p->val.sublist,x); /*对子表递归调用*/else{if (p->val.data==x) /*为原子时,进行原子比较*/{if (p==g)/*被删结点是本层的第1个结点*/{g=q;free(p); /*释放结pre=g;}else /*被删结{pre->link=q;free(p);}return;}}pre=p;p=q;}}void DelAtomAll(GLNode *&g,ElemType x) /*删除广义表g中的所有为x原子*/{GLNode *p=g,*q,*pre;while (p!=NULL){q=p->link;if (p->tag==1) /*子表的情况*/DelAtomAll(p->val.sublist,x); /*对子表递归调用*/else{if (p->val.data==x) /*为原子时,进行原子比较*/if (p==g)/*被删结点是本层的第1个结点*/{g=q;free(p); /*释放结pre=g;}else /*被删结{pre->link=q;free(p);}}pre=p;p=q;}}void PreOrder(GLNode *g) /*采用先根遍历g*/{if (g!=NULL){if (g->tag==0) /*为原子结点时*/printf("%c ",g->val.data);elsePreOrder(g->val.sublist); /*为子表时*/ PreOrder(g->link);}}void main(){GLNode *g1,*g2,*g3,*g4;char *str1="(a,(a),((a,b)),((a)),a)";char *str2="(a,(b),((c,d)),((e)),f)";char *str3="(a,(a,b),(a,b,c)))";char *str4="(a,(b),((c,d)),((e)),f)";g1=CreatGL(str1);printf("\n");printf(" 广义表g1:");DispGL(g1);printf("\n");printf(" 将广义表g1中所有'a'改为'b'\n");Change(g1,'a','b');printf(" 广义表g1:");DispGL(g1);printf("\n\n");g2=CreatGL(str2);printf(" 广义表g2:");DispGL(g2);printf("\n");printf(" 广义表g2中最大原子:%c\n",MaxAtom(g2));printf(" 将g2的元素逆置\n");Reverse(g2);printf(" 广义表g2:");DispGL(g2);printf("\n\n");printf(" 广义表g1和g2%s\n\n",(Same(g1,g2)?"相同":"不相同"));g3=CreatGL(str3);printf(" 广义表g3:");DispGL(g3);printf("\n");printf(" 删除广义表g3的第一个为'a'的原子\n");DelAtom(g3,'a');printf(" 广义表g3:");DispGL(g3);printf("\n\n");printf(" 删除广义表g3中的所有'a'原子\n");DelAtomAll(g3,'a');printf(" 广义表g3:");DispGL(g3);printf("\n\n");g4=CreatGL(str4);printf(" 广义表g4:");DispGL(g4);printf("\n");printf(" 采用先根遍历g4的结果:");PreOrder(g4);printf("\n\n");}。
计算机网络上机实验题
实验题目
请编写一个简单的计算机网络实例来展示数据包的传输过程。
实验要求
1. 使用至少2台计算机来模拟网络环境。
2. 实现一个简单的客户端和服务器端程序。
3. 客户端程序向服务器端发送数据包,并在服务器端输出接收
到的数据包内容。
实现步骤
1. 搭建网络环境:连接两台计算机,并确保它们可以相互通信。
2. 编写服务器端程序:使用一种编程语言(如Python)编写服
务器端程序,监听指定端口并等待数据包的到达。
3. 编写客户端程序:使用同一种编程语言编写客户端程序,向
服务器端指定的IP地址和端口发送数据包。
4. 数据包传输:客户端程序发送数据包,服务器端程序接收并输出数据包内容。
5. 测试:运行客户端和服务器端程序,观察数据包的传输过程和服务器端输出的内容是否正确。
实验注意事项
- 确保计算机之间的网络连接正常,可以相互通信。
- 检查防火墙设置,确保指定的端口可以通信。
- 在编写程序时,注意数据包的格式和传输方式。
实验评估标准
- 搭建网络环境成功。
- 程序能够正常运行,客户端能够发送数据包,服务器端能够接收并输出数据包内容。
- 能够准确理解和解释实验的目的和过程。
参考文献
- 无。
当涉及数据结构的上机实验题时,通常会涉及编程和算法的实践。
以下是一些可能的
上机实验题目:
1. 实现一个栈(Stack)数据结构,并编写基本的操作(入栈、出栈、获取栈顶元素等)。
2. 实现一个队列(Queue)数据结构,并编写基本的操作(入队、出队等)。
3. 实现一个链表(Linked List)数据结构,并编写插入、删除、查找等操作。
4. 实现一个二叉树(Binary Tree)数据结构,并编写遍历算法(前序、中序、后序遍历)。
5. 实现一个图(Graph)数据结构,并编写基本的图算法(深度优先搜索、广度优先搜索)。
6. 实现一个哈希表(Hash Table)数据结构,并编写插入、删除、查找等操作。
这些实验题目可以帮助学生加深对数据结构的理解,并通过编程实践来掌握数据结构
的基本操作和算法。
同时,这些实验也有助于提高学生的编程能力和解决问题的能力。
附录2上机实验附录2.1 上机实验11.启动“MicroSoft Office Access 2010”,单击“文件”选项卡上左侧窗格的“帮助”,单击中间窗格上的“MicroSoft Office帮助”,便显出“Access帮助”窗口。
单击该帮助窗口中的“Access 2010入门”标题下的“Access 2010数据库设计基础”,便可选看列出的“数据库设计基础”的那些内容。
2.启动“MicroSoft Office Access 2010”,单击“文件”选项卡上左侧窗格的“帮助”,单击中间窗格上的“MicroSoft Office帮助”,便显出“Access帮助”窗口。
单击该帮助窗口中的“Access 2010入门”标题下的“Access 演示”,显出“演示”的主题列表,单击主题列表中的“演示:认识导航窗格”,便可进行观看。
同理,可查看其他的Access帮助信息。
附录2.2 上机实验21.在用户盘的根目录中(如G:\)创建一个名为“上机实验”文件夹。
2.在“上机实验”文件夹中创建一个名为“学生管理系统.accdb”的数据库。
3.在“学生管理系统”数据库中创建如下的表:295296(1)根据表3-2所示的“学系”表结构,创建一个表名为“学系”的表,主键是“学系代码”。
“学系”表中包含学系代码、学系名称、办公电话、学系简介和学系资料等字段。
表3-2 “学系”表结构(2)根据表3-3所示的“专业”表结构,创建一个表名为“专业”的表,主键是“专业代码”。
“专业”表中包含专业代码、专业名称、学制年限、学系代码和专业简介字段。
表3-3 “专业”表结构(3)根据表3-4所示的“班级”表结构,创建一个表名为“班级”的表,主键是“班级号”。
“班级”表中包含班级号、班级名称、年级、专业代码,班主任和联系电话字段。
表3-4 “班级”表结构(4)根据表3-5所示的“学生”表结构,创建一个表名为“学生”的表,主键是“学号”。
《C语言》上机实验题及参考答案作者名:不详来源:网友提供05年7月21日1、编程实现对键盘输入的英文名句子进行加密。
用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
6、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。
7、任何一个自然数m的立方均可写成m个连续奇数之和。
例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19编程实现:输入一自然数n,求组成n3的n个连续奇数。
8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
9、编制一个完成两个数的四则运算程序。
如:用户输入34+56则输出结果90.00。
要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。
如输入:56439,输出:5位数5,6,4,3,99,3,4,6,511、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。
实验一 C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、实验例题【例1】编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.在Turbo C的集成环境下,键入如下源文件。
敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。
程序example.c如下:main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。
按回车键重新返回Turbo C的编辑环境。
注意,在运行程序之前最好先存盘。
【例2】输入并运行程序,写出运行结果。
main(){int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}运行方法同上,最后结果为:sum is 579。
【例3】输入并运行程序,写出运行结果。
main(){int a,b,c;int max(int,int);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
A.1. 要求筛选出(1)统计学成绩等于75分的学生;(2)数学成绩高的前3名学生;(3)4门课程成绩都大于70分的学生。
2. 要求筛选出(1)数学成绩等于60分的学生;(2)经济学成绩高的前4名学生;(3)4门课3. 要求筛选出(1)英语成绩等于85分的学生;(2)统计学成绩高的前4名学生;(3)4门课4. 要求筛选出(1)统计学成绩等于90分的学生;(2)经济学成绩高的前3名学生;(3)4门5. 要求筛选出(1)数学成绩等于85分的学生;(2)英语成绩高的前3名学生;(3)4门课程B.1. 为评价家电行业售后服务的质量,随机抽取了由100个家庭构成的一个样本。
服务质量的等级分别表示为:A.好;B.较好;C.一般;D.较差;E.差。
调查结果如下所示;B EC C AD C B AE D A C B C D E C E E A D B C C A E D C B B A C D E A B D D C C B C E D B C C B C D A C B C D E C E B B E C C A D C B A E B A C D E A B D D C A D B C C A E D C B C B C E D B C C B C要求编制品质数列,列出频率、频数,并选用适当的统计图如:圆形图、条形图等形象地显示资料整理的结果。
(要求展现整理过程)2. 为评价家电行业售后服务的质量,随机抽取了由100个家庭构成的一个样本。
服务质量的等级分别表示为: A.好;B.较好;C.一般;D.较差;E.差。
调查结果如下所示;A E C DB DC B A ED B D B C DE C E D A D B C C A E D B B B A C D E A B D D B C B C E C B C B B C D A C A C D E C E B B E C C A D D B A E B A C D E A B D E C A D B C C A E D B B C B C E D B D C A B要求编制品质数列,列出频率、频数,并选用适当的统计图如:圆形图、条形图等形象地显示资料整理的结果。
实验一网络简单观察实验一、实验目的1.观察了解网卡、线缆、集线器等设备;2.了解WINDOWS中的网络组成及参数;3.了解通过TCP/IP协议连接上网的方法;4.了解Ethereal软件的作用,以及利用Ethereal软件捕获、查看网络数据包的方法。
二、原理概述Ethereal是一个免费的网络协议分析软件,支持Linux、Windows等多种平台。
由于网络上产生的数据包很多,通常我们只对其中一部分数据包感兴趣,因此在捕捉具体的数据包之前需要定义一个过滤器(filter),以滤除不需要的信息。
一个过滤器实质上是一组规则,只有收到的数据满足规则时才保存,否则丢弃。
过滤器通常可以是多个规则的逻辑组合。
在Ethereal中捕捉数据包前,首先要选择要监听的接口。
点击菜单中“Capture” “Interface”,此处选择接口“NDIS5 Driver”。
在捕捉前还要设置一些参数,如过滤器。
点击“prepare”,出现设置窗口,在“Capture Filter”一栏中填写感兴趣的数据包对应规则(见使用手册)。
点击“Start”按钮开始捕捉。
打开浏览器访问一些站点后,然后关闭浏览器,最后点击“Stop”按钮,结束数据包的捕捉。
所有捕捉的数据包都显示在主窗口中。
窗口中上面的列表框为所有捕获数据包(帧)的列表,记录了这些数据包的捕获时间、来源、目的地、协议等信息。
中间的文本框为当前选中的捕获帧经Ethereal解释后的协议信息。
屏幕最下面的窗口中以二进制形式显示当前选中的数据包的原始内容。
如果需要保存所捕获的数据,可选择菜单“File”中的“Save as…”进行保存。
Ethereal支持多种文件格式。
三、实验内容1.了解网卡的配置情况;2.了解对等网的相关数据;3.了解TCP/IP协议的相关参数配置;4.阅读Ethereal软件的相关使用手册。
四、实验方法1.实验原理本实验是是在实验室的基于WINDOWS的网络上,观察网络的硬件软件,和相关的网络参数,并可以进行进一步的上网和共享硬盘等网络应用。
数据结构上机实验(两次共五题)
1、约瑟夫环:将编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持
有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个开始按顺时针方向自1开始报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。
试设计一个程序求出出列顺序。
设m 的初值为20,密码为:3,1,7,2,4,8,4。
2、编一程序:①建立一个数据域为1至10的带头结点的链表;
②将此链表就地逆转。
3、编写构造Huffman树和Huffman编码的程序。
已知:字符a,b,c,d,e,f,g的权值分别为{4,10,8,5,3,1,2}
4、编一程序算出教材中图7.30(p185)的关键路径
5、一程序实现堆排序。
已知输入关键字序列为:49,38,65,97,76,13,27,48
要求输出每趟排序的结果。
单片机上机操作考试题及答案1. 实验目的通过单片机上机操作考试,测试学生对单片机相关知识的掌握程度,以及培养学生动手实践能力和解决问题的能力。
2. 实验要求根据题目要求,使用单片机进行编程,完成所提供的电路连接和操作步骤。
要求学生能够独立完成实验,并且在规定时间内提交答案。
3. 考试题目3.1 题目一:LED流水灯连接8个LED灯,灯依次顺序点亮并循环显示,每个灯的亮灭时间为500ms。
3.2 题目二:数码管计数器使用数码管显示0-9的数字,实现一个计数器功能。
按下按键后计数器加1,并且在数码管上显示当前的计数值。
3.3 题目三:温度采集与显示通过温度传感器采集环境温度,并使用数码管显示当前温度值,温度单位为摄氏度。
4. 考试答案4.1 题目一答案:LED流水灯```C语言#include<reg52.h>sbit LED1 = P0^0;sbit LED2 = P0^1;sbit LED3 = P0^2;sbit LED4 = P0^3;sbit LED5 = P0^4;sbit LED6 = P0^5;sbit LED7 = P0^6;sbit LED8 = P0^7;void delay(unsigned int i) //延时函数{unsigned int j, k;for(j=i; j>0;j--)for(k=121;k>0;k--);}void main(){while(1)LED1 = 0; delay(500); LED2 = 0; delay(500); LED3 = 0; delay(500); LED4 = 0; delay(500); LED5 = 0; delay(500); LED6 = 0; delay(500); LED7 = 0; delay(500); LED8 = 0; delay(500); LED1 = 1; delay(500); LED2 = 1; delay(500); LED3 = 1; delay(500); LED4 = 1; delay(500); LED5 = 1; delay(500); LED6 = 1; delay(500); LED7 = 1; delay(500); LED8 = 1; delay(500); }}4.2 题目二答案:数码管计数器```C语言#include<reg52.h>#define digit P0 //定义数码管的端口sbit key = P2^0; //定义按键引脚unsigned char code DisplayTab[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //显示的0-9 };void delay(unsigned int i) //延时函数{unsigned int j, k;for(j=i; j>0;j--)for(k=121;k>0;k--);}void display(unsigned char num) //显示函数{digit = DisplayTab[num];}void main(){unsigned char count = 0; //计数器变量,初始为0 while(1){if(key == 0) //按下按键{delay(10); //延时去抖动if(key == 0) //确认按键按下{while(key == 0); //等待按键释放count++; //计数器加1if(count >= 10)count = 0;display(count); //显示计数值}}}}```4.3 题目三答案:温度采集与显示```C语言#include<reg52.h>#define digit P0 //定义数码管的端口sbit DQ = P2^7; //定义温度传感器引脚unsigned char code DisplayTab[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //显示的0-9 };void delay(unsigned int i) //延时函数{unsigned int j, k;for(j=i; j>0;j--)for(k=121;k>0;k--);bit Init_DS18B20() //初始化温度传感器{unsigned char err;DQ = 1; //总线拉高delay(2); //延时2毫秒DQ = 0; //总线拉低delay(80); //延时80毫秒DQ = 1; //总线拉高delay(30); //延时30毫秒err = DQ; //读总线电平delay(5); //延时5毫秒return err;}unsigned char Read_One_Byte() //读取一个字节的数据{unsigned char i, dat = 0;for(i=0;i<8;i++)DQ = 0; //总线拉低dat >>= 1;DQ = 1; //总线拉高if(DQ)dat |= 0x80;delay(1); //延时1毫秒}return dat;}unsigned char Read_Temperature() //读温度函数{unsigned char a, b;Init_DS18B20(); //初始化温度传感器delay(1); //延时1毫秒Write_One_Byte(0xcc); //跳过ROMWrite_One_Byte(0x44); //启动温度转换Init_DS18B20(); //初始化温度传感器Write_One_Byte(0xcc); //跳过ROMWrite_One_Byte(0xbe); //读取温度寄存器a = Read_One_Byte(); //读温度指数位b = Read_One_Byte(); //读温度小数位temp = ((b<<8)+a) * 0.0625; //计算温度值 delay(100); //延时100毫秒return temp;}void display(unsigned char num) //显示函数{digit = DisplayTab[num];}void main(){unsigned char temp;while(1){temp = Read_Temperature(); //读取温度display(temp); //显示温度值}}```以上是单片机上机操作考试题及答案,希望对你有所帮助。
四川师范大学信息检索课实验题目1、举例说明搜索引擎中filetype、site、双引号这三个高级检索语法的功能。
要求:1)请问上述语法的作用是什么?什么情况下用到这些语法?答:作用:filetype——特定文件类型检索。
Site——把搜索范围限定在特定站点中,可以提高检索效率。
双引号——精确配比,可以提高检索效果。
情况:a.在需要搜索特定文件类型的时候可以通过filetype语法实现。
b.需要在特定站点搜索资源时可以通过site语法实现。
c.当检索词过长,或输入的是英语句子,不想让搜索引擎对检索词进行拆分或者去词时,可以对检索词加上双引号。
2)自己设计一个或多个检索案例,体现这些语法的功能,说清楚检索意图和检索表达式,并对检索效果进行评价。
答;案例1:检索意图;通过搜索引擎检索有关高等数学方面的幻灯片课件。
检索表达式:高等数学 filetype:PPT效果评价:搜索引擎所支持的幻灯片文件是微软公司的PowerPoint文件,文件格式均为PPT,大大提高了检索效率。
案例2;检索意图:通过搜索引擎在中国教育网内检索教材高等数学。
检索表达式:高等数学 site:。
效果评价:检索到的相关内容均属于中国教育网内,提高了检索效率。
参考:/search/page_feature.html#092、查询本专业经典书籍。
要求:1)查询确定本专业必读的书籍{要包括外文书籍}。
(自己查询后,最后能向专业课老师请教,听听他们的意见)答:a.管理审计方法 b.财务审计案例示范 c.审计学一种整合方法(第12版)[Auditing And assurance Services]2)选择其中3本,国内哪些图书馆有这3本书?(任选国内211高校{没听说过211?百度一下!}图书馆3个)答;a.北京大学图书馆 b.西南财经大学图书馆 c.西南大学图书馆3)通过四川师范大学图书馆网站上的书生之家数据库和超星数据库查询这些书的全文。
大一C语言上机实验试题及答案一、选择题(每题2分,共10分)1. C语言中,用来定义变量的关键字是()。
A. varB. defineC. intD. let答案:C2. 下列哪个选项不是C语言中的运算符?A. %B. &&C. =D. :答案:D3. 在C语言中,用于定义一个函数的关键字是()。
A. functionB. defC. intD. void答案:A4. 下列哪个选项是正确的C语言数组定义?A. int arr[] = {1, 2, 3};B. int arr[3] = {1, 2, 3};C. int arr[3] = {1, 2};D. int arr = {1, 2, 3};答案:B5. C语言中,用于输出字符串的函数是()。
A. printfB. printC. coutD. printf_s答案:A二、填空题(每题3分,共15分)1. 在C语言中,用于声明一个整型变量的关键字是____。
答案:int2. 以下代码段的输出结果是____。
```c#include <stdio.h>int main() {int a = 10;printf("%d", a++);return 0;}```答案:103. 在C语言中,用于声明一个浮点型变量的关键字是____。
答案:float4. 若有以下代码段:```cint x = 5, y = 3;int result = x / y;```则变量result的值是____。
答案:15. 在C语言中,用于声明一个字符型变量的关键字是____。
答案:char三、编程题(每题10分,共20分)1. 编写一个C语言程序,实现输入两个整数,输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;}```2. 编写一个C语言程序,实现输入一个字符串,然后输出其反转后的字符串。
上机实验题
1. 产生右图所示亮块图像 f 1(x,y)(128×128大小,暗处=0,亮处=255),对其
进行FFT:
(1)同屏显示原图f 1和FFT(f 1)的幅度谱图;
(2)若令f 2(x,y)=(-1)x+y f 1(x,y),重复以上过程,比较二者幅度谱的异同,
简述理由;
(3)若将f 2(x,y)顺时针旋转45度得到f 3(x,y),试显示FFT(f 3)的幅度谱,并与FFT(f 2)的幅度谱进行比较。
2. 对256×256大小、256级灰度的数字图像lena.img 进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
3. 对给定的两种128×128、256级灰度的数字图像(图像磁盘文件名分别为Fing_128.img (指纹图)和Cell_128.img (显微医学图像)进行如下处理:
(1)对原图像进行直方图均衡化处理,同屏显示处理前后图像及其直方图,比较异同,并回答为什么数字图像均衡化后其直方图并非完全均匀分布。
(2)对原图像加入高斯噪声,用4-邻域平均法平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪图像和处理后的图像。
① 不加门限;
② 加门限 2(,)T f m n =,(其中∑∑=i j
j i f N n m f ),(1
),(2)
4. (1) 用Laplacian 锐化算子(分1=α和2=α两种情况)对256×256大小、256级灰度的数字图像lena.img 进行锐化处理,显示处理前、后图像。
(2) 若令 f n m f n m g 2
1),(),(∇−=α, 2(,)4(,)[(1,)(1,)(,1)(,1)
g m n f m n f m n f m n f m n f m n αα=−−+++−++
)]1,()1,(++−+n m f n m f
则回答如下问题:
① ),(n m f 、),(1n m g 和),(2n m g 之间有何关系?
② ),(2n m g 代表图像中的哪些信息?
③ 由此得出图像锐化的实质是什么?
5. 分别利用Roberts 、Prewitt 和Sobel 边缘检测算子,对256×256大小、256级灰度的数字图像lena.img 进行边缘检测,显示处理前、后图像。