计算机软件实验报告 - 图文
更新时间:2024-07-11 11:48:01 阅读量:1 综合文库 文档下载
- 计算机软件实验报告终结推荐度:
- 相关推荐
计算机软件基础实验
实验一:
键盘输入一组无序数据,添加到线性表中;排序线性表并输出排序结果;键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;键盘输入一个数,并从线性表中删除相应的数据,输出结果。
程序清单:
// Experiment1.cpp : 定义控制台应用程序的入口点。 //#include \#include \#include
// 程序实现有各种方法,这里给出一个实例。
// 定义一个线性表
const int nMaxSize = 15; // 最大值 int nLen = 0; // 表中元素个数 int nLinearList[nMaxSize];
// 定义操作 void LSort(); void LOut();
void LInsert(int n); void LDelete(int n);
void main() { // 输入数据并放入线性表中 printf(\// std::cout << \ int nIn = 0; for (int i = 0; i <= 9; i++) { scanf(\// std::cin >> nIn; nLinearList[i] = nIn; nLen++; } LSort(); // 排序线性表 LOut(); // 输出结果 printf(\ scanf(\ LInsert(nIn); // 输入一个数字,并插入到线性表中 LOut();
printf(\ scanf(\ LDelete(nIn); // 输入一个数字,并从线性表中删除 LOut(); char chTmp; printf(\ chTmp = getch(); //return 0; }
void LSort() // 冒泡排序,由大到小 { int j,F,k,M; F=(nLen-1); while(F<16) { k=F-1;F=16; for(j=0;j<=k;j++) { if(nLinearList[j]
void LOut() { printf( \ for (int i = 0; i < nLen; i++) { printf( \ } printf( \}
void LInsert(int n) { int i,j; i=0; while (i
{ if (nLinearList[i]<=n) { nLen++; for (j=nLen;j>=i;j--) nLinearList[j+1]=nLinearList[j]; nLinearList[i]=n; break; } i++; } }
void LDelete(int n) { int i,j; for(i=0;i
运行结果:
实验二:键盘输入算数表达式,并放入队列当中;应用栈的概念设计表达式求值算法;输出表达式求值结果;
程序清单:
// Experiment2.cpp : 定义控制台应用程序的入口点。
//#include \#include \#include \#include
// 程序实现有各种方法,这里给出一个实例。
const int MAX_LEN = 10; // 字符串的长度 const int MAX_SIZE = 30; // 栈或队的最大元素个数 char pitem[10] = {'\\0'}; int numbers=0;
// 定义一个队列的结构 struct QUEUE { int nMaxSize; // 最大值 int nCount; // 个数 int nFront; // 头 int nRear; // 尾 char szQueue[MAX_SIZE][MAX_LEN]; };
//定义一个栈的结构 struct STACK { int nMaxSize; // 最大值 int nTop; // 栈顶 char szStack[MAX_SIZE][MAX_LEN]; };
// 队列的操作
void InitQueue(QUEUE *q,int nMaxSize); int InQueue(QUEUE *q, char *pItem); int OutQueue(QUEUE *q, char *pItem);
//栈的操作
void InitStack(STACK *s,int nMaxSize);
int PushStack(STACK *s, char *pItem); int PopStack(STACK *s, char *pItem);
void GetTopStack(STACK *s, char *pItem);
int Priority(char *op); // 获得操作符的优先级
void Compute(char *num1, char *num2, char *op, char *chResult);
int isdigit(char isnum);
int main() { // 声明一个队列 struct QUEUE que; InitQueue(&que,MAX_SIZE); // 声明OS栈和NS栈 struct STACK OS,NS; InitStack(&OS,MAX_SIZE); InitStack(&NS,MAX_SIZE); // 输入表达式,并放入到队列当中 printf(\ do { for(int j=0;j<10;j++) pitem[j] = '\\0'; gets(pitem); InQueue(&que, pitem); }while(pitem[0]!=';'); // 显示表达式 do { printf(\ numbers++; }while(que.szQueue[numbers][0]!=';'); // 表达式求值 char x[MAX_LEN]; // 扫描的表达式 char op[MAX_LEN]; // 栈顶运算符 char num1[MAX_LEN], num2[MAX_LEN]; // 两个操作数 char chResult[MAX_LEN]; // 运算结果 OutQueue(&que, x); // 扫描表达式 PushStack(&OS,\ // ;压栈 while (1) { if (isdigit(x[0])) // 是数 PushStack(&NS,x); // 数字压栈
// 计算表达式的值
else // 认为是运算符,没有考虑空格等 { GetTopStack(&OS, op); // 获得OS栈顶运算符 if (Priority(x) > Priority(op)) // 运算符的优先级〉栈顶运算符 PushStack(&OS,x); // 高优先级运算符压栈 if (x[0] == ';' && op[0] == ';') // 扫描结束 break; if (Priority(x) <= Priority(op)) // 不大于栈顶运算符 { PopStack(&OS,op); PopStack(&NS, num2); PopStack(&NS, num1); Compute(num1,num2,op,chResult); // 计算表达式的值 PushStack(&NS,chResult); // 数字压栈 continue; } } OutQueue(&que, x); // 扫描表达式 } printf(\ system(\ return 0; }
void InitQueue(QUEUE *q,int nMaxSize) { q->nMaxSize = nMaxSize; q->nCount = 0; q->nFront = 0; q->nRear = 0; for(int i=0;i<30;i++) for(int j=0;j<10;j++) q->szQueue[i][j] = '\\0'; }
int InQueue(QUEUE *q, char *pItem) { if(q->nFront > q->nMaxSize) { printf(\列队已满,不能插入!\\n\ return 0; } else { strcpy(q->szQueue[q->nFront],pItem);
q->nFront++; return 1; } }
int OutQueue(QUEUE *q, char *pItem) { if(q->nRear > q->nFront) { printf(\列队已空,不能出队!\\n\ return 0; } else { strcpy(pItem,q->szQueue[q->nRear]); q->nRear++; return 1; } }
void InitStack(STACK *s,int nMaxSize) { s->nMaxSize = nMaxSize; s->nTop = 0; for(int i=0;i<30;i++) for(int j=0;j<10;j++) s->szStack[i][j] = '\\0'; }
int PushStack(STACK *s, char *pItem) { if(s->nTop > s->nMaxSize) { printf(\栈已满,不能插入!\\n\ return 0; } else { strcpy(s->szStack[s->nTop],pItem); s->nTop++; return 1; } }
int PopStack(STACK *s, char *pItem) { if(s->nTop < 0)
{ printf(\列队已空,不能出队!\\n\ return 0; } else { strcpy(pItem,s->szStack[s->nTop-1]); s->nTop--; return 1; } }
void GetTopStack(STACK *s, char *pItem) { strcpy(pItem,s->szStack[s->nTop-1]); }
int isdigit(char isnum) { switch(isnum) { case '^': case '*': case '/': case '+': case '-': case ';': return 0; default: return 1; } }
int Priority(char *op ) { int nPriority = 0; switch (op[0]) { case '^': nPriority = 3; break; case '*': case '/': nPriority = 2; break; case '+':
case '-': nPriority = 1; break; case ';': nPriority = 0; } return nPriority; }
void Compute(char *num1, char *num2, char *op, char *chResult) { double fNum1,fNum2; double fResult = 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,\//把计算的结果转化为字符串 return; }
运行结果:
实验三:查询学生出生日期(Sno, Sname, BirthDay);按学号顺序查询一个班级的所有学生(Class, Sname);列出学生选择各门课程的成绩(Sname, Cname,
Grade) ;列出有过不及格成绩的学生名单(Sno, Sname, Class);求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);查找各科成绩都 >= 85 分的学生(Sname, Class);将课程号为“01”的课程名称修改为“软件技术”;修改一名学生的姓名、性别、年龄;将成绩为55~59分的男生的成绩修改为60分;删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩);删除一个班级的所有学生;删除所有数据表和数据库。 程序清单及结果: 1.创建数据库 MyDB
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'
CREATE DATABASE MYDB; GO
2.创建对象:Stu,Course,Score。
CREATE TABLE Stu( );
CREATE TABLE Course( );
CREATE TABLE Score( );
Sno CHAR(4), Cno CHAR(2),
PRIMARY KEY(Sno,Cno), Grade NUMERIC,
Cno CHAR(2)PRIMARY KEY, Cname CHAR(10), Chour NUMERIC,
Sno CHAR(4)PRIMARY KEY, Sname CHAR(10), Sex CHAR(2), Age NUMERIC, BirthDay DATETIME, Class CHAR(10),
3.插入信息
Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class) values ('2561','王五','wm','10','1990-03-30','电子1002'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class) values ('2562', '李四','m','21','1992-03-23','电子1001'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class) values ('2563','陈七','wm','25','1987-05-14','电子1002'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class) values ('2564','赵八','m','20','1993-12-24','电子1002'); Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Class)
values ('2565','陆游','m','20','1978-12-5','电子1002'); Select Sno,Sname,Sex,Age,BirthDay,Class from Stu;
Insert into Course (Cno,Cname,Chour) values ('01','语文','32');
Insert into Course (Cno,Cname,Chour) values ('02','数学','64');
Insert into Course (Cno,Cname,Chour) values ('03','英语','40');
Select Cno,Cname,Chour from Course;
Insert into Score (Sno,Cno,Grade) values ('2567','01','97');
Insert into Score (Sno,Cno,Grade) values ('2568','01','54');
Insert into Score (Sno,Cno,Grade) values ('2569','01','56');
Insert into Score (Sno,Cno,Grade) values ('2560','01','88');
Insert into Score (Sno,Cno,Grade) values ('2561','02','87');
Insert into Score (Sno,Cno,Grade) values ('2562','03','79');
Insert into Score (Sno,Cno,Grade) values ('2563','02','68');
Insert into Score (Sno,Cno,Grade) values ('2564','03','58');
Insert into Score (Sno,Cno,Grade) values ('2565','03','98');
Select Sno,Cno,Grade from Score;
1.查询学生出生日期(Sno, Sname, BirthDay);
Select Sno,Sname,BirthDay from Stu;
2.按学号顺序查询一个班级的所有学生(Class, Sname);
Select Class,Sname from Stu order by Sno;
3.列出学生选择各门课程的成绩(Sname, Cname, Grade) ;
Select Sname,Cname,Grade from Stu,Course,Score where Stu.Sno=Score.Sno and Course.Cno=Score.Cno;
4.列出有过不及格成绩的学生名单(Sno, Sname, Class);
Select distinct Stu.Sno,Sname,Class from Stu,Score where Stu.Sno=Score.Sno and Grade<60;
5.求学生的平均成绩和总成绩(Sname, 数学, 英语);
Select Sname,avg(Grade) 数学,sum(Grade) 英语 from Stu,Score where Score.Sno=Stu.Sno group by Stu.Sname;
6. 查找各科成绩都 >= 85 分的学生(Sname, Class);
Select Sname,Class from Stu where exists (Select * from Score where Stu.Sno=Score.Sno and Score.Cno='01' and Score.Grade>=85)
and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='02' and Score.Grade>=85 ) and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='03' and Score.Grade>=85 ) ;
7. 将课程号为“01”的课程名称修改为“软件技术”
Update Course set Cname='软件技术' where Cno='01';
Select Cno,Cname from Course;
8.修改一名学生的姓名、性别、年龄;
Update Stu set Sname='张三',Sex='m',age='22'where Sno='2561'; Select Sno,Sname,Sex,age from Stu order by Sno;
9.将成绩为55~59分的男生的成绩修改为60分
Update Score set Grade=60 where Sno in(Select Sno from Stu where Sex='m') and Grade between 55 and 59;
Select Sname,Cname,Grade from Stu,Course,Score where Stu.Sno=Score.Sno and Course.Cno=Score.Cno;
10.删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩)
Delete Stu where Sno in(select Sno from Stu where BirthDay < '1980-01-01' or BirthDay>'1990-12-31') ;
Select Sname,Cname,Grade,BirthDay from Stu,Course,Score where Stu.Sno=Score.Sno and Course.Cno=Score.Cno;
11.删除一个班级的所有学生
Delete from Stu where Class='电子1001'; Select Class,Sname from Stu order by Sno;
12. 删除所有数据表和数据库 Drop database MYDB;






正在阅读:
计算机软件实验报告 - 图文07-11
2015·中考世界历史·第14课:冷战中的对峙04-23
测试技术复习题和答案12-06
武汉市部分重点中学2014-2015学年度上学期高一期中考试06-03
风险代理合同的有效性09-17
无名的小草作文500字06-14
智能化住宅防盗防火报警系统毕业设计06-16
消防概 况 登 记112-25
针对不良路基的施工探讨07-19
经典财务案例分析——金顶06-10
- 高一物理牛顿运动定律全套学习学案
- 水处理一级反渗透加还原剂亚硫酸氢钠后为什么ORP会升高
- 毕业设计(论文)-正文董家口 - 图文
- 荣盛酒店经营管理公司录用通知及入职承诺书II
- 第二讲 大学英语四级快速阅读技巧
- 质量管理体系文件(2015年委托第三方医药物流配送企业专用版本)
- 214071收款办法
- 苏轼对《文选》选文的评价
- 《诊断学基础B》1-8作业
- 广东省东莞市高一数学下学期期末教学质量检查试题
- 海南电网公司VIS推广应用管理办法
- 红星照耀中国习题
- 苏教版小学语文六年级上册期末复习资料之生字词整理
- 局域网组建与应用—王向东
- 税务稽查内部管理文书样式
- 环保社会实践调查表
- 九年级思品第一单元复习
- 2016年全国注册咨询工程师继续教育公路路线设计规范试卷
- 毕业设计-青岛港董家口港区防波堤设计
- 撞背锻炼方法与益处
- 实验
- 图文
- 计算机
- 报告
- 软件
- 中国罐装茶行业市场前景分析预测年度报告(目录)
- 新人教版七年级下册数学教案:统计调查(一)
- 四年级下期春季课外训练营(第一周)
- 学生选课系统1
- 高中地理 - 核心考点 选修3 旅游地理
- 电路板的刻蚀及废液的处理
- 北师大版五年级语文上册期末测试卷(附答案)(3)
- -大学生职业规划 - 图文
- 个人理财任务1+2+3(最新已答)
- 专升本语文作文赏析
- 户外装备知识大全
- 苏教版选修《和晋陵陆丞早春游望》教案
- 勤政为民的措施
- 高考物理一轮复习第四章曲线运动万有引力与航天学案
- 汽轮机试题1
- 中国经济2013年展望 - 图文
- 2009新东方概率基础讲义
- 物业秩序维护员服务礼仪训练手册
- 6.一级注册建筑师考试 建筑材料与构造(2013)模板
- 苏教版小学二年级语文练习题00