第一篇:C程序设计上机实验报告10
C程序设计实验报告
实验名称:指针与数组学时安排:2课时 实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
一、实验目的1.理解指针、地址和数组间的关系;
2.掌握通过指针操作数组元素的方法;
3.掌握数组名作为参数的编程方式。
二、实验设备介绍
软件需求: Visual C++ 6.0或CFree3.5以上版本
硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。
三、实验内容
1.定义函数void sort(int a[],int n)amain函数,并在其中调用sort函数。示例如下: After sorted the array is:-9-6 1 2 4 5
2.输入10个整数存储到数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Not found!”。要求定义和调用函数search(int list[], int n, int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。参数n代表数组list中元素的数量。
3.改正程序error08_1.cpp中的错误。该程序实现功能,有n个整数,使前面各数顺序循环移动m个位置(m 要求先读该源程序,并理解其中的算法。然后把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。 注释示例如下: int i;/*循环控制变量不能定义为double类型*/ 提示:这是一个双重循环问题,内循环进行循环移位,外循环确定后移的位置。 4.有n个人围成一圈,按顺序从1到n编号。从 Last No.is: 4 提示:可以把编号存在一个数组中,报到3的人赋值为0表示退出。可以另外定义两个变量,一个用来记录退出的人数,到n-1即结束,另外一个用来报数。 四、程序清单 第一题 #include void swap(int *,int*); void sort(int a[],int n); void main() { int i,n,a[8]; printf(“Input n:”); scanf(“%d”,&n); printf(“Input array of %d integers: ”,n); for(i=0;i scanf(“%d”,&a[i]); sort(a,n); printf(“After sorted the array is:”); for(i=0;i printf(“%3d”,a[i]); printf(“n”); } void sort(int a[],int n) { int i,j,index; for(i=0;i { index=i; for(j=i+1;j if(a[j] index=j; swap(&a[i],&a[index]); } } void swap(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 第二题 #include int search(int list[],int n,int x); void main() { int i,x,result,a[10]; printf(“Enter a[0]-a[9]:”); for(i=0;i<10;i++) scanf(“%d”,&a[i]); printf(“Enter x:”); scanf(“%d”,&x); result=search(a,10,x); if(result==-1) printf(“Not found!n”); else printf(“The position is %dn”,result); return 0; } int search(int list[],int n,int x) { int i,result=-1; for(i=0;i if(list[i]==x) { result=i; break; } return result; } 第三题 #include void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf(“Input n, m:”); scanf(“%d%d”,&n,&m); printf(“Input array of 5 int55egers:”); for(p=a,i=0;i scanf(“%d”,p++);// p本身可取地址 mov(a,n,m); printf(“After moved the array is:”); for(i=0;i printf(“%5d”,a[i]); printf(“n”); return 0; } void mov(int *x, int n, int m) { int i,j,t; for(i=0;i { t=x[n-1];/*保存最后位置的元素值*/ for(j=n-1;j>0;j--)/*从倒数第二个元素开始,每个元素向后一个位置 */ x[j]=x[j-1];/* 调试时设置断点 */ x[0]=t;/*将保存的最后元素值放在最前面*/ } } 第四题 #include int main() { int i,j,n,t,count,a[10000]; printf(“Input n:”); scanf(“%d”,&n); for(i=0;i<=n;i++) a[i]=i; count=0; i=1; j=0; while(count { if(i>n) i=1; if(a[i]!=0) j++; if(j==3) { t=i; a[i]=0; j=0; count++; } i++; } printf(“Last No.is:%dn”,t); return 0; } 五、运行结果 六、实验心得 1、C中数组名即是数组中首元素(下标为0的元素)的地址。注意:这不包括形参数组名,因为形参数组名并不占据实际的内存单元。它只是指向其它数组首地址的指针。 2、数组名(比如a)代表数组首元素的地址,它是一个指针常量,在程序中不能改变它的值。例如:a++是非法的。 3、实参数实参数组名代表一个固定的地址,或者说是指针常量。但形参数组并不是一个固定的地址,而是作为指针变量,它的值是可以改变的。在函数调用开始时,它的值等于实参数组首元素的地址,在函数执行期间,它可以再被赋值。 4、指向数组的指针变量也可以带下标,如:p[i]与*(p+i)等价。*(p+i)与*(a+i)等价。 5、当实参是数组名时,传递的是该数组首元素的地址,即是一个指针。 《c语言程序设计》上机实验报告要求 1.实验环境: 软件系统:使用的软件环境 硬件系统:机型说明 2.实验目的:掌握如何编辑、编译、链接调试运行c程序 3.实验内容: (1)掌握顺序结构程序设计.P26 ,p49,p62 3.2~3.7 (2)掌握选择结构程序设计(if 和switch语句的用法)p4.2~ (3)循环结构程序设计(while, dowhile,for语句的用法)。 (4)掌握数组的定义、输入和输出的方法,字符数组、字符串函数的使用。 (5)了解函数的定义,熟悉函数实参与形参的“值传递”方式,掌握函数的嵌套调用和递归调用方法。 (6)熟悉指针含义及其使用。 (7)熟悉结构体和共用体的使用。 (8)熟悉文件的使用。 4.实验要求: (1)输入编写的源程序,检查程序有无错误(语法和逻辑错误),有则改 之。 (2)编译和连接,仔细分析编译信息,如有错误应找出原因并改正。 (3)运行程序,输入数据,分析结果。 5.实验结果: 输出程序清单和运行结果。(要求把原题内容,调试好的程序和其结果一并打 印),6.实验体会 分析运行结果,本次调试程序取得的经验(遇到的问题,解决的方法等)。 黔南民族师范学院 C语言程序设计上机实验报告 系部:计算机科学系 年级:2013 级 班级: 姓名: 学号: 实验时间: 实验成绩: 2013年月日 实验三顺序结构程序的设计 一 实验名称:顺序结构程序的设计 二.实验环境:windows XP系统,VC++6.0软件 三.实验目的: 四.实验内容: 五.算法描述流程图 六.源程序 七.测试数据及运行结果 八.实验心得 实验成绩评分要求 1、原创性发现抄袭或雷同成绩为0分 2、正确性程序正确60分 3、可读性格式清楚,有注释,变量命名规范20分 4、健壮性对特殊测试数据有考虑有测试10分 5、效率程序运行效率高10分 请各位同学按照下列格式写:否则按照0分记 上机实验报告格式 Matlab学习第?次上机实验报告(第?次) 姓名:???班级:???上机时间:?????? 1.上机内容 2.建模及算法分析 3.程序 4.小结 5.参考文献 将文档发到我的邮箱里面 learn_matlab@163.com 一. 题目1. 建立一个学生档案,内容包括学号,姓名,年龄,性别,数学,物理和英语3门功课成绩。要求实现以下功能:1)数据输入;2)查询某个学生的成绩;3)按平均排列输出;4)统计某门课各分数段人数;5)删除某个学生记录;2. 编程实现对二位数进行加,减,乘运算,每运行一次程序做10道题,完成后给出成绩(每题10分)。二. 设计思想和模块划分1.1.先定义所需要的条件,例如,姓名,学号,性别,三门功课的成绩,平均分等。2.输入姓名,学号,性别,年龄,三门功课的成绩后,就输出相应的姓名,学号,性别,年龄,三门功课的成绩。3.打印表头;4.在求出平均分,并打印出平均分。5.在查找学生,并打印出学生的相关资料;并按照平均分的高低排列;6.在统计学生各科成绩是否》=60分,如果是就是通过,否就是没通过,最后打印出最后的结果。7.删除学生,选中删除的学生,如果确定要,那么该学生的一切记录就变为0;2.1.随机调用函数,产生两个其值为10到99的随机整数分别放在c,d中用作运算时的运算数。2.随机调用函数,产生一个值为1到3 的随机整数放入b中,用来选择不同的运算。根据b的值选择不同的运算。当b=1时,去进行c+d的运算练习;当b=2 时,去进行c-d的运算练习;当b=3时,去进行c×d的运算练习。每完成一个算题就给出是否正确的信息。3.根据答案正确与否统计。正确时,显示’right’;错误时,显示’wrong’。4.步骤1.2.3.4.重复10次。5.输出学生成绩。三. 运行结果1.Input the 1 student :num:03name:wfage:18sex:fmath:98phy:75eng:65Input the 2 student :num:06name:scage:17sex:fmath:78phy:45eng:65Input the 3 student :num:09name:ytage:17sex:mmath:69phy:75eng:501.readin 2.finds 3.del 4.tj 5.exit1-----------------------------table----num name age sex math phy eng ave------3 wf 18 f 98.0 75.0 65.0 79.3------9 yt 17 m 69.0 75.0 50.0 64.7-------6 sc 17 f 78.0 45.0 65.0 62.7-------1.readin 2.finds 3.del 4.tj 5.exit2Into number:3---num name age sex math phy eng ave---3 wf 18 f 98.0 75.0 65.0 79.3----1.readin 2.finds 3.del 4.tj 5.exit3Into number:6---num name age sex math phy eng ave---6 sc 17 f 78.0 45.0 65.0 62.6---true? Y/Ny1----------------table------------------num name age sex math phy eng ave----3 wf 18 f 98.0 75.0 65.0 79.3-----9 yt 17 m 69.0 75.0 50.0 64.7-----0 0 0 f 0.0 0.0 0.0 0.0-----1.readin 2.finds 3.del 4.tj 5.exit4 1.input the math 2.input the phy 3.input the eng 1math: pass num is :3 no pass num is :02.32+82=114right!97*15=1455right!99-58=41right!76-66=10right!58+13=71right!37+49=86right!99+52=151right!49*69=5462wrong!73-38=31wrong!86+34=120right!mark is 80四. 主要错误改正方法1.在本题的编写过程中常出现begin 和end 不配对,只要始它们的个数相同就可以了,就可以了。在程序中常出现的’unknown identifier’没有定义的错误,只要在程序前加上定义,就可以了。还有就是type mismatch’的类型不匹配,只要根据前后内容,重新定义,就可以了。2.在本题编写中,题目要求是两个两位数运算,如果写成c:=random(100)在运行过程中,就会出现一位数运算,只要把它写成c:=random(90)+10,就可以了。五. 实习小结1.第一题的程序编写比较复杂,需要较多的定义,因而在后面的程序部分,就常出现标识符重复,而导致的类型不匹配。还有就是每个部分编好后,上下不能连接,而无法调用。2.第二题较第一题简单,和书上的例题类似,所以,比较简单,但从中也出现一些不问题。以上两大题中出现的问题,要在同学的帮助下,才能完成。总的来说两题程序比较困难六. 程序清单1.program twins;const m=3;n=3;typestudent=recordnum:integer;name:string[3];age:integer;sex:char;s:array[1..n] of real;math,eng,phy:real;ave:real;end;sarr=array[1..m] of student;ta=array [1..m] of student;f=string[6];varstu:sarr;ct:ta;k,d:integer;procedure readin(var stu:sarr);const wrong='0<=data<=100 ,again!';var j,i:integer;a:student;beginwriteln;writeln('Input ',m,' num name sex math phy eng',' of student.');for j:=1 to m dobeginwriteln;writeln('Input the ',j,' student :');with a dobeginwrite('num:');readln(num);write('name:');readln(name);write('age:');readln(age);write('sex:');readln(sex);while(sex<>'m')and(sex<>'f')dobeginwrite('sex:');readln(sex)end;for i:=1 to n do begincase i of1:begin write('math:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('math:');readln(s[i]);end;end;2:begin write('phy:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('phy:');readln(s[i]);end;end;3:begin write('eng:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('eng:');readln(s[i]);end;end;end;end;stu[j]:=a;end;writeln;end;end;procedure ave(var stu:sarr);var j,i:integer;k:real;beginfor j:=1 to m dobegink:=0;with stu[j] dobeginfor i:=1 to n do k:=k+s[i];ave:=k/nend;end;end;procedure px(var stu:sarr);var tm:ta;j,i,p:integer;beginfor j:=1 to m dobeginp:=j;for i:=j+1 to m doif stu[i].ave>stu[p].ave then p:=i;tm[1]:=stu[p];stu[p]:=stu[j];stu[j]:=tm[1];end;end;procedure head(ct:ta);var i:integer;beginwrite(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;with ct[1] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7,' ');write(ave:10,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;procedure find(var stu:sarr);var n,i:integer;u:boolean;beginu:=true;while u dobeginwrite('Into number:');readln(n);for i:=1 to m dobeginif stu[i].num=n then beginct[1]:=stu[i];u:=false;d:=iend;end;end;end;procedure del(var stu:sarr);var i:integer;b:char;beginhead(ct);write('true? Y/N');readln(b);if b='y' then begin write('1');with stu[d] dobeginnum:=0;name:='0';age:=0;sex:='f';for i:=1 to n do s[i]:=0;ave:=0end;endelseend;procedure tj(var stu:sarr);var w1,q1,q2,num,j:integer;h1,h2,h3:boolean;beginh1:=false;h2:=false;h3:=false;q1:=0;q2:=0;writeln(' ':30,'1.input the math 2.input the phy 3.input the eng ');readln(w1);case w1 of1:h1:=true;2:h2:=true;3:h3:=true;end;if h1 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].math>=60 thenq1:=q1+1elseq2:=q2+1;writeln('math:');end;if h2 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].phy>=60 thenq1:=q1+1elseq2:=q2+1;writeln('phy:');end;if h3 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].eng>=60 thenq1:=q1+1elseq2:=q2+1;writeln('eng:');end;end;end;end;writeln(' ':5,'pass num is :',q1);writeln(' ':5,'no pass num is :',q2);end;procedure head1(var stu:sarr);var j,i:integer;beginwriteln('----------------table--------------':60);writeln;write(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;for j:=1 to m do beginwith stu[j] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7:1,' ');write(ave:10:1,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;end;beginreadin(stu);ave(stu);k:=0;while k<>5 dobeginwriteln('1.readin 2.finds 3.del 4.tj 5.exit');read(k);readln;while(k<>1)and(k<>2)and(k<>3)and(k<>4)and(k<>5)dobeginwriteln(' mistake,please again');read(k)end;case k of1: begin px(stu);head1(stu)end;2: begin find(stu);head(ct)end;3: begin find(stu);del(stu);px(stu);head1(stu)end;4: begin tj(stu);end;5: writeln('exit!');end;end;end..2.program shadow;var a,b,c,d,e:integer;right:boolean;procedure s1;beginwriteln('right!');right:=trueend;procedure s2;beginwriteln('wrong!');right:=falseend;procedure s3(x,y:integer);var h:integer;beginwrite(x,'+',y,'=');readln(h);if h=x+y then s1else s2 end;procedure s4(x,y:integer);var h,w:integer;beginif x第二篇:《c语言程序设计》上机实验报告要求
第三篇:C语言程序设计上机实验报告
第四篇:上机实验报告格式
第五篇:上机实验报告