软基实验第二次上机
第二次算法上机-POJ1050 1080 1141

第一次算法实验报告POJ1050 To the Max1)题目:Time Limit:1000MS Memory Limit:10000KDescriptionGiven a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. In this problem the sub-rectangle with the largest sum is referred to as the maximal sub-rectangle.As an example, the maximal sub-rectangle of the array:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2is in the lower left corner:9 2-4 1-1 8and has a sum of 15.InputThe input consists of an N * N array of integers. The input begins with a single positive integer N on a line by itself, indicating the size of the square two-dimensional array. This is followed by N^2 integers separated by whitespace (spaces and newlines). These are the N^2 integers of the array, presented in row-major order. That is, all numbers in the first row, left to right, then all numbers in the second row, left to right, etc. N may be as large as 100. The numbers in the array will be in the range [-127,127].OutputOutput the sum of the maximal sub-rectangle.Sample Input40 -2 -7 0 9 2 -6 2-4 1 -4 1 -18 0 -2Sample Output152)解题分析:对于单列数,求任意连续若干个数和的最大值。
12级实验二上机题总结

二、上机内容
1. 教材P54页习题3中第三题编程题中第(2)小题。 输入三 角形的三条边长,求三角形的面积。(若三角形的三边为a、b、 c ,则面积=sqrt( s(s-a)(s-b)(s-c) ),而s=(a+b+c)/2 ) 源程序: 运行结果(至少有一组调试、运行结果) 2. 实践教程P36页中第6题编程题中第(1)小题。 (实验报告要求抄题) 源程序 运行结果(至少有一组调试、运行结果) 3. 实践教程P36页中第6题编程题中第(2)小题。 (实验报告要求抄题) 源程序 运行结果(至少有一组调试、运行结果) 4. 实践教程P35~36页中第5题程序填空题中第(1)、(2)、 (3)小题。
4-1.实践教程P35页中第5题程序填空题中第(1)小题。下面 的程序是将从键盘输入的大写字母转换为小写,将小写字母转 换为大写字母。在C程序中补充完整以下程序,并观察运行结 果。 #include <stdio.h> void main() { char c; scanf("%c",&c);
c=(c>=65&&c<=90)
//printf("%d/%d=%d\t%d%%%d=%d\n",x,y,x/y,x,y,x%y);
}
4-3 实践教程P36页中第5题程序填空题中第(3)小题。 下面程序是不用第三个变量,实现将两个数进行对调的操 作。请选择填空。
#include<stdio.h> void main( ) { int a,b; printf("Enter a and b:"); scanf("%d%d",&a,&b); printf("a=%d b=%d\n",a,b); a= ① ;b= ② ;a= ③ ; printf("a=%d b=%d\n",a,b); }
南京航空航天大学软件技术基础数据结构上机实验报告

南京航空航天大学计算机软件技术基础实践实验报告课程名称:计算机软件技术基础专题:数据结构上机实践姓名:xxx学号:xxx学院:自动化学院专业:自动化班级:xxx2013年10月目录(程序和流程图)实验一------------------------------------4第一种算法---------------------------4第二种算法---------------------------7实验二------------------------------------9线性表------------------------------9单链表------------------------------11顺序栈------------------------------14链栈---------------------------------15链列---------------------------------18实验三------------------------------------20二叉树----------------------------20实验四------------------------------------22顺序查找------------------------22二分查找------------------------24插入排序------------------------26选择排序------------------------28冒泡排序------------------------30大作业------------------------------------32通讯录---------------------------32一、实验一实验对象:顺序表。
实验目的:实现两个顺序表的合并。
实验要求:将共同拥有的元素只存其一。
思路清晰,编程正确,并将数据元素显示出来。
计算机科学与技术第2次上机实验

哈尔滨工程大学《程序设计基础》实验报告基础实践二姓名:麦豆班级:学号:实验时间: 2018 年 4 月19 日哈尔滨工程大学计算机基础课程教学中心实验题目1:输入一个整数,如果输入的数是偶数或者负数,则输出其平方,否则输出其一半的值设计思想: 将数用2取余是否为0判断奇偶,与0判断大小判断正负,调用库函数来实现平方,在if语句中用到逻辑运算符||,同时在将奇数变为一半时用到了强制类型转换.实验代码及注释:#include <stdio.h>#include <stdlib.h>#include <math.h>//输入一个整数,如果输入的数是偶数或者负数,则输出其平方,否则输出其一半的值int main(){double y=2,z ;//二次方int x;//输入的数printf("请输入一个数:");scanf("%d",&x);if(((x%2)==0) || (x<0)) //利用if语句,将数用2取余是否为0判断奇偶,与0判断大小判断正负{x=(int)pow((int)x , y);//调用库函数来实现平方printf("%d",x);}else{ z=(double)x/2;//将x值强制转换赋给double型变量z printf("%.1lf",z);}return 0;}验证与结论:总结与心得体会:真正明白了强制类型转换不改变变量类型,仅仅给变其数值的类型.同时对逻辑运算符有了更深的认识,另外知道了pow函数的两个变量均为double型int是不适用的实验题目2:编写程序,计算购贷款,请输入购货金额,输出实际付款金额.购物折扣率如下:购货金额<=500元不打折500元<购货金额<=1000元9折1000元<购货金额8折分别用if语句,switch语句编程.设计思想:在用switch语句编写时先用if语句来对switch变量c赋值,再用switch来进行运算在用if语句编写时直接用if来对输入的数进行判断选择相应的运算语句来得到最后的结果.Switch语句实验代码及注释:#include <stdio.h>#include <stdlib.h>//编写程序,计算购贷款,请输入购货金额,输出实际付款金额int main(){int c;//switch语句变量double money ;//定义变量类型printf("请输入购货金额:");scanf("%lf",&money);if (money<=500)//用if语句对c赋值{c=1;}else if(money<=1000){c=2;}else{c=3;}switch (c){case 1:break ;case 2:money = money*0.9;break;case 3:money = money*0.8;break;default:printf("输入错误");}printf("实际付款金额为:%.2f\n",money);return 0;}If语句实验代码及注释:#include <stdio.h>#include <stdlib.h>int main(){double money ;//定义变量类型printf("请输入购货金额:");scanf("%lf",&money);if(money<0) //用if对值范围进行判断{printf("金额不能为负数!");}else if (money<=500&&money>=0)printf("实际付款金额为:%.2f\n",money); else if(money<=1000){money=money*0.9;printf("实际付款金额为:%.2f\n",money); }else{money=money*0.8;printf("实际付款金额为:%.2f\n",money);}return 0;}验证与结论:总结与心得体会:If与switch语句各有优劣,switch语句可以提高运算速度,但相应也有一些缺点,尤其对变量c的值,有时不得不借助if语句,反而繁琐运算速度变慢实验题目3:输入四个整数,求其前两个数中较小的数与后两个数中较大的数之和.设计思想:定义6个变量,其中两个变量为较小数与较大数,将第一个数暂时存储在最小值中,将第三个数暂时存储在最大值中,利用if语句判读若第一个数不为最小值重新赋值,若第三个数不为最大值重新赋值,得到前两个数中最小值和后两个数中最大值.最后对两数求和.实验代码及注释:#include <stdio.h>#include <stdlib.h>int main(){int a,b,c,d,minnumber,maxnumber,sum;//定义整型变量printf("请输入四个数:");scanf("%d%d%d%d",&a,&b,&c,&d);minnumber=a;//将第一个数暂时存储在最小值中maxnumber=c;//将第三个数暂时存储在最大值中if(a>b){minnumber=b;//第一个数不为最小值重新赋值}if(c<d){maxnumber=d;//第三个数不为最大值重新赋值}sum=minnumber+maxnumber;printf("前两个最小数与后两个最大数之和为%d",sum);return 0;}验证与结论:总结与心得体会:在比较两数大小时通常会用中间变量来存储过渡,这样会容易交换大小值,当涉及到三个以上数的比较视仍可用这种思想,在比较大小中if语句是必不可少的.实验题目4:某个服装展厅宣布表所示的物品季节性打折.请使用switch和if语句编写一个程序,计算某顾客应付的款项.设计思想:将输入值除以100,再强制转换为int型得到c值,在此之前用if语句将边界值提前去掉,防止对switch语句造成干扰,同时使用if 来检测非法值的输入,运用goto语句跳转使其重新输入.实验代码及注释:#include <stdio.h>#include <stdlib.h>int main(){double moneya,moneyb,summoney;//机加工制品总额,手工制品总额int c;//switch变量quit :;//输入非法值让其重新输入数据用goto跳转到此printf("请输入机加工制品总金额和手工制品总金额:");scanf("%lf%lf",&moneya,&moneyb);summoney=moneya+moneyb;//计算总金额c=(int)(summoney/100);//得到switch语句变量cif(summoney<0){printf("数据错误!\n");goto quit;//输入非法值故让其重新输入数据用goto跳转到quit位置注意goto语句跳转位置}else if(summoney==100)//将边界值用if语句处理,switch语句无法处理{summoney=moneya+moneyb*0.95;}else if(summoney==200){summoney=moneya*0.95+moneyb*0.925;}else if(summoney==300){summoney=moneya*0.925+moneyb*0.9;}else{switch (c)//边界值去掉用switch{case 0:summoney=moneya+moneyb*0.95;break;case 1:summoney=moneya*0.95+moneyb*0.925;break;case 2:summoney=moneya*0.925+moneyb*0.9;break;default :summoney=moneya*0.9+moneyb*0.85;}}printf("顾客应付的款项为:%.2lf(元)\n",summoney);return 0;}验证与结论:总结与心得体会:switch在边界值处理上比较麻烦,有时容易出错,需要注意,一般要与if搭配使用,但switch语句提高了运行速度,goto语句慎用实验题目5:一个电表按照如下的比率计费:前200度电:每度0.8元;后100度电:每度0.9元;超过300度电:每度1元;所有用户都是按照最少100元进行收费.如果总费用大于400元还要加收总数的15%的费用.请编写一个程序,读取用户名和用电量,并按用户名显示应收费.设计思想:声明长整型变量name,double型变量electric_quantity,money,用if语句来进行判断电量electric_quantity范围,最后对费用总数与400进行判断,输出用户名与费用实验代码及注释:#include <stdio.h>#include <stdlib.h>int main(){double electric_quantity,money;long int name;printf("请输入用户名和电量:");scanf("%ld%lf",&name,&electric_quantity);if(electric_quantity<=200){money=electric_quantity*0.8;}else if (electric_quantity<=300){money=200*0.8+(electric_quantity-200)*0.9;}else{money=(electric_quantity-300)*1+200*0.8+100*0.9;}if (money<=100)//对电价进行判断至少为100,大于400加收总数的15%{money=100;}else if (money>=400){money=money+money*0.15;}printf("用户名:%ld,应收费为:%.2lf",name,money);return 0;}验证与结论:总结与心得体会:长整型需要用%ld来输出,同时对if的使用更加熟练.。
第二次上机内容及详解

2015-1-13
4
3.计算一个数的平方和立方。
可以直接写x*x, x*x*x 也可以用幂函数 pow(x,2), pow(x,3) 需要包含头文件#include<math.h>
2015-1-13
5
4.输入4个数,计算平均值。
考虑数的类型,整型或浮点型 考虑平均值的类型:浮点型 同样注意输入格式
C语言程序设计
上机实验二
2015-1-13
1
要求
完成第二章编程练习 下次上机课时交书面作业
2015-1-13
2
1.输出|-6|+16.3*5.4
调用求绝对值函数 abs(-6),需要包含头文 件#include<math.h> 注意输出格式
printf(“%f”, 浮点型变量);
2015-1-13
7
2015-1-13
6
5.输入5位正整数,求出的个、十、百、千、 万各位,并打印各位之和。
用%运算符得到个位数:x % 10 先整除10后再用%运算符得到十位数: (x /10) % 10 先整除100后再用%运算符得到百位数: (x /100) % 10 ……(也可以有更好的求解方法) 参考教材P72 例3.较大者的开方
求开方函数 sqrt(x),需要包含头文件 #include<math.h> 注意输入格式
scanf(“%d%d”, &a, &b);
取两数中大者,可以用三目运算符
max = a > b ? a : b; 当a>b成立时,取a的值,不成立则取b值。
长沙理工大学第2次上机报告

(1)求它们的乘积C。
(2)将矩阵C的右下角3*2子矩阵赋给D。
(3)查看MATLAB工作空间的使用情况。
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
提示:利用冒号表达式,再利用find和length函数。
(2)建立一个字符串向量,删除其中的大写字母。
提示:利用find函数和空矩阵。
MATLAB实验报告
实验名称:MATLAB基本功能练习____
班级XXXX
学号XXXX
姓名XXXX
实验日期xx年xx月xx日星期五
一、实验目的
1.熟练掌握MATLAB的启动与退出
2.熟悉MATLAB的命令窗口
3.熟悉MATLAB的常用命令
4.熟悉MATLAB的帮助系统
二、实验内容
1.求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存变量。
(1)
(2) ,其中
(3) ,a=-3.0,-2.9,-2.8,……2.8,2.9,3.0.
(4) ,其中t=0:0.5:2.5
2.已知
,
求下列表达式的值:
(1)A+6*B和A-B+I
(2)A*B和A.*B
(3)A^3和A.^3
(4)A/B和B\A
(5)[A,B]和[A([1,3],:);B^2]
3.设有矩阵A和B
三、实验小结
本次实验比上次要得心应手的多,老鼓励同学之间互相讨论,效果很明显。但是上节课的有些知识点因为没有复习而遗忘了,针对于这类课,应该多操作,多实践才能牢牢掌握知识点。
最新上机实验报告二

最新上机实验报告二实验目的:1. 熟悉计算机上机操作环境,掌握基本的软件使用技巧。
2. 学习并实践编程基础,增强逻辑思维和问题解决能力。
3. 通过实验加深对理论知识的理解,提高实验操作技能。
实验内容:1. 环境搭建:安装并配置必要的编程软件,如IDE、版本控制系统等。
2. 基础编程:完成一系列编程练习,包括数据类型、控制结构、循环、函数等。
3. 算法实现:编写程序解决具体问题,如排序算法、查找算法等。
4. 调试与优化:学习调试技巧,优化代码性能,提高程序运行效率。
5. 版本控制:学习使用版本控制系统,如Git,进行代码管理和协作开发。
实验步骤:1. 在指导老师的帮助下,完成实验环境的搭建和配置。
2. 按照实验指导书的要求,逐步完成基础编程练习。
3. 分析并选择合适的算法解决给定问题,编写代码实现。
4. 利用调试工具进行代码调试,修正发现的错误和不足。
5. 学习并实践版本控制的基本概念和操作,进行代码的提交、更新和合并。
实验结果:1. 成功搭建了实验所需的软件环境,并熟悉了各个工具的基本操作。
2. 完成了所有基础编程练习,并通过测试,代码逻辑清晰,运行无误。
3. 实现了排序和查找算法,并通过案例验证了算法的正确性和效率。
4. 通过调试,优化了代码结构和性能,提升了程序的运行速度。
5. 掌握了版本控制的基本概念,能够进行基本的代码管理和协作。
实验总结:通过本次上机实验,我不仅巩固了编程基础知识,还提高了解决实际问题的能力。
在实验过程中,我学会了如何有效地使用调试工具和版本控制系统,这些技能对于未来的编程学习和软件开发都具有重要意义。
同时,我也认识到了编写可读性强、可维护性高的代码的重要性。
在未来的学习中,我将继续提高我的编程技能,并更加注重代码质量。
数据结构的第二次上机实验作业

数据结构实验报告实验名称:______简单计算器______________________ 学生姓名:_________刘健___________________班级:_________2013211129________________班内序号:_________10_______学号:_______2013210796_____________________ 日期:____________________________1. 实验目的和内容表达式求值是程序设计语言编译中最近本的问题,它要求把一个表达式翻译成能够直接求值的序列。
例如用户输入字符串“14+((13-2)*2-11*5)*2”,程序可以自动计算得到最终的结果。
在这里,我们将问题简化,假定算数表达式的值均为非负整数常数,不包含变量、小数和字符常量。
试设计一个算术四则运算表达式求值的简单计算器。
基本要求:1、操作数均为非负整数常数,操作符仅为+、-、*、/、(和);2、编写main函数进行测试。
2. 程序分析2.1 存储结构为了实现运算符有限算法,在程序中应该设计两个栈,分别是运算符栈OPTR,操作数栈OPND。
2.2 程序流程2.3 关键算法分析算法1:char Precede(char t1, char t2)[1] 算法功能:判断运算符t1和t2的优先级关系[2] 算法基本思想:如:cas e’+’:case’-:’if(t1==’(’||t1==’#’)f=’<’;//t1<t2elsef=’>’;//t1>t2break;优先级图表:[3] 算法空间、时间复杂度分析:O(1)算法2: bool IsOperator(char c)[1] 算法功能:判断c是否为7种运算符之一[2] 算法基本思想:bool IsOperator(char c) //判D断?c是?否?为a7种?运?算?符?之?一?{switch(c){case'+':case'-':case'*':case'/':case'(':case')':case'#':return true;default:return false;}}用switch进行选择判断。
《软件技术基础》实验指导(含答案)

说明每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。
对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。
实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
(文件夹:顺序表逆置、单链表逆置)2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。
(文件夹:分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。
(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。
)(文件夹:判字符串中心对称)2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。
编写实现该循环队列的入队和出队操作的算法。
提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。
(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。
软工133陈超JAVA第二次上机实验报告参考模板

《Java语言程序设计》上机实验报告实验名称: JAVA语言基础(2)班级:软工133姓名:陈超学号: 1130299452 上机时间: 2014.9.24 指导教师:虞建东一、实验内容或题目:1.输出希腊字母表。
2.回文数。
3.猜数字游戏。
4.编程实现Fibonacci数列。
5.编程实现采用冒泡法实现对数组元素由小到大排序。
二、实验目的与要求:【目的】①掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;②继续掌握用while循环语句解决问题;③掌握Java中的数组定义、引用。
实验要求:1.编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。
2.编写一个Java应用程序。
用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。
回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。
3.编写一个Java应用程序,实现下列功能:1)程序随机分配给客户一个1—100之间的整数2)用户在输入对话框中输入自己的猜测3)程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”。
4)用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
4.编写一个Java应用程序,实现Fibonacci数列:Fibonacci数列的定义为:F1=1,F2=1,Fn=Fn-1+Fn-2 (n>=3)5.冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。
三、实验步骤与源程序:(1)实验步骤a) 编辑源文件b) 编译c) 运行(2)源代码【写出解决本次上机题目的源代码,并提供语句的注释;如程序过长则给出主要程序段并写出注释】题目1public class Xila {public static void main(String[] args) {// TODO 自动生成的方法存根int startPosition = 0, endPosition = 0;char cStart = 'α', cEnd = 'ω';startPosition = (int) cStart; // cStart做int型转换据运算,并将结果赋值给startPositionendPosition = (int) cEnd; // cEnd做int型转换运算,并将结果赋值给endPositionSystem.out.println("希腊字母\'α\'在unicode表中的顺序位置:" + (int) cStart);System.out.println("希腊字母表:");for (int i = startPosition; i <= endPosition; i++) {char c = '\0';c = (char) i; // i做char型转换运算,并将结果赋值给cSystem.out.print(" " + c);if ((i - startPosition + 1) % 10 == 0)System.out.println("");}}}题目2:import java.util.Scanner;public class Huiwen{public static void main(String[] args) {// TODO 自动生成的方法存根Scanner in = new Scanner(System.in);System.out.print("请输入一个整数(1—9999之间):");int num = 0;int count = 0, i = 0, k = 1;int a[] = new int[100];int p = 1;num = in.nextInt();while (p != 0) {count = 0;while (num != 0) {a[i] = num % 10;i++;count++;num = num / 10;}if (count < 5 && count > 0) {System.out.println("这个数是" + count + "位数");p = 0;} else {System.out.println("输入的数字不复合要求");num = in.nextInt();}}for (int j = 0; j < count / 2; j++) {if (a[j] != a[count - j - 1])k = 0;}if (k == 0)System.out.println("这个数不是回文");elseSystem.out.println("这个数是回文");}}题目3:import java.util.Scanner;public class Caishuzi {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner in=new Scanner (System.in);int num = (int) (Math.random() * 100);while(1==1){System.out.print("请输入一个整数(1—100之间):");int q=in.nextInt();if (q>num)System.out.print("猜大了!");else if(q<num)System.out.print("猜小了!");else{ System.out.print("猜对了!!");break;} }}} 题目4:public class Fibonacci {public static void main(String[] args) {// TODO 自动生成的方法存根int F[]=new int[10];F[0]=F[1]=1;System.out.printf("F[0]=%d\nF[1]=%d\n",F[0],F[1]); for(int i=2;i<10;i++){F[i]=F[i-1]+F[i-2];System.out.printf("F[%d]=%d\n",i,F[i]);}}}题目5:import java.util.Scanner;public class Maopao {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner in = new Scanner(System.in);int a[]=new int[100];int i;int j=0; System.out.printf("元素个数为:");i= in.nextInt();{for(j=0;j<i;j++){System.out.printf("第%d个元素为:",j+1);a[j]= in.nextInt();}for(j=0;j<i;j++){System.out.printf("%d",a[j]);}}for(int k=0;k<i-1;k++)for(int m=k+1;m<i;m++)if(a[k]>a[m]){int t=a[k];a[k]=a[m];a[m]=t;}for(int l=0;l<i;l++){System.out.printf("%d",a[l]);}}}四、测试数据与实验结果(可以抓图粘贴):题目1题目2题目3题目4题目5五、总结:这是第二次上机实验,感觉比上一次进步了不少。
软件技术基础2实验任务2带解答

《软件技术基础2》实验报告2学院专业年级姓名任课教师葛卫民实验指导葛卫民年月日实验二一、实验目的通过本试验,使学生进掌握循环程序的设计方法;掌握计数、求和、字符串处理等基本算法的设计方法。
二、实验内容1.通过程序实例,理解程序的三种基本结构及控制语句。
2.编写教材第二章习题中4、6、7、8、10、11要求的程序,并完成上机调试的实验任务。
三、实验准备1.复习第二章的2.4 -2.6节内容;2.编写教材第二章习题中6、7、8、10、11要求的程序。
四、实验任务任务一:第4题1.内容:编写程序,输入10个学生的考试分数(0~100),然后根据每个学生的分数,判断并显示每个学生的学号和等级。
学号由1到10,等级关系为:A 90<=分数<100等级= B 80<=分数<90C 60<=分数<80D 0<=分数<602.源程序:#include<iostream.h>void main(){int i;double s;cout<<"每次输入一个学生的分数(0~100),输10次"<<endl;for( i=1;i<11;i++){ cin>>s;if(s>=90) cout<<i<<" "<<"A"<<endl;else if(s<90&&s>=80) cout<<i<<" "<<"B"<<endl;else if(s<80&&s>=60) cout<<i<<" "<<"C"<<endl;else if(s<60&&s>=0) cout<<i<<" "<<"D"<<endl;}}3.运行结果:4.实验中遇到的主要问题及解决方法任务二:第6题1.内容:编写程序,用公式π/4=1-1/3+1/5-1/7+……求π的近似值,直到最后一项的绝对值小于10^(-6)为止。
计算机软件基础上机实验报告

计算机软件基础上机实验报告实验目的:通过本次实验,掌握计算机软件的基本操作、基本编程概念以及实现方法,并能对实验结果进行分析和总结。
实验设备:计算机硬件平台和软件平台。
实验内容:1.学习使用计算机软件的基本操作。
2.学习使用计算机软件进行编程。
3.编写一个简单的计算机软件,并进行测试。
实验步骤:1.打开计算机软件,并学习基本的操作方法。
包括如何创建、保存和打开文件,如何设置字体、颜色和格式等。
2.学习基本的编程概念和语法,包括变量、函数、条件语句和循环语句等。
3.编写一个简单的计算机软件,并进行测试。
假设我们要编写一个求解一元二次方程的软件。
首先,定义一个函数来计算方程的根。
然后,在主函数中输入方程的系数,并调用函数进行计算。
最后,输出结果。
实验结果分析:通过本次实验,我学会了如何使用计算机软件进行操作和编程。
在编写一元二次方程求解软件的过程中,我遇到了一些问题,如如何处理方程无解和有多个解的情况等。
为了解决这些问题,我添加了对方程判别式的计算和判断逻辑,从而得到了正确的结果。
实验总结:本次实验让我更加深入地了解了计算机软件的基本操作和编程概念。
通过编写一个简单的计算机软件,我不仅巩固了所学的知识,还锻炼了分析和解决问题的能力。
在今后的学习和工作中,我将继续深入学习和应用计算机软件,为实现更多的功能和创造更大的价值做出贡献。
此外,我还意识到在软件开发过程中应注重错误处理和逻辑判断,确保软件的稳定性和可靠性。
以上是本次计算机软件基础上机实验的报告,通过本次实验,我对计算机软件的基本操作和编程有了更深入的了解,并在实践中掌握了一些基本的编程技巧和方法。
这将为我今后的学习和工作奠定坚实的基础。
软件技术基础 第二次试验 实验报告模板

1、对数据库软件了解的少,基本的一些操作不熟悉,找不到功能区
2、SQL-server软件编程语言环境与接触的C语言不同略有区别。
2、解决问题:
实验时严格按照实验指导书进行实验操作;实在不懂时别憋着,及时问老师,让老师帮忙解决。
四、实验操作方法和步骤
1、建立Student表
2、建立Course表格
3、建立Score表格
4、建立Teacher_course表格
5、使用T_SQL语句建立Student表格
5.1使用向导创建上述描述的表根据如上表结构用向导创建各表,用企业管理器删除所建立的表Student和Course。
五、实验结果及分
课程名称
软件技术基础实验
实验项目名称
数据库基本操作
实验室名称
实验日期
学号
姓名
专业班级
组号及组员
机器编号及IP
指导教师
实验成绩
教师评语:
教师签字:批改时间:
一、实验目的和要求
目的:
1.了解表的结构特点;
2.了解SQL Server的基本数据类型;
3.学会在企业管理器中创建表;
4.学会使用T-SQL语句创建表。
二、实验内容和原理
1.创建名为student(学生信息)的表
2.创建名为course(课程信息表)的表,
3.创建名为score表(学生成绩表)的表
4.创建名为teacher表(教师信息表)的表
5.创建名为teacher_course表(教师上课课表)的表,
三、主要仪器设备
电脑和SQL sever2018软件
要求:
1.确定数据库包含包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表;
《计算机编程》第二次上机实验(作业)说明

而[0,2]则有 5 个。
运行示例如下:输入 1 3
//1×3 的方格盘
运行示例如下:输入 3 3
//3×3 的方格盘
学 大 经 财
4
cout<<"Please Enter the Symbol and the Number of Rows:"; cin>>ch>>rowsNumber; // 输入要打印的字符和金字塔打印行数
if(rowsNumber >0)
{
for(int i=0;i< rowsNumber;i++){ 填写语句 // 首先利用printSymbol打印当前行(第i行)的?个空格
填写语句 // 然后利用printSymbol打印当前行(第i行)的?个ch
cout<<endl;
}}
else return 0;
2
上海财经大学信息管理与工程学院
张勇
}} 运行示例如下:
第二次上机实验说明
1.3 打印数字金字塔。
1
121
12321
1234321
123454321
学
…………….
大
经
2. 多重循环实验财: 输出 N*M 方格盘中所有邻近方格的坐标。
#include <iostream>
大 using namespace std; 经 void printSymbol(char symbol, int num)
{
财
填写语句 // 利用循环输出num个的symbol字符
}
int main(){
int rowsNumber;
char ch;
北航计软实验报告二

计算机软件基础上机实验报告(二)140223 14021076 易杰1.实验目的掌握二叉树的存储结构2.实验内容1.对给定二叉树用链式链式存储结构;利用队列与栈对二叉树进行运算。
2.按层次输出所有结点。
3.输出所有叶子结点。
4.将所有左右子树值交换。
3.源代码与运行结果#include<stdio.h>/**实验二1.对给定二叉树用链式存储结构;利用队列与栈对二叉树进行运算。
2.按层次输出所有结点。
3.输出所有叶子结点。
4.将所有左右子树值交换。
输入:文件(2.txt)输入,内容为将二叉树补为满二叉树(空节点用0代替)的所有节点值(链表存储)输出:屏幕输出**/struct tree{int num;struct tree *left;struct tree *right;};struct tree *build(int i);int a[50]={0}; //读入的原始数据void main(){FILE *fi=fopen("2.txt","rt");int i,t;struct tree *head,*temp;struct tree *b[50]={NULL};//本树有5层,共1+2+4+8+16=31个节点for (i=1;i<=31;i++){fscanf(fi,"%d",&a[i]);}//递归构建链表head=build(1);printf("链表构建完成,二叉树已存储。
\n\n");//按层次输出所有结点i=0;t=1;b[0]=head;printf("按层次输出节点(过滤空节点)结果:\n");while (i!=t){printf("%d ",b[i]->num);if ((b[i]->left)!=NULL) b[t++]=b[i]->left;if ((b[i]->right)!=NULL) b[t++]=b[i]->right;i++;}printf("\n");//输出所有叶子结点i=0;t=1;b[0]=head;printf("\n输出叶子节点(无子树的点)结果:\n");while (i!=t){if ((b[i]->left==NULL) && (b[i]->right==NULL)) printf("%d ",b[i]->num);else{if ((b[i]->left)!=NULL) b[t++]=b[i]->left;if ((b[i]->right)!=NULL) b[t++]=b[i]->right;}i++;}printf("\n");//交换左右子树i=0;t=1;b[0]=head;printf("\n交换左右子树:\n");while (i!=t){if ((b[i]->left!=NULL) || (b[i]->right!=NULL)){printf("正在交换%d节点\n",b[i]->num);temp=b[i]->left;b[i]->left=b[i]->right;b[i]->right=temp;}if ((b[i]->left)!=NULL) b[t++]=b[i]->left;if ((b[i]->right)!=NULL) b[t++]=b[i]->right;i++;}printf("交换完成\n");fclose(fi);system("pause");}struct tree *build(int i){struct tree *n;n=(struct tree*)malloc(sizeof(struct tree));n->num=a[i];if (a[2*i]!=0) n->left=build(2*i);else n->left=NULL;if (a[2*i+1]!=0) n->right=build(2*i+1);else n->right=NULL;return (n);}程序运行输出结果如下:4.实验总结通过本次试验,我掌握了掌握二叉树的存储结构,并且能够使用数组和链表存储二叉树,掌握了按层次输出结点、输出叶子节点、将所有左右子树值交换等内容,并且巩固了链表的使用方法。
第1-2次上机(4h)_SA

结构化分析(SA)
• 3. 第3章习题3—— • 目前住院病人主要由护士护理,这样做不仅需要大 量护士,而且由于不能随时观察危重病人的病情变 化,还会延误抢救时机。某医院打算开发一个以计 算机为中心的患者监护系统,请画出本系统的实体 关系图(ERD)和数据流图(DFD) 。 • 医院对患者监护系统的基本要求是随时接收每个病 人的生理信号(脉搏、体温、血压、心电图等),定时 记录病人情况,以形成患者日志。当某个病人的生 理信号超出医生规定的安全范围时,向值班护士发 出警告信息。此外,护士在需要时还可以要求系统 印出某个指定病人的病情报告。
任务2:实用工具的使用
• Microsoft Word —— 传统的E-R图、DFD图 • Microsoft Visio —— 特点:流程图、结构图 • 查阅以下工具的资料,先熟悉使用
– Power Designer —— 突出特点:数据模型分析 (概念模型(ER图)->逻辑模型->物理模型);UML – Rational Rose —— 特点:UML
实验结果提交
• 我的邮箱:shenguo_cn@
• 第1次提交使用word或visio完成的任务1 • 第2次提交使用PowerDesigner完成的任务
Hale Waihona Puke 软件工程上机第1-2次
任务1:结构化分析(SA) 使用word或visio完成
• 1. 第3章习题1 —— • 银行计算机储蓄系统的工作过程大致如下:储户填 写的存款单或取款单由业务员键入系统,如果是存 款则系统记录存款人姓名、住址(或电话号码)、 身份证号码、存款类型、存款日期、到期日期、利 率、密码(可选)等信息,并印出存款单给储户; 如果是取款而且存款时留有密码,则系统首先核对 储户密码,若密码正确或存款时未留密码,则系统 计算利息并印出利息清单给储户。 • 请用数据流图(DFD)描绘本系统的功能(功能模 型) ,并用实体-关系图(ERD)描绘系统中的数据 对象(数据模型)。
第二次上机实验报告

实验二、顺序表的相关操作1、有序的一组整数,1-2-3-4-6-5-9-19设计顺序表并实现以下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素;D.显示B,C操作后的结果。
#include<stdio.h>#define MAXNUM 10#define true 1#define false 0typedef int elemtype;typedef struct listtype{elemtype data[MAXNUM];int num;}listtype;void initiatelist(listtype *l){l->num=0;}int delete(listtype *l,int i){int j;if((i<0)||(i>l->num-1)){printf("not exist"); return(false);}for(j=i+1;j<l->num;j++)l->data[j-1]=l->data[j];l->num--;return(true);}int main(){int i;listtype list;initiatelist(&list);printf("please input the data");list.num=8;for(i=0;i<list.num;i++){ scanf("%d",&list.data[i]);printf("\n");printf("%d",list.data[i]);}delete(&list,3);for(i=0;i<list.num;i++){printf("\n");printf("%d",list.data[i]);}}运行结果:2、设线性表存放在向量A[1..MAXNUM]的前elenum个向量中,且有序递增。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//功能:初始化双向链表 void InitDoubleList(DoubleLinkList &d_head) { d_head = (DoubleLinkList)malloc(sizeof(DoubleNode)); //为头结点分配存储 空间 if (d_head) { d_head->next = d_head->pre = d_head; //双向循环链表头结点 printf("Init Success!\n"); } else printf("Init Error!\n"); } //功能:创建双链表 void CreatDoubleList(DoubleLinkList &d_head) { int data; DoubleNode *p=d_head, *s=NULL; printf("Please input data:(end up with 0)\n"); while (scanf_s("%d",&data)) { if (data != 0) { s = (DoubleNode*)malloc(sizeof(DoubleNode)); 存储空间 s->data = data; data 赋值给该节点的 data s->pre = p; p->next = s; p = s;
软件技术基础上机实验报告
(学生姓名) (学号) 上机实验二 ex2_1——基本题 1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表 元素依次输出到屏幕上。 2)在已创建好的链表中插入一个元素:。然后将链表元素依次输出到屏幕上。 3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号) ,调用删除 函数完成删除操作。然后将链表元素依次输出到屏幕上。 ex2_2——扩展题 1)创建一个单链表,其数据元素为整数,从键盘输入,输入 0 结束(注意 0 不放到链 表内) ; 2)从键盘任意输入一个整数,在单链表中查询该数,如果单链表中已经存在这个数, 就调用删除函数,删除该元素所在结点,并将单链表在删除前后的数据元素依次输出到屏 幕上; 如果单链表中不存在这个数,就调用插入函数,将这个数插入到单链表尾,并将单链表 在插入前后的数据元素依次输出到屏幕上。 3)教材第一章习题第 9 题(用链表实现) ex2_3——扩展题 1)删除单链表中全部的负数 2)创建一个双向链表,按照冒泡排序的思路对这个双向链表进行排序,打印排序结果。注 意,本算法在交换元素时是将链点整个交换而不是将链点中的元素值交换。
void main() { Node *head = NULL; InitList( head); CreatList( head); //Creat_5_number_List(head); //InsertDataByPosition(head); //DeleteDataByPosition(head); DeleteExistOrInsertNon_ExistentData(head); //InsertInOrder(head); //DeleteNegative(head); /*DoubleNode *d_head = NULL; InitDoubleList(d_head); CreatDoubleList(d_head); PrintDouleList(d_head); SortDoubleList(d_head);*/ } //作用:初始化化链表 void InitList(LinkList&head) { head = (Node*)malloc(sizeof(Node)); //为头结点分配一个存储空间 if (!( head)) { printf("Init Error!"); exit(-1); } ( head)->next = NULL; //将单链表的头结点指针域置为空 printf("Init List Success.\n"); } //功能:将链表所有元素输出
//基础题 1:创建五个元素的链表 void Creat_5_number_List(LinkList &head) { Node *r = head; Node *s; int a; printf("Please Input 5 data:\n"); for (int i=0;i<5;i++) { s= (Node*)malloc(sizeof(Node)); scanf_s("%d", &a); s->data = a; r->next = s; r = s; }
//扩展题 2.2.3:按大小找位置插入 void InsertInOrder(LinkList &head); //扩展题 2.3.1:删除链表中所有负数 void DeleteNegative(LinkList &head); //扩展题 2.3.2:双向链表排序问题 void SortDoubleList(DoubleLinkList &d_head);
struct Node *next; }*LinkList; //声明一个双向链表节点类型 typedef struct DoubleNode { struct DoubleNode *pre; DataType data; struct DoubleNode *next; }*DoubleLinkList; //功能:初始化单链表函数 void InitList(LinkList &head); //功能:将单链表所有元素打印在控制台上 void PrintList(LinkList &head); //功能:初始化双向链表 void InitDoubleList(DoubleLinkList &d_head); //功能:创建双链表 void CreatDoubleList(DoubleLinkList &d_head); //功能:打印双链表所有元素 void PrintDouleList(DoubleLinkList &d_head); //基础题 2.1.1:创建 5 个元素的单链表函数 void Creat_5_number_List(LinkList &head); //基础题 2.1.2:在单链表中第 i 个位置插入值 e 的结点。插入成功返回 1,失败返回 0 int InsertDataByPosition(LinkList &head); //基础题 2.1.3:删除指定位置元素 void DeleteDataByPosition(LinkList &head); //扩展题 2.2.1:创建一个单链表,输入 0 时结束 void CreatList(LinkList &head); //扩展题 2.2.2 的插入函数: int InsertDataAtEnd(LinkList &head,int data); //扩展题 2.2.2:存在该元素则删除,不存在则插入表尾 void DeleteExistOrInsertNon_ExistentData(LinkList &head);
} if (!p->next||j>position-1) { printf("Position Error!\n"); } q = p->next; p->next = q->next; free(q); printf("Delete success!After Deleting is:\n"); PrintList(head); } //扩展题 2.1: 创建链表表,以 0 作为结束输入的标志。 void CreatList(LinkList &head) { Node *p = head; Node *s = NULL; int a; printf("Input the data:\n"); while (scanf_s("%d", &a)) { if (a != 0) 节点 { s = (Node*)malloc(sizeof(Node)); s->data = a; p->next = s; p = s; } else { p->next = NULL; //输入为 0,p 为最后节点 printf("CreatList success!The list's data are:\n"); PrintList(head); break; } } } //扩展题 2.2 的插入函数:在末尾插入
代码:
#include "stdafx.h" #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef int DataType; //提示:声明一个单链表类型 typedef struct Node { DataType data;
void PrintList(LinkList &head) { Node *p = head; Node *s = NULL; while (p->next != NULL) { s = p->next; p = s; printf("%d\t", s->data); } printf("\n"); }
r->next = NULL; printf("You hava created a 5 number linklist.The list's data are:\n"); PrintList(head); } //基础题 2:指定位置插入函数 int InsertDataByPosition(LinkList &head) { printf("Please input the position&data:\n"); int position, data; scanf_s("%d%d", &position, &data); Node *s=NULL, *p = head; int j = 0; while (p->next != NULL&&j<position- 1) //获取插入位置 { p = p->next; j++; } if (!p) //判断链表是插入位置是否越界 { printf("Insert error!\n"); return 0; } s = (Node*)malloc(sizeof(Node)); //为插入节点分配存储空间 s->data = data; //将节点插入 s->next = p->next; p->next=s; printf("Insert list success!After inserting is:\n"); PrintList(head); return 1; } //基础题 3:删除特定位置函数 void DeleteDataByPosition(LinkList &head) { int j = 0, position; printf("Please input the delete data's position:\n"); scanf_s("%d",&position); Node *q, *p = head; while (p->next!=NULL&&j<position-1) //将指针指向删除位置的前一位 { j++; p = p->next;