东北大学计算机软件技术报告_第1页
东北大学计算机软件技术报告_第2页
东北大学计算机软件技术报告_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一:线性表的排序与查找实验目的掌握数据结构的基本概念、线性表的基本操作以及查找和排序方法的设计。实验内容键盘输入一组无序数据,添加到线性表中;排序线性表并输出排序结果;(要求插入后的表仍为有序表输出结果;键盘输入一个数,并从线性表中删除相应的数据,输出结果3. 实验要求程序清单。运行过程及运行结果。程序清单#include<stdio.h>#include<iostream>#include<conio.h>constintgic_MaxSize=15; 最大值g代表全局变量代表int型,c代表常量intgiv_lnum=0; 表中元素个数intaryLinearList[gic_MaxSize]; //定义线性表数组voidPrintout(void)//输出线性表{printf("更新后线性表数据:\n");for(inti=1;i<=giv_lnum;i++){printf("%d,",aryLinearList[i]);}printf("\n");}voidListSort()//线性表排序冒泡法{inttmp1,tmp2,tmp3,tmp4;for(tmp1=0;tmp1<giv_lnum;tmp1++){tmp2=tmp1;for(tmp3=1;tmp3<giv_lnum;tmp3++){if(aryLinearList[tmp3]>aryLinearList[tmp3+1]){tmp2=tmp3;tmp4=aryLinearList[tmp3];数据交换aryLinearList[tmp3]=aryLinearList[tmp3+1];aryLinearList[tmp3+1]=tmp4;}}}}voidListInput()//线性表输入元素{intliv_innum;printf("请输入线性表数据:\n");for(inti=1;i<=10;i++){scanf("%d",&liv_innum);//输入插入数据aryLinearList[i]=liv_innum;giv_lnum++;}ListSort(); //排序线性表Printout(); //输出结果}voidListInsert()//线性表插入元素{intliv_innum;inttmp2,tem1=0;printf("请输入要插入数据:\n");scanf("%d",&liv_innum);while(liv_innum>aryLinearList[tem1])//查找插入元素在表中位置{tem1++;}for(tmp2=giv_lnum;tmp2>=tem1;tmp2--){aryLinearList[tmp2+1]=aryLinearList[tmp2];//更新线性表}aryLinearList[tmp2+1]=liv_innum; //插入元giv_lnum++; //线性表加一Printout(); //输出结果}voidListDel()//线性表删除元素{inttmp1=0,tmp2,liv_innum;printf("scanf("%d",&liv_innum);{if(liv_innum==aryLinearList[tmp1]) //找出要删除元素位置{break;}}tmp2=tmp1;for(tmp2;tmp2<giv_lnum;tmp2++){aryLinearList[tmp2]=aryLinearList[tmp2+1];//更新线性表}giv_lnum--; //线性表减Printout(); //输出结果}voidmain()//主函数{intliv_innum=0;while(1){printf("4.退出\n");请选择14:scanf("%d",&liv_innum); //输入选switch(liv_innum){case1:ListInput();break;case2:ListInsert();break;case3:ListDel();break;case4:exit(0); }}}程序截图实验二:栈与队列的应用实验目的掌握栈与队列的基本概念、基本操作及设计与应用。实验内容键盘输入算数表达式,并放入队列当中;应用栈的概念设计表达式求值算法;输出表达式求值结果;3. 实验要求程序清单;运行过程及运行结果。程序清单#include"iostream"#include<conio.h>#include<complex>usingnamespacestd;constintMAX_LEN=10;constintMAX_SIZE=30;

//字符串的长度//栈或队的最大元素个数structQUEUE{ //定义一个队列的结intnMaxSize; //最大值intnCount; //个数intnFront; //头intnRear; //尾charszQueue[MAX_SIZE][MAX_LEN];};structSTACK{ //intnMaxSize;//最大值intnTop; //栈顶charszStack[MAX_SIZE][MAX_LEN];};intPriority(char*cTOPE) //获取优先级{intnPriority=0;switch(cTOPE[0]){case'^':nPriority=3;break;case'*':case'/':nPriority=2;break;case'+':case'-':nPriority=1;break;case';':nPriority=0;}returnnPriority;}voidCompute(char*ctmpn1,char*ctmpn2,char*cTOPE,char*chResult)//计算数值{doublefctmpn1,fctmpn2;doublefResult=0;fctmpn1=atof(ctmpn1);fctmpn2=atof(ctmpn2);switch(cTOPE[0]){case'^':fResult=pow(fctmpn1,fctmpn2);break;case'*':fResult=fctmpn1*fctmpn2;break;case'/':fResult=fctmpn1/fctmpn2;break;case'+':fResult=fctmpn1+fctmpn2;break;case'-':fResult=fctmpn1-fctmpn2;break;}sprintf(chResult,"%.4f",fResult); //return;}voidInitQueue(QUEUE*q,intnMaxSize)//初始化队列{q->nFront=0;q->nRear=0;q->nCount=0;q->nMaxSize=nMaxSize;intm,n=0;for(n=0;n<MAX_LEN;n++)q->szQueue[m][n]='\0';}voidInQueue(QUEUE*q,char*pItem)//进队操作{inttmpi,l;l=strlen(pItem);if(q->nRear<q->nMaxSize)for(tmpi=0;tmpi<l;tmpi++)q->szQueue[q->nRear][tmpi]=*(pItem+tmpi);q->nCount++;q->nRear++;}voidOutQueue(QUEUE*q,char*pItem)//出队操作{inttmpi;if(q->nFront!=q->nRear)for(tmpi=0;tmpi<MAX_LEN;tmpi++)*(pItem+tmpi)=q->szQueue[q->nFront][tmpi];q->nCount--;q->nFront++;}voidInitStack(STACK*s,intnMaxSize)//初始化堆栈{intm,n=0;s->nMaxSize=nMaxSize;s->nTop=0;for(m=0;m<nMaxSize;m++)s->szStack[m][n]='\0';}voidPushStack(STACK*s,char*pItem)//压栈{inttmpi,l;l=strlen(pItem);if(s->nTop<s->nMaxSize)for(tmpi=0;tmpi<l;tmpi++)s->szStack[s->nTop][tmpi]=*(pItem+tmpi);s->nTop++;}voidPopStack(STACK*s,char*pItem)//出栈{inttmpi;if(s->nTop!=0){{s->szStack[s->nTop][tmpi]='\0';}}}voidGetTopStack(STACK*s,char*pItem)//得到栈顶{inttmpi;if(s->nTop!=0){for(tmpi=0;tmpi<MAX_LEN;tmpi++){*(pItem+tmpi)=s->szStack[s->nTop-1][tmpi];}}}voidPrintElem(QUEUE*S)//打印(测试使用){inttmpi=0;while(S->szQueue[tmpi][0]!=';')cout<<S->szQueue[tmpi++];cout<<"=";}voidmain(void)//主函数{//声明一个队列QUEUEqEXP; //存放公式队列;初始化队列charctmpn[MAX_SIZE]; 数字中间变量charctmpo[2]={'\0','\0'}; //符号中间变charcINEXP[MAX_SIZE]; //输入公式for(inttmpi=0;tmpi<MAX_SIZE;tmpi++) //清空{cINEXP[tmpi]='\0';ctmpn[tmpi]='\0';}//OSNSSTACKNS,OS;InitStack(&NS,MAX_SIZE); //InitStack(&OS,MAX_SIZE);cout<<"请输入公式:\n";cin>>cINEXP;intlen=strlen(cINEXP); //计算公式长度//将公式最后一位加入分号if(isdigit(cINEXP[len-1]))cINEXP[len++]=';';elsecINEXP[len-1]=';';inttmpm=0,tmpk=0;for(tmpi=0;tmpi<len;tmpi++){if((isdigit(cINEXP[tmpi]))||(cINEXP[tmpi]=='.')) //判断公式为操作数还是操作符{ctmpn[tmpm]=cINEXP[tmpi]; //tmpm++;}else{ctmpo[0]=cINEXP[tmpi]; //ctmpo//for(tmpm=0;tmpm<MAX_SIZE;tmpm++)ctmpn[tmpm]='\0';tmpm=0;}}cout<<"计算输出结果为\n";PrintElem(&qEXP); //把公式输出chartmpx[MAX_LEN]; 从队列读出表达式charcTOPE[MAX_LEN]; //栈顶运算符charctmpn1[MAX_LEN],ctmpn2[MAX_LEN]; //两个操作charchResult[MAX_LEN]; 运算结果tmpx); //扫描表达式PushStack(&OS,";"); //把分号压栈while(true){if(isdigit(tmpx[0])) //判断公式为操作数还是操作符{}else{符

PushStack(&NS,tmpx); //NS中//扫描表达式GetTopStack(&OS,cTOPE); //OS栈顶运算符if(Priority(tmpx)>Priority(cTOPE)) //运算符的优先级〉栈顶运算{PushStack(&OS,tmpx); //操作符压入OS//扫描表达式continue;}elseif(tmpx[0]==';'&&cTOPE[0]==';') break;else{

for(tmpk=0;tmpk<MAX_LEN;tmpk++) //chResult[tmpk]='\0';PopStack(&NS,ctmpn2); //2出栈PopStack(&NS,ctmpn1); //1出栈PopStack(&OS,cTOPE); //操作符出栈Compute(ctmpn1,ctmpn2,cTOPE,chResult); //计算结果PushStack(&NS,chResult); //将计算结果压入NS}}}cout<<chResult;}程序截图实验三:关系数据语言的应用实验目的掌握SQL基本语句,实现数据库、表的创建,以及增删改和查询操作。实验内容MyDB;4102,Age、整数,Birthday、日期型,Class、10Course、整型;ScoreSno4Cno2Grade型;期(Sno,Sname,BirthDay);按学号顺序查询一个班级的所有学生(Class, Sname);列出学生选择各门课程的成绩(Sname, Cname,Grade);列出有过不及格成绩的学生名单(Sno,Sname,Class);求学生的平均成绩和总成绩(Sname,PJCJ,ZCJ);查找各科成绩都>=85分的学生(Sname,Class);将课程号为“01修改一名学生的姓名、性别、年龄;55~59609080删除一个班级的所有学生;删除所有数据表和数据库3. 实验要求SQLSQL检验运行结果(例如插入、删除)SQL程序清单与截图创建表createtableStu(Snochar(4)primarykey,Snamechar(10),Sexchar(2),Agenumeric,BirthdaydatEtime,Classchar(10),);createtableCourse(Cnochar(2)primarykey,Cnamechar(10),Chournumeric,);createtableStu(Snochar(4)primarykey,Snamechar(10),Sexchar(2),Agenumeric,BirthdaydatEtime,Classchar(10),);createtableScore(Snochar(4),Cnochar(2),primarykey(Sno,Cno),Gradenumeric,);插入数据insertintoStu(Sno,Sname,Sex,Age,Birthday,Class)insertintoStu(Sno,Sname,Sex,Age,Birthday,Class)insertintoStu(Sno,Sname,Sex,Age,Birthday,Class)男','21','1994-10-13','电科02班');insertintoStu(Sno,Sname,Sex,Age,Birthday,Class)values('3673','lrj','男','22','1993-01-30','电子02班');insertintoStu(Sno,Sname,Sex,Age,Birthday,Class)values('3694','pxj','女','22','1993-08-02','02班');insertintoScore(Sno,Cno,Grade)values('3671','08','80');insertintoScore(Sno,Cno,Grade)values('3671','09','86');insertintoScore(Sno,Cno,Grade)values('3671','10','95');insertintoScore(Sno,Cno,Grade)values('3671','11','96');insertintoScore(Sno,Cno,Grade)values('3672','08','88');insertintoScore(Sno,Cno,Grade)values('3672','09','56');insertintoScore(Sno,Cno,Grade)values('3672','10','91');insertintoScore(Sno,Cno,Grade)values('3672','11','95');insertintoScore(Sno,Cno,Grade)values('3673','08','65');insertintoScore(Sno,Cno,Grade)values('3673','09','47');insertintoScore(Sno,Cno,Grade)values('3673','10','88');insertintoScore(Sno,Cno,Grade)values('3673','11','95');insertintoScore(Sno,Cno,Grade)values('3694','08','94');insertintoScore(Sno,Cno,Grade)values('3694','09','81');insertintoScore(Sno,Cno,Grade)values('3694','10','79');insertintoScore(Sno,Cno,Grade)values('3694','11','95');查询学生出生日期SELECTSno,Sname,BirthDayFROMStu;查询所有学生SELECTSno,Class,SnameFROMStuORDE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论