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

上传人:b****9 文档编号:25095901 上传时间:2023-06-05 格式:DOCX 页数:34 大小:515.66KB
下载 相关 举报
计算机科学与技术第次实验报告docx.docx_第1页
第1页 / 共34页
计算机科学与技术第次实验报告docx.docx_第2页
第2页 / 共34页
计算机科学与技术第次实验报告docx.docx_第3页
第3页 / 共34页
计算机科学与技术第次实验报告docx.docx_第4页
第4页 / 共34页
计算机科学与技术第次实验报告docx.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

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

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

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

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

 

哈尔滨工程大学

 

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

 

基础实践一

 

姓名:

班级:

 

学号:

 

实验时间:

2018年5月10日

 

成绩

 

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

 

实验题目1:

输入两个整数数组,每个数组有五个整数,将两者和并并排列输出。

 

设计思想:

 

定义三个数组,将两组数据存储到第三个数组中,再用冒泡排序对其由大到小排序并输出。

 

实验代码及注释:

 

#include

 

#include

 

#defineN10//宏定义

 

intmain()

 

{

 

inta[5],b[5],c[N];//第一组数据,第二组,合并数组

 

inti,j,t;//循环变量,中间变量

 

printf("输入第一组数据:

\n");//输入数据

 

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

 

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

 

printf("输入第二组数据:

\n");

 

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

 

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

 

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

 

{

 

c[i]=a[i];//

 

两组数据合并

 

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

 

}

 

for(i=0;i

 

{

 

冒泡排序从大到小

 

for(j=0;j

 

{

 

if(c[j]

 

{

 

t=c[j];

 

c[j]=c[j+1];

 

c[j+1]=t;

 

}

 

}

 

}

 

printf("合并并由大到小排列后数据为:

\n");

 

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

 

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

 

//排序:

冒泡,选择,return0;

 

}

 

验证与结论:

 

总结与心得体会:

数组合并比较简单但要防止数组越界,数组存储数据是从第0位开始,故要多加注意。

冒泡选择是最基础的排序算法必须掌握。

 

实验题目2:

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

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

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

 

每周生成和销售的数量;

 

所有生产产品的总量;

 

所有销售产品的总量;

 

每种产品生产和销售的总量。

 

假设生产和销售的产品和销售分别用二维数组M和S表示,如下所示。

 

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

S[i][j]表示第i

 

周销售第j种产品的数量。

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

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

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

 

设计思想:

声明四个数组函数:

每周生成和销售的数量,所有生产产品的总量,所有销售产品的总量,每种产品生产和销售的总量。

然后直接调用使其对主函数中数组值直接改变,最后用循环输出。

 

实验代码及注释:

 

#include

 

#include

 

voidmoney(doublemva[5][6],doublem[5][6],doublec[6]);//

 

函数声明

 

voidsum1(doublesweek[5],doublem[5][6]);

 

voidsum2(doublempr[6],doublem[5][6]);

 

doublesum3(doublem[5]);

 

intmain()

 

{

 

inti,j;//行,列

 

doubleM[5][6],S[5][6],C[6];//第几周生产第几种产品的数

 

量,第几周销售第几种产品的数量,每种产品的价格

 

double

 

Mvalue[5][6],Svalue[5][6],Mweek[5],Sweek[5],Mproduct[6],Spr

 

oduct[6];

 

doubleMtotal,Stotal;

 

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

 

{

 

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

 

{printf("请输入第%d周生产第%d种产品的数

 

量:

",i,j);

 

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

 

printf("请输入第%d周销售第%d种产品的数

 

量:

",i,j);

 

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

 

}

 

}

 

printf("\n");

 

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

 

{

 

printf("请输入第%d种产品的价格:

",j);

 

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

 

}

 

printf("\n");

 

money(Mvalue,M,C);//调用函数

 

money(Svalue,S,C);

 

sum1(Mweek,Mvalue);

 

sum1(Sweek,Svalue);

 

sum2(Mproduct,Mvalue);

 

sum2(Sproduct,Svalue);

 

Mtotal=sum3(Mweek);

 

Stotal=sum3(Sweek);

 

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

 

{

 

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

 

{

 

printf("第%d周生产第%d种产品的价

 

值%.2lf\n",i,j,Mvalue[i][j]);

 

printf("第%d周销售第%d种产品的价

 

值%.2lf\n",i,j,Svalue[i][j]);

 

printf("在本月里生成第%d种产品的价

 

值%.2lf\n",j,Mproduct[j]);

 

printf("在本月里销售第%d种产品的价

 

值%.2lf\n",j,Sproduct[j]);

 

}

 

printf("在第%d周生产的产品价值%.2lf\n",i,Mweek[i]);

 

printf("在第%d周所有产品的价值%.2lf\n",i,Sweek[i]);

 

}

 

printf("在本月里生产所有产品总价值%.2lf\n",Mtotal);

 

printf("在本月里销售所有产品总价值%.2lf\n",Stotal);

 

return0;

 

}

 

voidmoney(doublemva[5][6],doublem[5][6],doublec[6])//第

 

i周生产和销售第j种产品的价值

 

{

 

inti,j;

 

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

 

{

 

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

 

{

 

mva[i][j]=m[i][j]*c[j];

 

//printf("第%d周生产第%d种产品的价

 

值%lf\n",i,j,m[i][j]*c[j]);

 

}

 

}

 

}

 

voidsum1(doublesweek[5],doublem[5][6])//第i周生产和销售

 

的产品的价值

 

{

 

inti,j;

 

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

 

{

 

sweek[i]=0;//数组初始化

 

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

 

{

 

sweek[i]=sweek[i]+m[i][j];

 

}

 

}

 

}

 

voidsum2(doublempr[6],doublem[5][6])//在本月生产和销售第

 

j种产品的价值

 

{

 

inti,j;

 

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

 

{

 

mpr[j]=0;//数组初始化

 

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

 

{

 

mpr[j]=mpr[j]+m[i][j];

 

}

 

}

 

}

 

doublesum3(doublem[5])//在本月里生产和销售所有产品总价值

 

{

 

inti;

 

doublesum3=0;

 

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

 

{

 

sum3=sum3+m[i];

 

}

 

returnsum3;

 

}

 

验证与结论:

 

总结与心得体会:

数组参数形参实质的本质是指针,使用数组函数使得代码看起来更加整洁,可读性更高。

当出现大量复制代码时考虑能否用函数统一起来,否则在后期维护上将变得困难许多。

 

实验题目3:

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

 

设计思想:

 

使用

 

在第

 

给a

 

strlen函数计算数组长度,然后使用循环用倒序赋值使an个位置及以后字符向后挪数组b长度,再用倒序赋值法将的空位。

 

数组

 

b赋

 

实验代码及注释:

 

#include

 

#include

 

intmain()

 

{

 

intn,count1,count2,i,j;//位置,字符串长度,循环变量

 

printf("输入n值:

\n");

 

scanf("%d",&n);

 

chara[20];//默认长度为20

 

charb[20];

 

printf("输入a:

\n");

 

scanf("%s",a);

 

printf("输入b:

\n");

 

scanf("%s",b);

 

count1=strlen(a);//计算字符串a与b的长度

 

count2=strlen(b);

 

for(i=count1-1;i>=(n-1);i--)//倒序赋值,使a在第n个位置

 

及以后字符向后挪count2位

 

a[i+count2]=a[i];

 

i=n-1+count2;//对i重新赋值为n-1+count2

 

for(j=count2-1;j>=0;j--)//

 

倒序赋值将b赋给

 

a空位

 

{

 

a[i]=b[j];

 

i--;

 

}

 

printf("新字符串为:

");

 

for(j=0;j

 

printf("%c",a[j]);

 

return0;

 

}

 

验证与结论:

 

总结与心得体会:

 

输入字符串后末尾会有一个\0,在赋值时必须极为小心,有可能会使程序提前终止得不到预期的效果,另外利用strlen函数计算数组长度时不包括末尾的\0。

 

实验题目4:

编写一个程序,使输入的一个字符串按反序存放,在主函数中输入输出字符。

 

设计思想:

 

输入字符串存储在a数组中,利用strlen函数计算数组a长度,再用循环倒序存储在b数组中并输出。

 

实验代码及注释:

 

#include

 

#include

 

#definen100//宏定义n值为100

 

intmain()

 

{

 

chara[n],b[n];//定义字符串数组

 

inti,j=0;//在数组中存储位置

 

printf("请输入字符:

\n");

 

gets(a);//输入字符串

 

i=strlen(a)-1;//数组长度减一

 

for(;i>=0;i--)//倒序输出存储

 

{

 

b[j]=a[i];//倒序存储

 

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

 

j++;

 

}

 

return0;

 

}

 

验证与结论:

 

总结与心得体会:

 

利用scanf函数输入字符串时无法输入空格,故用了gets函数来输入字符串。

 

实验题目5:

编写程序,从键盘输入一行字符,统计其中英文字母、空格、数字和其他字符的个数。

 

设计思想:

输入字符串并存储在a数组中,然后将其转换为整型数组存储在数组b中,再利用ASCII码的范围对其进行统计输出。

 

实验代码及注释:

 

#include

 

#include

 

#definen200//宏定义n值为200

 

intmain()

 

{

 

chara[n];//定义字符串数组

 

inti,j;//循环变量

 

intcount1=0,count2=0,count3=0,count4=0;//英文字母、空

 

格、数字和其他字符的个数

 

intb[n];//整型数组

 

printf("请输入字符:

\n");

 

gets(a);//输入字符

 

j=strlen(a);//将数组a的长度赋给j

 

for(i=0;i

 

{

 

b[i]=a[i];//将字符转换成ASCII码存储在b数组中

 

}

 

for(i=0;i

 

{

 

if((b[i]>=65&&b[i]<=90)||(b[i]>=97&&b[i]<=122))//英

 

文字母的范围

 

count1++;

 

elseif(b[i]==32)//空格的范围

 

count2++;

 

elseif(b[i]>=48&&b[i]<=57)//数字的范围

 

count3++;

 

else

 

count4++;

 

}

 

printf("英文字母有%d个、空格有%d个、数字有%d个,其他字

 

符有%d个\n",count1,count2,count3,count4);//输出统计个数

 

return0;

 

}

 

验证与结论:

 

总结与心得体会:

 

如果直接对字符串进行统计不好统计,故将其转换为整型数组利用

 

ASCII码进行统计计数,任何字符都有相对应的ASCII码值,使用

 

ASCII码使问题变得简单。

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

当前位置:首页 > 高等教育 > 经济学

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

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