东北大学计算机软件基础实验.docx

上传人:b****4 文档编号:12103542 上传时间:2023-04-17 格式:DOCX 页数:25 大小:350.74KB
下载 相关 举报
东北大学计算机软件基础实验.docx_第1页
第1页 / 共25页
东北大学计算机软件基础实验.docx_第2页
第2页 / 共25页
东北大学计算机软件基础实验.docx_第3页
第3页 / 共25页
东北大学计算机软件基础实验.docx_第4页
第4页 / 共25页
东北大学计算机软件基础实验.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

东北大学计算机软件基础实验.docx

《东北大学计算机软件基础实验.docx》由会员分享,可在线阅读,更多相关《东北大学计算机软件基础实验.docx(25页珍藏版)》请在冰豆网上搜索。

东北大学计算机软件基础实验.docx

东北大学计算机软件基础实验

计算机软件基础实验

 

第一题的程序列表如下:

#include"stdio.h"

#include"malloc.h"

#include"stdlib.h"

#definemaxsize50

typedefintdatatype;

typedefstruct

{datatypedata[maxsize];

intlast;

}sequenlist;

voidcreatlist(sequenlist*L)

{intn,i,a;

inttmp;

printf("请输入表数据的个数:

\n");

scanf("%d",&n);

printf("输入数据个数:

\n");

scanf("%d",&a);

printf("请输入数据:

\n");

for(i=0;i

{fflush(stdin);

scanf("%d",&tmp);

L->data[i]=tmp;

}

L->last=n-1;

printf("\n");

}

voidprintout(sequenlist*L)

{inti;

for(i=0;i<=L->last;i++)

{printf("data[%d]=",i);

printf("%d\n",L->data[i]);

}

}

voidsort(sequenlist*L)

{inti,j;

datatypea;

for(i=0;ilast;i++)

for(j=0;jlast-i;j++)

if(L->data[j]>L->data[j+1])

{a=L->data[j];

L->data[j]=L->data[j+1];

L->data[j+1]=a;

}

}

voidchange(sequenlist*L)

{inta,b;

inti,j;

printf("插入请输入2,删除请输1:

\n");

scanf("%d",&a);

switch(a)

{case2:

printf("请输入插入数据:

\n");break;

case1:

printf("请输入删除数据:

\n");break;

}

scanf("%d",&b);

switch(a)

{

case2:

for(i=0;ilast;i++)

if(b>L->data[i]&&bdata[i+1])

break;

for(j=L->last-i;j>i;j--)

L->data[j+1]=L->data[j];

L->data[i+1]=b;;break;

case1:

for(i=0;ilast;i++)

if(b==L->data[i])

break;

for(j=i+1;jlast-1;j++)

L->data[j-1]=L->data[j];;break;

default:

printf("请正确输入数值:

\n");

printf("插入请输入1,删除请输0:

\n");

}}

voidmain()

{sequenlist*L1;

L1=(sequenlist*)malloc(sizeof(sequenlist));

printf("第一张表:

\n");

creatlist(L1);

sort(L1);

printf("排序后的第一张表为:

\n");

printout(L1);

do{change(L1);

printf("改变后的表为:

\n");

printout(L1);

}while(!

0);}

程序运行截图:

第二题程序代码:

#include"stdio.h"

#include"iostream"

#include

#include

constintMAX_LEN=10;//字符串的长度

constintMAX_SIZE=30;//栈或队的最大元素个数

structQUEUE{//定义一个队列的结构体

intnMaxSize;//最大值

intnCount;//个数

intnFront;//头

intnRear;//尾

charszQueue[MAX_SIZE][MAX_LEN];

};

structSTACK{//定义一个栈的结构

intnMaxSize;//最大值

intnTop;//栈顶

charszStack[MAX_SIZE][MAX_LEN];

};

voidInitQueue(QUEUE*q,intnMaxSize)//队列的初始化操作

{

(*q).nMaxSize=nMaxSize;

(*q).nCount=0;

(*q).nFront=0;

(*q).nRear=0;

}

voidInQueue(QUEUE*q,char*pItem)//进入队列的函数

{

if((*q).nCount==(*q).nMaxSize)

{

printf("ThequeueisFULL!

");

}

else

{

(*q).nCount++;

strcpy((*q).szQueue[(*q).nRear],pItem);

(*q).nRear=((*q).nRear+1)%((*q).nMaxSize);

}

}

voidOutQueue(QUEUE*q,char*pItem)//出队列的函数

{

if((*q).nCount==0)

{

printf("ThequeueisEMPTY!

");

}

else

{

strcpy(pItem,(*q).szQueue[(*q).nFront]);

(*q).nCount--;

(*q).nFront=((*q).nFront+1)%((*q).nMaxSize);

}

}

voidInitStack(STACK*s,intnMaxSize)//栈的初始化操作函数

{

(*s).nMaxSize=nMaxSize;

(*s).nTop=0;

}

voidPushStack(STACK*s,char*pItem)//压栈的函数

{

if((*s).nTop==(*s).nMaxSize)

{

printf("ThestackisFULL!

");

}

else

{

(*s).nTop++;

strcpy((*s).szStack[(*s).nTop],pItem);

}

}

voidPopStack(STACK*s,char*pItem)//弹栈的函数

{

if((*s).nTop==0)

{

printf("ThestackisEMPTY!

");

}

else

{

strcpy(pItem,(*s).szStack[(*s).nTop]);

(*s).nTop--;

}

}

voidGetTopStack(STACK*s,char*pItem)//获得栈顶中操作符的函数

{

if((*s).nTop==0)

{

printf("ThestackisEMPTY!

");

}

else

{

strcpy(pItem,(*s).szStack[(*s).nTop]);

}

}

intPriority(char*op)//获得操作符的优先级

{

intnPriority=0;

switch(op[0])

{

case'^':

nPriority=3;

break;

case'*':

case'/':

nPriority=2;

break;

case'+':

case'-':

nPriority=1;

break;

case';':

nPriority=0;

}

returnnPriority;

}

voidCompute(char*num1,char*num2,char*op,char*chResult)//计算表达式的值

{

doublefNum2,fNum1;

doublefResult=0;

fNum1=atof(num1);

fNum2=atof(num2);

switch(op[0])

{

case'^':

fResult=pow(fNum1,fNum2);

break;

case'*':

fResult=fNum1*fNum2;

break;

case'/':

fResult=fNum1/fNum2;

break;

case'+':

fResult=fNum1+fNum2;

break;

case'-':

fResult=fNum1-fNum2;

break;

}

sprintf(chResult,"%.4f",fResult);//把计算结果转换成字符串

return;

}

voidmain()

{

chartemp[MAX_LEN];

charepsn[MAX_SIZE][MAX_LEN];

inti=0;

intn=0;

structQUEUEq;//声明一个队列

InitQueue(&q,MAX_SIZE);//初始化队列

structSTACKOS;//声明OS栈和NS栈

structSTACKNS;

InitStack(&OS,MAX_SIZE);//初始化堆栈

InitStack(&NS,MAX_SIZE);

//输入表达式,并放入到队列当中

printf("Pleaseinputaequationnow:

\n\n");

while

(1)

{

scanf("%s",temp);

if(!

strcmp(temp,";"))

{

InQueue(&q,";");

break;

}

strcpy(epsn[n++],temp);

InQueue(&q,temp);

}

for(i=0;i

{

printf("%s",epsn[i]);

}

//表达式求值

charx[MAX_LEN];//扫描的表达式

charop[MAX_LEN];//栈顶运算符

charnum1[MAX_LEN],num2[MAX_LEN];//两个操作数

charchResult[MAX_LEN];//运算结果

OutQueue(&q,x);//扫描表达式

PushStack(&OS,";");//压栈

while(true)

{

if(isdigit(x[0]))//是数

{

PushStack(&NS,x);//将数压栈

OutQueue(&q,x);

}

else//认为是运算符,没有考虑空格等

{

GetTopStack(&OS,op);//获得OS栈顶运算符

if(Priority(x)>Priority(op))//运算符的优先级〉栈顶运算符

{

PushStack(&OS,x);

OutQueue(&q,x);

continue;

}

if(x[0]==';'&&op[0]==';')//扫描结束

{

PopStack(&NS,chResult);

printf("=%s\n\n",chResult);

break;

}

if(Priority(x)<=Priority(op))//不大于栈顶运算符

{

PopStack(&NS,num1);

PopStack(&NS,num2);

PopStack(&OS,op);

Compute(num2,num1,op,chResult);

PushStack(&NS,chResult);

}

}

}

}

第三题:

1、创建三个表Stu、Course、Score

CREATETABLEStu(

SnoCHAR(4)PRIMARYKEY,

SnameCHAR(10),

SexCHAR(4),

AgeNUMERIC,

BirthDayDATETIME,

ClassCHAR(10),

);

CREATETABLECourse(

CnoCHAR

(2)PRIMARYKEY,

CnameCHAR(10),

ChourNUMERIC,

);

CREATETABLEScore(

SnoCHAR(4),

CnoCHAR

(2),

PRIMARYKEY(Sno,Cno),

GradeNUMERIC,

);

2、向Stu表中插入数据

/*插入数据*/

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0101','张强','男','20','1994-02-20','自动化01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0102','李红','女','20','1994-08-10','自动化01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0103','王涛','男','21','1993-05-18','自动化01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0104','刘丽','女','19','1995-03-05','自动化02班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0105','孙东','男','21','1993-12-17','自动化02班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0106','王平','男','22','1992-11-30','自动化02班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0201','欧阳燕','女','20','1994-04-11','电子01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0202','杨锐','男','20','1994-05-13','电子01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0203','刘艳','女','18','1996-01-21','电子01班');

InsertintoStu(Sno,Sname,Sex,Age,BirthDay,Class)

values('0204','周宇','男','20','1994-07-10','电子01班');

3、导入课程数据

 

InsertintoScore(Sno,Cno,Grade)

values('0101','01','87');

InsertintoScore(Sno,Cno,Grade)

values('0102','01','90');

InsertintoScore(Sno,Cno,Grade)

values('0103','01','79');

InsertintoScore(Sno,Cno,Grade)

values('0104','01','89');

InsertintoScore(Sno,Cno,Grade)

values('0105','01','58');

InsertintoScore(Sno,Cno,Grade)

values('0106','01','77');

InsertintoScore(Sno,Cno,Grade)

values('0201','01','95');

InsertintoScore(Sno,Cno,Grade)

values('0202','01','80');

InsertintoScore(Sno,Cno,Grade)

values('0203','01','76');

InsertintoScore(Sno,Cno,Grade)

values('0204','01','70');

InsertintoScore(Sno,Cno,Grade)

values('0101','02','91');

InsertintoScore(Sno,Cno,Grade)

values('0102','02','88');

InsertintoScore(Sno,Cno,Grade)

values('0103','02','75');

InsertintoScore(Sno,Cno,Grade)

values('0104','02','91');

InsertintoScore(Sno,Cno,Grade)

values('0105','02','76');

InsertintoScore(Sno,Cno,Grade)

values('0106','02','76');

InsertintoScore(Sno,Cno,Grade)

values('0201','02','90');

InsertintoScore(Sno,Cno,Grade)

values('0202','02','84');

InsertintoScore(Sno,Cno,Grade)

values('0203','02','83');

InsertintoScore(Sno,Cno,Grade)

values('0204','02','57');

2.

SelectSname,Cname,GradefromStu,Course,Score

whereStu.Sno=Score.SnoandCourse.Cno=Score.Cno;

SelectdistinctStu.Sno,Sname,ClassfromStu,Score

whereStu.Sno=Score.SnoandGrade<60;

SelectSname,avg(Grade)PJCJ,sum(Grade)ZCJfromStu,ScorewhereScore.Sno=Stu.SnogroupbyStu.Sname;

SelectSname,ClassfromStuwhereexists(Select*fromScorewhereStu.Sno=Score.SnoandScore.Cno='01'andScore.Grade>=85)

andexists(Select*fromScorewhereStu.Sno=Score.SnoandScore.Cno='02'andScore.Grade>=85)

UpdateCoursesetCname='网络技术'whereCno='01';

UpdateStusetSname='zhangxu',Sex='m',age='20'whereSno='0101';

UpdateScoresetGrade=60whereSnoin(SelectSnofromStuwhere

Sex='男')andGradebetween55and59;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1