东北大学计算机软件基础实验文档格式.docx
《东北大学计算机软件基础实验文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学计算机软件基础实验文档格式.docx(25页珍藏版)》请在冰点文库上搜索。
![东北大学计算机软件基础实验文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/769cf0fe-57e9-489d-8118-dfb566ac29e0/769cf0fe-57e9-489d-8118-dfb566ac29e01.gif)
{inti;
=L->
last;
{printf("
data[%d]="
i);
%d\n"
L->
data[i]);
voidsort(sequenlist*L)
{inti,j;
datatypea;
for(j=0;
j<
last-i;
j++)
if(L->
data[j]>
data[j+1])
{a=L->
data[j];
data[j]=L->
data[j+1];
data[j+1]=a;
voidchange(sequenlist*L)
{inta,b;
inti,j;
插入请输入2,删除请输1:
switch(a)
{case2:
printf("
请输入插入数据:
break;
case1:
请输入删除数据:
b);
{
case2:
for(i=0;
if(b>
data[i]&
&
b<
data[i+1])
break;
for(j=L->
j>
i;
j--)
data[j+1]=L->
data[i+1]=b;
;
case1:
if(b==L->
data[i])
for(j=i+1;
last-1;
data[j-1]=L->
;
default:
请正确输入数值:
插入请输入1,删除请输0:
}}
voidmain()
{sequenlist*L1;
L1=(sequenlist*)malloc(sizeof(sequenlist));
第一张表:
creatlist(L1);
sort(L1);
排序后的第一张表为:
printout(L1);
do{change(L1);
改变后的表为:
}while(!
0);
程序运行截图:
第二题程序代码:
iostream"
#include<
conio.h>
complex>
constintMAX_LEN=10;
//字符串的长度
constintMAX_SIZE=30;
//栈或队的最大元素个数
structQUEUE{//定义一个队列的结构体
intnMaxSize;
//最大值
intnCount;
//个数
intnFront;
//头
intnRear;
//尾
charszQueue[MAX_SIZE][MAX_LEN];
};
structSTACK{//定义一个栈的结构
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)
ThequeueisEMPTY!
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)
ThestackisFULL!
(*s).nTop++;
strcpy((*s).szStack[(*s).nTop],pItem);
voidPopStack(STACK*s,char*pItem)//弹栈的函数
if((*s).nTop==0)
ThestackisEMPTY!
strcpy(pItem,(*s).szStack[(*s).nTop]);
(*s).nTop--;
voidGetTopStack(STACK*s,char*pItem)//获得栈顶中操作符的函数
intPriority(char*op)//获得操作符的优先级
intnPriority=0;
switch(op[0])
case'
^'
:
nPriority=3;
break;
*'
/'
nPriority=2;
+'
-'
nPriority=1;
'
nPriority=0;
returnnPriority;
voidCompute(char*num1,char*num2,char*op,char*chResult)//计算表达式的值
doublefNum2,fNum1;
doublefResult=0;
fNum1=atof(num1);
fNum2=atof(num2);
fResult=pow(fNum1,fNum2);
fResult=fNum1*fNum2;
fResult=fNum1/fNum2;
fResult=fNum1+fNum2;
fResult=fNum1-fNum2;
sprintf(chResult,"
%.4f"
fResult);
//把计算结果转换成字符串
return;
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);
//初始化堆栈
NS,MAX_SIZE);
//输入表达式,并放入到队列当中
Pleaseinputaequationnow:
\n\n"
while
(1)
scanf("
%s"
temp);
if(!
strcmp(temp,"
))
{
InQueue(&
q,"
break;
}
strcpy(epsn[n++],temp);
InQueue(&
q,temp);
n;
i++)//显示表达式
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(&
continue;
}
if(x[0]=='
&
op[0]=='
)//扫描结束
PopStack(&
NS,chResult);
printf("
=%s\n\n"
chResult);
break;
if(Priority(x)<
=Priority(op))//不大于栈顶运算符
NS,num1);
NS,num2);
OS,op);
Compute(num2,num1,op,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班'
0102'
李红'
女'
1994-08-10'
0103'
王涛'
21'
1993-05-18'
0104'
刘丽'
19'
1995-03-05'
自动化02班'
0105'
孙东'
1993-12-17'
0106'
王平'
22'
1992-11-30'
0201'
欧阳燕'
1994-04-11'
电子01班'
0202'
杨锐'
1994-05-13'
0203'
刘艳'
18'
1996-01-21'
0204'
周宇'
1994-07-10'
3、导入课程数据
InsertintoScore(Sno,Cno,Grade)
01'
87'
90'
79'
89'
58'
77'
95'
80'
76'
70'
02'
91'
88'
75'
84'
83'
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='
andScore.Grade>
=85)
andexists(Select*fromScorewhereStu.Sno=Score.SnoandScore.Cno='
=85)
UpdateCoursesetCname='
网络技术'
whereCno='
UpdateStusetSname='
zhangxu'
Sex='
m'
age='
whereSno='
UpdateScoresetGrade=60whereSnoin(SelectSnofromStuwhere
Sex='
)andGradebetween55and59;