c语言实验7数组实验报告_第1页
c语言实验7数组实验报告_第2页
c语言实验7数组实验报告_第3页
c语言实验7数组实验报告_第4页
c语言实验7数组实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称 程序设计 实验项目名称 数组 班级与班级代码 14级计算机科学与技术1班 实验室名称(或课室) SS1-332 专 业 计算机科学与技术 任课教师 学 号: 姓 名: 实验日期: 2014年 月 日 广东商学院教务处 制 1 实验目的1. 熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。2. 熟练掌握字符数组和字符串函数的使用。3. 熟练掌握一位数组以及一位数组元素的存储关系。4. 熟练掌握一位数组和二维数组的使用以及在函数中的传递。5. 通过上机实践掌握与数组有关的算法。二、实验内容上机题1输入并运行以下程序。实验内容:用2个数组对第3个数组进行赋值#include

2、<stdio.h>main()int i,a5,b5,c5; a0=2,a1=6,a2=4,a3=8,a4=9; b0=2,b1=7,b2=9,b3=5,b4=3; for(i=0;i<=4;i+) ci=ai*bi; printf("c%d=%dn",i,ci); 实验步骤int a5:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。a0a4也可以看成是变量标识字符,中的数值称为数组下标,下标从0开始。数组赋值方法和一般变量一样。例如,a0=2表示将2赋给a0。运行结果上机题2 输入并运行以下程序。实验内容:对不指明数组的数组进

3、行赋值并用循环结构进行求和#include<stdio.h>main()int sum,i; int a=5,8,4,6,4,3,8,2,4,5,6; sum=0; for(i=0;i<=10;i+) sum+=ai; printf("sum=%dn",sum);实验结果实验小结对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。由于数组元素的下标可以是变量,因此数组的操作一般用循环实现。上机题3 程序实现:从键盘输入5个数,输出最大、最小元素的值以及它们的下标。将程序补充完整并上机调试。实验内容:用循环结构对数组进行输入并求

4、出最大最小值及下标#include<stdio.h>main()int i,j,k,max,min; int a5; for(i=0;i<5;i+) scanf("%d",&ai); max=min=a0; i=k=0; for(i=0;i<5;i+) if(max<ai) max=ai;j=i; else if(max>ai) min=ai;k=i; printf("max:a%d=%d,min:a%d=%dn",j,max,k,min);实验结果实验小结:比较最值时令第一个值为最大最小值,再用循环结构把最大

5、值最小值赋给max min上机题4 输入并运行以下程序,分析程序运行结果。实验内容:二维数组的加法#include<stdio.h>main()int i,j; int a32=12,34,24,11,45,20; int b32=11,23,34,13,10,64; int c32; for(i=0;i<=2;i+) for(j=0;j<=1;j+) cij=aij+bij; for(i=0;i<=2;i+) for(j=0;j<=1;j+) printf("%d+%d=%d ",aij,bij,cij); printf("n

6、"); 实验结果:实验小结:以上程序实现两个3行2列的矩阵相加,如果要实现两个矩阵相乘,在其程序的第9行和第12行的“+”改为“*”。上机题5 程序实现:从键盘输入12个数,组成一个3行4列的二维数组并输出。将程序补充完整并上机调试。实验内容:对二维数组的输入输出#include<stdio.h>main()int a34; int i,j; for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d",&aij); printf("The result is:n"); for(i=0;i

7、<3;i+) for(j=0;j<4;j+) printf("%5d",aij); printf("n"); 实验小结运行程序后,从键盘输入的12个整数应以空格、Enter键或Tab键分开。分别输出各行最小值各列最大值实验过程:#include<stdio.h>main()int a34; int i,j,min ,max; for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d",&aij); printf("The result is:n"

8、); for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%5d",aij); min=ai0; if(aij<ai0)min=aij; printf("t%dn",min); ; for(j=0;j<4;j+) for(i=0;i<3;i+) max=a0j; if(aij>a0j)max=aij; printf("t%d",max);实验结果:实验小结:注意格式上机题6 输入并运行以下程序。实验内容:字符串的输入与输出#include<stdio.h>ma

9、in()char a7="Foxpro" printf("%sn"); printf("%ct%ct%cn",a0,a1,a2);实验结果:实验小结:数组可以用字符串进行初始化“char a7=“Foxpro”;”,但是不能将字符串直接赋给数组,如“a7=”Foxpro;”和“a=”Foxpro;”都是错误的。字符串的最后有串尾标志o,所以“char a6=”Foxpro”;”也是不正确的。用“%s”格式输出指定地址开始的字符串,用“%c”格式输出数组元素的字符。上机题7 输入并运行以下程序。实验内容:利用二维数组对字符串进行输入输出

10、#include<stdio.h>main()int i; char a8="SQL","Foxpro","Unix","ASP" for(i=0;i<=3;i+) printf("%sn",ai);实验小结:“char a8="SQL","Foxpro","Unix","ASP";”定义了一个二维数组。a0是一个字符串的串首地址,a1是第2个字符串的串首地址,ai为第i个字符串的串首地址。因此,字

11、符串输出时用“printf(“%s”,ai );”。上机题8 输入并运行以下程序,分析程序运行结果。实验内容:引用函数对数组进行运算#include<stdio.h>main()int a5=1,2,3,4,5; int i; pr(a); for(i=0;i<5;i+)printf("%5d",ai); printf("n");pr(p)int p;int i; for(i=0;i<5;i+)pi=pi*pi;实验结果:实验小结:当形参为数组时,对应的实参为数组名,传递的是数组的首地址,此时实参数组与形参数组共享同一段内存单元,

12、形参数组元素的改变会影响实参数组元素的改变。上机题9编写程序:从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序并输出。自定义函数void antitone(int a,int n)实现将数组中的n个数据按逆序存放。实验内容:将数组反序并输出,实验步骤:#include<stdio.h>void antitone(int a,int n); int b5,n;int i;main() n=5; for(i=0;i<n;i+) scanf("%d",&bi); antitone(b,5); void antitone(int a,

13、int n)int i,t,c5;for(i=0;i<n;i+) ci=an-i-1; printf("%d",ci);实验结果:实验小结:注意局部变量与全局变量作用域,数组的常量表达式必须是常量,格式必须对,还有对程序的了解。上机题10已知某数列的前两项为2和3,其后每一项为其前两项之积。分别用函数和数组实现:从键盘输入一个整数x,判断并输出x最接近数列的第几项?实验内容:从键盘输入一个整数x,判断并输出x最接近数列的第几项实验步骤:#include<stdio.h>#include<math.h>#define M 100int aM=2,

14、3;int i,x,t;main()for(i=0;i<98;i+) ai+2=ai+1+ai;scanf("%d",&x);for(i=0;i<99;i+)if(fabs(ai+1-x)<fabs(ai-x) t=i+1;else t=i;if(x-ai<0)break;printf("%d",t);实验结果:实验小结:注意对输出时,不要相互赋值例如a【i+1】=a【i】,这样会使输出结果出现数组后几组数据的丢失,注意循环结构的结束循环的控制。上机题11分别用函数和数组实现,输入10个学生5门课的成绩并完成如下功能:(1

15、)求每个学生的平均分。(2)求每门课程的平均分。(3)输出一张包括10个学生成绩的成绩单。(4)找出最高分数所对应的学生(学号)和课程。(5)分别统计5门课程都高于90分的学生人数。实验内容:用函数和数组实现,求每个学生的平均分,求每门课程的平均分,输出一张包括10个学生成绩的成绩单,找出最高分数所对应的学生(学号)和课程,分别统计5门课程都高于90分的学生人数。实验步骤:#include<stdio.h>int i,j,a105,t,k,w;static float c10=0;static float d5=0;void max(float c10) for(i=0;i<

16、9;i+) if(ci+1>ci)t=i+1; else t=i; printf("%s %dn","最好成绩学号",t);void max1(float d5) for(j=0;j<4;j+) if(dj+1>cj)k=j+1; else k=j; printf("%s %d","最好成绩科目",k);void max2(float e105) for(i=0;i<10;i+) for(j=0;j<5;j+) if(eij<90)continue; w+;printf(&quo

17、t;%s %d","成绩大于90的人数",w);int main()for(i=0;i<10;i+)for(j=0;j<5;j+) scanf("%d",&aij); ci+=aij;printf(" %s %s %s %s %s %s %sn","学号","语文","高数","英语","程序设计","马克思","平均成绩");for(i=0;i<10;i+)printf("%d",i); for(j=0;j<5;j+) printf("%d ",aij); printf("%ftn",ci/5); printf("%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论