计算机软件实验报告 - 图文
更新时间:2024-07-11 11:48:01 阅读量: 综合文库 文档下载
- 计算机软件实验报告终结推荐度:
- 相关推荐
计算机软件基础实验
实验一:
键盘输入一组无序数据,添加到线性表中;排序线性表并输出排序结果;键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;键盘输入一个数,并从线性表中删除相应的数据,输出结果。
程序清单:
// 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
莆田民间节日的奇特习俗08-11
民间文学2017西南大学答案 - 图文03-15
四年级经典诗文竞赛试题04-21
高中14篇必考课文理解默写(情景默写)2016整理版及答案 - 图文03-26
《绿色蝈蝈》赵海容04-29
购物大作战作文600字06-28
小学数学解题常用的方法08-16
新课程中的教师角色定位03-26
初二物理总结08-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 图文
- 计算机
- 报告
- 软件
- 中国罐装茶行业市场前景分析预测年度报告(目录)
- 新人教版七年级下册数学教案:统计调查(一)
- 四年级下期春季课外训练营(第一周)
- 学生选课系统1
- 高中地理 - 核心考点 选修3 旅游地理
- 电路板的刻蚀及废液的处理
- 北师大版五年级语文上册期末测试卷(附答案)(3)
- -大学生职业规划 - 图文
- 个人理财任务1+2+3(最新已答)
- 专升本语文作文赏析
- 户外装备知识大全
- 苏教版选修《和晋陵陆丞早春游望》教案
- 勤政为民的措施
- 高考物理一轮复习第四章曲线运动万有引力与航天学案
- 汽轮机试题1
- 中国经济2013年展望 - 图文
- 2009新东方概率基础讲义
- 物业秩序维护员服务礼仪训练手册
- 6.一级注册建筑师考试 建筑材料与构造(2013)模板
- 苏教版小学二年级语文练习题00