计算机科学与技术实验报告.docx

上传人:b****0 文档编号:256683 上传时间:2022-10-07 格式:DOCX 页数:33 大小:160.97KB
下载 相关 举报
计算机科学与技术实验报告.docx_第1页
第1页 / 共33页
计算机科学与技术实验报告.docx_第2页
第2页 / 共33页
计算机科学与技术实验报告.docx_第3页
第3页 / 共33页
计算机科学与技术实验报告.docx_第4页
第4页 / 共33页
计算机科学与技术实验报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

计算机科学与技术实验报告.docx

《计算机科学与技术实验报告.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术实验报告.docx(33页珍藏版)》请在冰豆网上搜索。

计算机科学与技术实验报告.docx

计算机科学与技术实验报告

哈尔滨工程大学

《程序设计基础》实验报告

基础实践二

姓名:

王明班级:

学号:

实验时间:

2017年5月8日

成绩

哈尔滨工程大学计算机基础课程教学中心

实验五

实验题目1:

输入两个整数数组,每个数组有5个整数,将两者合并并排序输出。

设计思想:

定义两个5个元素的数组,一个10个元素的数组,数据类型为整型,通过for循环输入前两个数组的值,并依次存入第三个数组中。

另外编写排序函数,在主函数中调用对第三个数组中的元素排序并输出。

实验代码及注释:

#include

#include

voidf1(int*a,inti,intj)

{

intm,n,c;

intk;

m=i;

n=j;

k=a[(i+j)/2];

do{

while(a[m]

while(a[n]>k&&n>i)n--;

if(m<=n){

c=a[m];

a[m]=a[n];

a[n]=c;

m+=1;

n-=1;

}

}while(m<=n);

if(m

if(n>i)f1(a,i,n);

}

intmain()

{

inta1[5],a2[5],c[10];

printf("请输入两个数组,每组五个整数:

\n");

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

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

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

{

c[i]=a1[i];

c[i+5]=a2[i];

}

f1(c,0,9);

printf("排序后为:

\n");

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

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

putchar('\n');

system("pause");

return0;

}

验证与结论:

程序运行正常,结果输出正确。

总结与心得体会:

本实验用到了循环结构对数组输入,这是对多个数据同时输入的一种非常方便的方法。

利用指针进行排序,由于形参和实参在数据传递上有单向性,在进行元素交换类数组函数的编写时,需要借用指针。

本实验将其中一个主要功能编写为函数,使代码模块化,利于阅读查错。

实验题目2:

某公司生成5种产品,每周记录生产的每种产品数量和销售数量。

在每个月月末,公司将对其生产规划进行评估。

该评估需要以下一个或多个信息:

(a)每周生产和销售的数量;

(b)所有生产产品的总量;

(c)所有销售产品的总量;

(d)每种产品生产和销售的总量;

假设生产和销售的产品分别用二维数组M[4][5]和S[4][5]表示。

其中,M[i][j]表示第i周生产第j种产品的数量。

S[i][j]表示第i周销售第j种产品的数量。

假设使用一维数组C[5]来表示每种产品的价格。

其中,C[i]表示第j种产品的价格。

数组M、S和C的值都在程序中输入。

定义两个二维数组Mvalue和Svalue来表示生产和销售的产品价值。

输出变量的计算方式如下:

Mvalue[i][j]=第i周生产第j种产品的价值=M[i][j]*C[i]

Svalue[i][j]=第i周销售第j种产品的价值=S[i][j]*C[i]

Mweek[i]=在i周里生产的产品价值=(j从1到5求和)Mvalue[i][j]

Sweek[i]=在i周里所有产品的产品价值=(j从1到5求和)Svalue[i][j]

Mproduct[i]=在本月里生成第j种的产品价值=(i从1到4求和)Mvalue[i][j]

Sproduct[i]=在本月里销售第j种的产品价值=(i从1到4求和)Svalue[i][j]

Mtotal=在本月里生成所有产品的产品总价值=(i从1到4求和)Meek[i][j]

Stotal=在本月里销售所有产品的产品总价值=(i从1到4求和)Seek[i][j]

请编程实现数据的输入和输出。

设计思想:

本实验中涉及多组数值,如数量、周数、价值等。

根据题目要求定义四个二维数组,分别表示生产和销售的数量及价值,再定义四个一维数组表示生产和销售的周数以及产品价值。

最后,根据题目中给定的计算方法理清数组之间关系,设计函数进行计算。

实验代码及注释:

#include

#include

intmain()

{

intM[4][5]={0},S[4][5]={0},C[5]={0},Mvalue[4][5]={0},Svalue[4][5]={0},Mweek[5]={0},Sweek[5]={0},Mproduct[5]={0},Sproduct[5]={0},Mtotal=0,Stotal=0;

intMt=0,St=0,sum=0;

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

{

printf("C[%d]=",j+1);

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

}

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

{

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

{

printf("M[%d][%d]=",i+1,j+1);

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

Mvalue[i][j]=M[i][j]*C[j];

}

}

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

{

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

{

printf("S[%d][%d]=",i+1,j+1);

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

Svalue[i][j]=S[i][j]*C[j];

}

}

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

{

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

{

Mweek[i]+=Mvalue[i][j];

Sweek[i]+=Svalue[i][j];

}

}

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

{

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

{

Mproduct[j]+=Mvalue[i][j];

Sproduct[j]+=Svalue[i][j];

}

}

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

{

Mtotal+=Mweek[i];

Stotal+=Sweek[i];

}

printf("(a):

\n");

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

{

printf("第%d周生成数量:

%d\n",i+1,M[i][0]+M[i][1]+M[i][2]+M[i][3]+M[i][4]);

printf("第%d周销售数量:

%d\n",i+1,S[i][0]+S[i][1]+S[i][2]+S[i][3]+S[i][4]);

printf("\n");

}

printf("(b):

\n");

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

{

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

{

Mt+=M[i][j];

St+=S[i][j];

}

}

printf("所有生产产品的总量:

%d\n",Mt);

printf("\n");

printf("(c):

\n所有销售产品的总量:

%d\n",St);

printf("\n");

printf("(d):

\n");

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

{

printf("第%d种产品生产的总量:

%d\n",j+1,M[0][j]+M[1][j]+M[2][j]+M[3][j]);

printf("第%d种产品销售的总量:

%d\n",j+1,S[0][j]+S[1][j]+S[2][j]+S[3][j]);

printf("\n");

}

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

{

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

{

printf("Mvalue[%d][%d]=%d\n",i+1,j+1,Mvalue[i][j]);

printf("Svalue[%d][%d]=%d\n",i+1,j+1,Svalue[i][j]);

}

}

printf("\n");

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

{

printf("Mweek[%d]=%d\n",i+1,Mweek[i]);

printf("Sweek[%d]=%d\n",i+1,Sweek[i]);

}

printf("\n");

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

{

printf("Mproduct[%d]=%d\n",j+1,Mproduct[j]);

printf("Sproduct[%d]=%d\n",j+1,Sproduct[j]);

}

printf("\n");

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

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

system("pause");

return0;

}

验证与结论:

程序运行正常,结果输出正确。

总结与心得体会:

本实验计算方法已经给出,但涉及较多数组,关系复杂。

由于一个数组可以存放多个数据,导致数据之间关系难以理清。

求解这类问题时,要小心谨慎地先理清数据之间的关系,再根据给定的算法进行计算。

实验题目3:

编程将一个字符串插入到另一个字符串的第n个位置。

设计思想:

定义两个较大的数组,数据类型为字符型。

利用循环对数组赋值。

定义一个变量控制插入的位置。

用strlen函数计算两组字符串长度,在第二个数组中为第一个数组让开位置(留出空位,使原有元素后移至第一数组完全插入时末尾位置),用第一个数组中的字符串覆盖第二个数组中相应位置字符,达到插入的目的。

实验代码及注释:

#include

#include

#include

intmain()

{

intn,i,j;

intlen1,len2;

charstr1[256],str2[256];

printf("请输入str1=");

scanf("%s",&str1);

printf("请输入str2=");

scanf("%s",&str2);

len1=strlen(str2);

len2=strlen(str1)+n-1;

printf("请输入n=");

scanf("%d",&n);

for(i=n-1,j=0;i

{

str2[len1]=str2[i];

str2[i]=str1[j];

len1++;

}

printf("%s",str2);

system("pause");

return0;

}

验证与结论:

程序运行正常,结果输出正确。

总结与心得体会:

本实验用了循环结构对数组进行赋值,这是对多个数据同时输入的一种非常方便的方法。

同时,本实验采取了将原有元素后移为即将插入的元素“让位”的插入方法,这也是

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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