第一篇:C语言-实验四
实
验
报
告
课程名称实验项目
学院 系别 班级/学号 学生姓名 实验日期 成绩 指导教师
程序设计基础(C语言)实验四 数组
(二)
一、实验目的
1.掌握二维数组的定义和初始化。2.掌握二维数组元素的引用及其应用。
二、实验内容
注:本次实验完成前三个题目或者仅完成第四个题目最高分为90分,完成全部四个题目最高分100分。
题目1:输入十个人的姓名,并按升序输出。(用选择法或者冒泡法排序)
流程图:
代码:
#include
{ int i,j;char a[10][5],t[2];printf(“请输入十个人的名字:n”);for(i=0;i<10;i++){ } for(j=0;j<10;j++){
} printf(“排序输出:n”);for(i=0;i<10;i++)for(i=0;i<10-j;i++){
} if(strcmp(a[i],a[i+1])>0){
} strcpy(t,a[i]);strcpy(a[i],a[i+1]);strcpy(a[i+1],t);gets(a[i]);} puts(a[i]);return 0;}
题目2:求两个矩阵的积。如:
运算规则为:
第i行第j列相乘得到结果矩阵中r[i][j]的值。比如:
r[0][0] = 1*1+2*5+3*8=35;r[0][1] = 1*5+2*3+3*1=14;r[1][0] = 4*1+5*5+6*8=77;r[1][1] = 4*5+5*3+6*1=41;要求:
1.数组的行数和列数不超过100。
2.输入第一行中,第一个正整数m,表示第一个矩阵的行数,输入第二个正整数n,表示第一个矩阵的列数,也即是第二个矩阵的行数,输入第三个正整数p,表示第二个矩阵的列数。
3.接下来的m*n个数是第一个矩阵中的数。4.再接下来的n*p个数是第二个矩阵中的数。5.输出计算结果,为一个m行,p列的矩阵。流程图:
#include
int a[100][100]={0},b[100][100]={0},c[100][100]={0},i,j,k,n,m,p;printf(“请输入第一个矩阵的行数m:n”);scanf(“%d”,&m);printf(“请输入正整数n(第一个矩阵的列数,也是第二个矩阵的行数):n”);
for(i=0;i for(j=0;j printf(“这两个矩阵的和为:n”);for(i=0;i } for(j=0;j 题目3:求矩阵的鞍点。鞍点位置上的元素在该行中值最大,在该列中值最小。如下面矩阵的鞍点为35。 【输入】前两个数为行数和列数,其后是矩阵中的元素 【输出】如果没有鞍点,输出NO;如果有输出格式为:[值1,行下标1,列下标1],[值2,行下标2,列下标2]…… 流程图: #include int a[100][100];int m,n,i,j,t,k;printf(“请输入行数m和列数n:n”);scanf(“%d%d”,&m,&n);printf(“请输入这个%d*%d矩阵:n”,m,n);for(i=0;i for(j=0;j for(t=0,j=1;j } k=1;printf(“鞍点[%d]是%d:行下标%d,列下标%dn”,k,a[i][t],i,t);k++;} return 0;} 运行结果: 题目4:学生成绩统计 一个班共有6名学生,已知每个学生有5门课程的成绩 请输出每个学生的平均成绩 请输出每门课程的平均成绩 请输出学生的最高平均成绩和序号 请输出课程的最高平均成绩和序号 流程图: #include float a[7][6],b[7],c[6];int m,n,i;printf(“请输入6名学生的5门课程的成绩:n”);for(m=1;m<7;m++){ } for(m=1;m<7;m++){ } for(n=1;n<6;n++){ } for(m=1;m<7;m++)c[n]=0;for(m=1;m<7;m++)c[n]+=a[m][n];b[m]=0;for(n=1;n<6;n++)b[m]+=a[m][n];for(n=1;n<6;n++)scanf(“%f”,&a[m][n]);b[m]=b[m]/5;printf(“第%d名学生的平均成绩为%.1fn”,m,b[m]);c[n]=c[n]/6;printf(“第%d门课的平均成绩为%.1fn”,n,c[n]); } { } for(m=1;m<6;m++){ } return 0;i=0;for(n=1;n<6;n++){ } if(i==5)printf(“第%d门课成绩最高为%.1fn”,m,c[m]);if(c[m]>=c[n])i++;i=0;for(n=1;n<7;n++){ } if(i==6)printf(“第%d名学生成绩最高为%.1fn”,m,b[m]);if(b[m]>=b[n])i++;运行结果: 题目5:井字格游戏 程序大致的执行过程如图所示: 功能包括: 1.允许两个玩家下棋 2.允许玩家输入下棋的坐标 3.显示当前棋盘状态 4.判断玩家是否下错位置,即在已经下过棋的位置再次下棋 5.判断玩家下棋后,输赢状态 6.在屏幕提示中指导玩家交替下棋 流程图: 省列。代码: #include T[site1][site2]='X';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++){ printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2) } else return 99;} printf(“-------n”);} return 0;int printerB(int site1,int site2){ if(tasic[site1][site2]==0&&basic[site1][site2]==0){ tasic[site1][site2]=-1;T[site1][site2]='O';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++) { printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2){ printf(“-------n”);} } return 0;} else return-99;} int main(){ int m,n,a,b;while(kongzhi==1){ if((basic[0][0]+basic[0][1]+basic[0][2]==3)||(basic[1][0]+basic[1][1] do { a=0;printf(“请A下子:”);scanf(“%d%d”,&m,&n); a=printerA(m,n);if(a==99)printf(“对不起,您下错位置了!n”);} while(a==99);+basic[1][2]==3)||(basic[2][0]+basic[2][1]+basic[2][2]==3)||(basic[0][0]+basic[1][1]+basic[2][2]==3)||(basic[0][2]+basic[1][1]+basic[2][0]==3)){ printf(“A赢了!n”);return 0;} do { b=0;printf(“请B下子:”);scanf(“%d%d”,&m,&n); b=printerB(m,n);if(b==-99) printf(“对不起,您下错位置了!n”);} while(b==-99);if((tasic[0][0]+tasic[0][1]+tasic[0][2]==-3)||(tasic[1][0]+tasic[1][1]+tasic[1][2]==-3)||(tasic[2][0]+tasic[2][1]+tasic[2][2]==-3)||(tasic[0][0]+tasic[1][1]+tasic[2][2]==-3)||(tasic[0][2]+tasic[1][1]+tasic[2][0]==-3)) { printf(“B赢了!n”);return 0;} i++;if(i==9){ printf(“平局!”);return 0;} } } 运行结果: 心得体会:这几道题加深了我对数组的理解,及其相关应用。 实验四 SQL语言——数据更新操作 2007-06-16 01:12:44|分类: 课程作业 |标签:数据更新操作sql语言|字号大中小 订阅 实验四 SQL语言——数据更新操作 三、实验条件与环境 1.通用PC机 2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台 3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版) 4.最好有一台公用的SQL Server 2000 服务器 四、实验目的1.通过上机实验进一步加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌 握 2.通过上机实验掌握单个元组插入操作的实现过程 3.通过上机实验掌握多个元组插入操作的实现过程 4.通过上机实验掌握单个元组修改操作的实现过程 5.通过上机实验掌握多个元组修改操作的实现过程 6.通过上机实验掌握单个元组删除操作的实现过程 7.通过上机实验掌握多个元组删除操作的实现过程 8.通过上机实验加深对更新操作时数据库中数据一致性问题的了解 9.通过上机实验加深对约束条件在数据更新操作执行中的作用问题的了解 五、实验要求 1.本实验所有实验内容要求在规定时间(2课时)内完成2.实验内容中涉及到的各更新操作均通过SQL语言来实现 3.本实验中各操作内容的执行均会更新当前数据库,为便于下一实验内容的顺利执行,请在每成功完成一个实验内容后重新导入初始状态下的实验数据库 4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交 六、实验内容: 1.在S表中插入元组“s6,华誉,40,广州,02085268888” 2.在J表中插入元组“j8,传感器厂” 3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库 4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60 5.将SPJ表中前4个元组的qty属性值统一修改为300 6.将S表中city属性名含有“京”或“津”的相应status属性值增加100 7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000 8.将全部红色零件的颜色修改为浅红色 9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改 10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列 上填上实验当时的日期和时间 11.删除所在城市为“广州”的供应商记录 12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录 13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数 据信息 七、实验总结: 数据更新操作(插入操作[INSERT]、修改操作[UPDATE]、删除操作[DELETE])是关系数据库系统中一种极为重要、数据更新能力强、使用灵活的数据操纵方式,此数据操作的使用不是完全独立的,而是和数据定义操作、数据查询操作有着紧密联系的。实验完成后,请同学们总结一下SQL语言在实现各种数据更新操作时与数据定义操作和数据查询操作两类操作之间的相互联系,通过深入总结,从而学会利用SQL语言实现较为复杂的数据更新任务。 实验四 SQL语言——数据更新操作 实验内容参考答案 六、实验内容 1.在S表中插入元组“s6,华誉,40,广州,02085268888” use shiyan go insert into s values('s6','华誉',40,'广州','02085268888') 2.在J表中插入元组“j8,传感器厂” use shiyan go insert into j(jno,jname) values('j8','传感器厂') 3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库 use shiyan go create table TotalQTYofS(SNO char(4)not null unique,TotalQTY int); insert into TotalQTYofS select sno,sum(qty) from spj group by sno; 4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60 use shiyan go update p set color='绿',weight=60 where pno='p6' 5.将SPJ表中前4个元组的qty属性值统一修改为300 use shiyan go update spj set qty=300 from(select top 4 * from spj order by sno)as table1 where spj.sno=table1.sno 6.将S表中city属性名含有“京”或“津”的相应status属性值增加100 use shiyan go update s set status=status+100 where city like '%京%' or city like '%津% 7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000 use shiyan go update spj set qty=2000 where sno='s2' and jno=(select jno from j where jname='一汽') 8.将全部红色零件的颜色修改为浅红色 use shiyan go update p set color='浅红' where color='红' 9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改 use shiyan go update spj set sno='s3' where sno='s5' and jno='j4' and pno='p6' 10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列 上填上实验当时的日期和时间 use shiyan go alter table spj add SDATE datetime update spj set SDATE=getdate() 11.删除所在城市为“广州”的供应商记录 use shiyan go delete from s where city='广州' 12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录 use shiyan go delete from p where pname like '螺%' delete from spj where pno in(select pno from p where pname like '螺%') 13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数据信息 use shiyan go delete from spj where(sno='s3' or sno='s4')and jno in(select jno from j where jname='三建')and pno in(select pno from p where pname='螺母' or pname='螺丝刀') 实验 四、Matlab的程序设计 (一)实验目的 1.掌握利用if语句实现选择结构的方法。 2.掌握利用switch语句实现多分支选择结构的方法。3.掌握利用for语句实现循环结构的方法。4.掌握利用while语句实现循环结构的方法。5.掌握Matlab函数的编写及调试方法。 (二)实验环境 1.计算机 2.MATLAB7.0集成环境 (三)实验内容 1、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。function y=myfun1(x)sinx,y(x)x,x6,x00x3x3 选择一些数据测试你编写的函数。function [y]=myfun1(x)if x<=0 y=sin(x);elseif x>0&x<=3 y=x;elseif x>3 y=-x+6;End 结果: >> x=5;>> [y]=myfun1(x)y = 1 2、编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。 function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root Mean Square)的计算公式为: rms1NNi1xi2 用下面数据测试你写的函数: function [m_x,max_x,min_x,rms_x]=myfun2(x)%求平均值 sum_x=sum(x);%向量元素求和 [m,n]=size(x);%最好用n=length(x);m_x=sum_x/n; %求最大值 采用逐个比较方式 if x(1)>x(2)max_x=x(1);else max_x=x(2);end for k=3:n if max_x else max_x=max_x;%可省略 end end %求最小值 if x(1) min_x=x(2);end for k=3:n if min_x>x(k) min_x=x(k); else min_x=min_x;%可省略 end end %求均方根值 sum_x2=0;for k=1:n sum_x2=sum_x2+x(k).^2;rms_x=sqrt(sum_x2/n);end m_x;max_x; min_x; rms_x;%按照函数值行(1)x=sin(0:0.01:6*pi)运行结果:>> x=sin(0:0.01:6*pi);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x =-1.1256e-007 max_x = 1.0000 min_x =-1.0000 rms_x = 0.7071(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。>> x=rand(1,200);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x = 0.5231 max_x = 0.9994 min_x = 0.0056 rms_x = 0.5869 3、编写求解方程axbxc0的根的函数(这个方程不一定为一元二次方程,因a、b、c的不同取值而定),这里应根据a、b、c的不同取值分别处理,有输入参数提示,当a0,b0,c~0时应提示“为恒不等式!”。并输入几组典型值加以检验。2M文件: disp('关于方程ax^2+bx+c=0')a=input('请输入系数a=');b=input(' b=');c=input(' c=');if a==0&&b==0 if c==0 disp('解为全体实数'); else disp('为恒不等式!'); end else P=[a,b,c]; x=roots(P)end disp('关于方程ax^2+bx+c=0')a=input('请输入系数a=');b=input(' b=');c=input(' c=');if a==0&&b==0 if c==0 disp('解为全体实数'); else disp('为恒不等式!'); end else P=[a,b,c];x=roots(P)end 工作空间测试: 关于方程ax^2+bx+c=0 请输入系数a=2 b=4 c=6 x =-1.0000 + 1.4142i-1.0000-1.4142i 4、输入一个百分制成绩,要求输出成绩等级A+、A、B、C、D、E。其中100分为A+,90分~99分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。要求:(1)用switch语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 g=input('请输入成绩'); if g<0||g>100 disp('错误,输入的成绩应为0~100间的数') else g=fix(g/10); switch g case {10} disp('A+'); case {9} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D') otherwise disp('E'); end5、利用for循环语句编写计算n!的函数程序,取n分别为-89、0、3、5、10验证其正确性(输入n为负数时输出出错信息)。n=input('请输入n='); if n<0 disp('错误,n取值必须为正数'); else y=1; for i=1:n y=y*i; end disp('n!=');disp(y) 测试: 请输入n=6 n!= 720 6、Fibonacci数组的元素满足Fibonacci规则:现要求该数组中第一个大于10000的元素。 a(1)=1;a(2)=1; k=3; a(k)=a(k-1)+a(k-2); while a(k)<10000 k=k+1; a(k)=a(k-1)+a(k-2); 测试: >> ak=a(k)ak = ak2akak1,(k1,2,);且a1a21。10946 27、根据6112122132......1n,求的近似值。 2要求:(1)分别采用for循环结构以及向量法来编程实现,比较两种方法程序运行时间;(2)当n分别取100、1000、10000时,结果是多少? n=[100 1000 10000]; for j=1:3 y=0;k=n(j); for i=1:k y=y+1/i/i; end pai=sqrt(6*y);disp('n='); disp(n(j)); disp('π的近似值为'); disp(pai);结果: n= 100 π的近似值为 3.1321 n= 1000 π的近似值为 3.1406 n= 10000 π的近似值为 3.1415 (四)实验要求 1、熟练操作MATLAB7.0运行环境; 2、自主编写程序,必要时参考相关资料; 3、实验前应写出程序大致框架或完整的程序代码; 4、完成实验报告。 (五)实验报告要求 见实验一。 思考题 1、M文件分为哪两类?这两类M文件的区别是什么? 答:分为命令文件和函数文件 1)函数文件一般都要带参数 , 都要有返回结果 , 而命令文件没有参数与返回结果 2)函数文件的变量是局部变量 , 运行期间有效 , 运行完毕就自动被清除 , 而命令文件的变量是全局变量 , 执 行完毕后仍被保存在内存中 3)函数文件要定义函数名 , 且保存该函数文件的文件名必须是函数名.m。M 函数文件可以有多个因变量和多 个自变量 , 当有多个因变量时用[ ] 括起来。 2、有一分数序列: 1, 3, 5, 8, 1321 22358, 13, 编写一段程序,求前16项的和。 a=2.0;b=1.0;c=a/b; for 1:16 {b=a;a=a+b; d=(a+b)/a;c=c+d;} C语言程序设计实验 (四)[实验1] scanf()、printf()函数的使用。 1.实验题目 输入1个学生学号和4门课程成绩,输出这个学生的学号、4门课程成绩和平均成绩。 2.实验要求 (1)按表格的形式输出,以行内输出一个学生的信息。 (2)学号用长整型,各科成绩用单精度型。 3.实验目标 (1)掌握实现人机对话形式的方法,scanf()输入。 (2)体会根据需要控制输出格式的方法,printf()输出。 4.实验指导 利用格式的数据宽度控制数据的对位输出。输出如下格式: The number and score of a student is: |---| |number | score1 | score2 | score3 | sco re4 | average | |---| |10011| 67.5|88.0 |93.5 |78.0|81.75 | |---| [实验2] getchar()、putchar()函数的使用 1.实验题目 用getchar()函数读入a~v之间的一个字母,用putchar()函数输出一个5行5列的矩阵,该矩阵第一行为读入的字母,下一行为紧跟该字母后的字母,依此类推。如输入a,则输出的矩阵为: aaaaa bbbbb ccccc ddddd eeeee 2.实验要求 (1)运用getchar()进行字符输入。 (2)运用putchar()进行字符输出。 3.实验目标 (1)体会根据需要控制输出格式的方法。 [实验3] 3.6 下面程序运行时在键盘上如何输入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,请写出对应每个scanf函数的输入情况。 main() { int a,b;float x,y;char c1,c2; scanf(“a=%d□b=%d”,&a,&b); scanf(“□%f %e”,&x,&y); scanf(“□%c %c”,&c1,&c2); } 3.7编一程序,从键盘输入一个圆半径值,求圆周长、圆面积、圆球表面积、圆球体积。输出结果时,要求有文字说明,保留2位小数。 提示:设圆半径为r,则圆周长=2πr,圆面积=πr2,圆球表面积=4πr2,圆球体积= 4πr3/3。 电子科技大学 计算机 学院 标 准 实 验 报 告 (实验)课程名称 C语言程序设计 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 四 学生姓名: 学 号: 指导教师:刘 勇 实验地点: 计算机学院软件306室 实验日期: ****年**月**日 一、实验室名称: 软件实验室 二、实验项目名称:函数的应用及预处理 三、实验学时:2 四、实验原理: 使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。 五、实验目的 1. 掌握C语言中定义函数的方法; 2. 掌握函数传值调用的方法; 3. 掌握函数传址调用的方法; 4. 掌握递归函数的设计方法; 5. 掌握命令行参数的使用方法; 6. 掌握函数在不同文件中的编译、链接方法。 六、实验内容 编程实验,完成以下上机内容,调试运行程序并完成报告 1)、教材第七章习题7.4; 2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出; 3)、教材第七章习题7.11; 4)、教材第七章习题7.15; 5)、教材第七章习题7.24; 6)、求解汉渃塔(tower of Hanoi)问题。在一块平板上立有3根立柱,从左到右分别标记为A,B,C。最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。要求将这些盘从A移到C(可以借助B柱)。条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。(提示:利用函数的递归调用); 七、实验器材(设备、元器件): pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。 软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。 八、实验步骤: 实验编程与运行结果 ⑴ 编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。 程序文件名为7_4.c,源程序清单如下: #include 运行结果: ⑵ 编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。 程序文件名为testf3.c,源程序清单如下:第二篇:实验四SQL语言
第三篇:《Matlab语言》实验四
第四篇:C语言程序设计实验四(本站推荐)
第五篇:《C语言程序设计》实验四