c语言实验报告.docx

上传人:b****6 文档编号:3306479 上传时间:2022-11-21 格式:DOCX 页数:11 大小:42.25KB
下载 相关 举报
c语言实验报告.docx_第1页
第1页 / 共11页
c语言实验报告.docx_第2页
第2页 / 共11页
c语言实验报告.docx_第3页
第3页 / 共11页
c语言实验报告.docx_第4页
第4页 / 共11页
c语言实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c语言实验报告.docx

《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(11页珍藏版)》请在冰豆网上搜索。

c语言实验报告.docx

c语言实验报告

实验报告

课程名称:

C语言程序设计教程

实验项目名称:

实验七数组___________

班级与班级代码:

信息管理与信息系统1班11251101113

实验室名称(或课室):

SS-304__________

专业:

信息管理与信息系统_

任课教师:

张军____________________

学号:

11251101113__________

姓名:

冯启珊_______________

实验日期:

2011年12月16日__________

 

广东商学院教务处制

姓名冯启珊实验报告成绩

评语:

 

指导教师(签名)

年月日

说明:

指导教师评分后,实验报告交院(系)办公室保存。

正文

实验报告要求与排版字号:

1.实验报告按实验项目填写,每个学生做完实验必须填写

2.实验报告可参照如下内容格式写作:

实验目的、实验原理、实验设备、结果预测、实验步骤、实验结果、实验分析、结论。

3.实验报告排版打印统一用A4(21X29.7cm)格式。

4.标题用小二号黑体加粗,正文用四号宋体。

行距为固定值20磅。

5.页面上边距2.54cm,下边距2.54cm,左边距3cm,右边距2.2mm;

6.实验报告页码从正文页面起计算。

页码字号,选用小四号粗黑体并居中。

 

一、实验目的

通过做关于数组的十一个实验,实现:

1、熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。

2、熟练掌握字符数组和字符串函数的应用。

3、熟练掌握一维数组以及一维数组元素的存储关系。

4、熟练掌握一维数组和二维数组的使用以及在函数中的传递。

5、通过做试验实践掌握和数组有关的算法。

二、实验原理

数组是指具有形同类型的数据组成的序列,为有序集合。

通过一维数组、二维数组、字符数组和字符串函数的应用,结合前面所学的循环语句等,可将以前复杂的程序简单化,简单而方便地设计程序完成相应的功能。

三、实验设备

C++软件

四、实验内容、实验结果、结果分析

第1题:

输入并运行程序

main()

{inti,a[5],b[5],c[5];/*变量说明,数组说明*/

a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;

b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;

for(i=0;i<=4;i++)

{c[i]=a[i]*b[i];

printf("c[%d]=%d\n",i,c[i]);

}

}

运行结果为:

c[0]=4

c[1]=42

c[2]=36

c[3]=40

c[4]=27

结果分析:

定义三个数组a[5],b[5],c[5],分别给数组a和b赋值,数组c各元素的值由c[i]=a[i]*b[i]求得。

第2题:

输入并运行程序

main()

{intsum,i;

inta[]={5,8,4,6,4,3,8,2,4,5,6};/*数组元素初始化*/

sum=0;

for(i=0;i<=10;i++)

sum+=a[i];/*求数组元素之和*/

printf("sum=%d\n",sum);

}

运行结果:

sum=55

结果分析:

程序实现简单地给一维数组赋值并求全部元素之和。

值得注意的是:

对全部元素赋初值时,可不制定数组长度;数组下标为变量,可用循环简化程序。

第3题:

程序实现:

从键盘输入5个数,输出最大、最小元素的值以及它们的下标。

将程序补充完整并上机试调。

#include

main()

{inti,j,k,max,min;

inta[5];

for(i=0;i<5;i++)

scanf("%d",&a[i]);

max=min=a[0];

j=k=0;

for(i=0;i<5;i++)

{if(max

{max=a[i];j=i;}

elseif(min>a[i])

{min=a[i];k=i;}

}

printf("max:

a[%d]=%d,min:

a[%d]=%d\n",j,max,k,min);

}

测试数据:

12345

运行结果:

Max:

a[4]=5,min:

a[0]=1

结果分析:

从程序不难看出,一开始给max和min赋值为0,然后让数组中每个元素与max和min比较大小,通过“打擂台”的方式测试出数值中的最大值和最小值。

第4题:

输入并运行以下程序,分析程序运行的结果。

main()

{inti,j;

inta[3][2]={12,34,24,11,45,20};

intb[3][2]={11,23,34,13,10,64};

intc[3][2];

for(i=0;i<=2;i++)/*三行*/

for(j=0;j<=1;j++)/*二列*/

c[i][j]=a[i][j]+b[i][j];

for(i=0;i<=2;i++)

{for(j=0;j<=1;j++)

printf("%d+%d=%d",a[i][j],b[i][j],c[i][j]);

printf("\n");

}

}

运行结果:

12+11=2334+23=57

24+34=5811+13=24

45+10=5520+64=84

结果分析:

以上程序实现两个3行2列的矩阵相加。

 

第5题:

以下程序实现:

从键盘输入12个整形数,组成一个3行4列的二维数组并输出。

将程序补充完整并上机试调。

main()

{inta[3][4];

inti,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

printf("Theresultis:

\n");

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

printf("%5d",a[i][j]);

printf("\n");

}

}

运行结果:

Theresultis:

1234

5678

9101112

结果分析:

程序实现简单的二维数组的输入和输出,应注意从键盘输入的12个整数要以空格、Enter键或Tab键分开。

第6题:

输入并运行以下程序。

 

main()

{chara[7]="Foxpro";

printf("%s\n");

printf("%c%c%c\n",a[0],a[1],a[2]);

}

运行结果:

Fox

结果分析:

用“%s”格式输出指定地址开始的字符串,用“%c”格式输出数组元素的字符。

 

第7题:

输入并运行以下程序。

main()

{inti;

chara[][8]={"SQL","Foxpro","Unix","ASP"};

for(i=0;i<=3;i++)

printf("%s\n",a[i]);

}

运行结果:

SQL

Foxpro

Unix

ASP

结果分析:

“chara[][8]={"SQL","Foxpro","Unix","ASP"};

”定义了一个二维数组。

a[i]是第i个字符串的串首地址。

因此,字符串输出时用“printf("%s\n",a[i]);”。

第8题:

输入并运行以下程序,分析程序的运行结果。

main()

{inta[5]={1,2,3,4,5};

pr(a);

for(i=0;i<5;i++)printf("%5d",a[i]);

}

pr(p)

intp[];

{inti;

for(i=0;i<5;i++)p[i]=p[i]*p[i];

}

把以上程序输入并编译,编译错误,出现“'pr'undefined”和‘i’为undeclaredidentifier的提示,经试调,把程序改为:

#include

inti;

pr(p)

intp[];

{

for(i=0;i<5;i++)p[i]=p[i]*p[i];

}

main()

{inta[5]={1,2,3,4,5};

pr(a);

for(i=0;i<5;i++)printf("%5d",a[i]);

}

结果:

1491625

结果分析:

当形参作数组时,对应的实参作数组名,传递的是数组的首地址,此时形参和实参共享同一段内存单元,形参数组改变会影响实参数组元素的改变。

第9题:

编写程序:

从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。

自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。

#include

#include//包含数组初始化函数的头文件

#defineM100

voidantitone(inta[],intn)

{

inti,j;

intk;

i=0;

j=n-1;

while(i

{

k=a[i];

a[i]=a[j];

a[j]=k;

i++;

j--;

}

}

main()

{

intarray[100];

intn,i,m;

printf("请输入要输入整数的个数:

");

scanf("%d",&n);

memset(array,0,sizeof(array));//数组初始化语句

printf("请输入整数:

");

for(i=0;i

scanf("%d",&array[i]);

antitone(array,n);

for(m=0;m

{

printf("%d\n",array[m]);

}

}

运行结果:

请输入要输入整数的个数:

3

请输入整数:

123

3

2

1

结果分析:

在本程序中,自定义函数实现讲数组中n个数据按逆序存放,而后只需先输入整数个数,再输入对应多个整数即可实现题目要求。

第10题:

已知某数列的前两项为2和3,其后每一项为其前两项之积。

分别用函数和数组编程实现:

从键盘输入一个整数x,判断并输出x最接近数列的第几项?

#include

#include

voidF(inta[],intn)

{

inti;

a[0]=2;

a[1]=3;

for(i=2;i

{

a[i]=a[i-1]*a[i-2];

}

}

main()

{

inta[100],x,k1,k2;

inti;

F(a,100);

printf("inputx:

");

scanf("%d",&x);

i=0;

for(;x>a[i];i++);

k1=abs(x-a[i-1]);

k2=abs(x-a[i]);

if(k1>k2)

printf("x最接近第%d项\n",i+1);

else

printf("x最接近第%d项\n",i);

return0;

}

运行结果:

Inputx:

5

X最接近第3项

结果分析:

程序先自定义一个F函数,实现数列的有序排列,而后通过输入的数x与数列中数求差,差越小,说明x越接近数列的某个数。

第11题:

分别用函数和数组实现,输入10个学生5门课的成绩并完成如下功能:

(1)求每个学生的平均分

(2)求每门课程的平均分(3)找出最高分数所对应的学生(学号)和课程(4)分别统计5门课程都高于90分的学生人数

#include

fun()

{inti,j,d[10][5],max=0,sum=0,b[2];

for(i=0;i<10;i++)

for(j=0;j<5;j++)

scanf("%d",&d[i][j]);

printf("AverageStudents:

\n");

for(i=0;i<10;i++)

{for(j=0;j<5;j++)

{if(d[i][j]>max)

max=d[i][j];

sum+=d[i][j];

}

printf("NO.%d%d\n",i,sum/5);

sum=0;

}

printf("AverageSubjects:

\n");

for(j=0;j<5;j++)

{for(i=0;i<10;i++)

{sum+=d[i][j];

if(d[i][j]==max)

{b[0]=i;b[1]=j;}

}

printf("SB.%d%d\n",j,sum/10);

sum=0;

}

printf("Highest:

NO.%dGRADE.%d",b[0],b[1]);

}

main()

{fun();;return0;}

 

五、实验中出现的问题及解决方法

1、在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。

2、在输入程序中,在scanf语句中在输入量前忘记加“&”,调试发现错误,并改正。

六、结论

在本次实验中,通过对11个上机题的练习,对于数组的定义、引用和初始化以及数组作函数参数有更深刻的认识,同时巩固了对函数定义及声明和循环语句的运用。

同时,通过自己设计程序和对程序进行调试,清晰了编程的思路,减少了错误了发生。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1