ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:160.91KB ,
资源ID:28749284      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28749284.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机科学与技术实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、计算机科学与技术实验报告哈尔滨工程大学程序设计基础实验报告基础实践二姓 名: 王明 班 级: 20160613 学 号: 20160613 实验时间: 2017 年 5 月 8 日成绩哈尔滨工程大学计算机基础课程教学中心实验五实验题目1:输入两个整数数组,每个数组有5个整数,将两者合并并排序输出。设计思想:定义两个5个元素的数组,一个10个元素的数组,数据类型为整型,通过for循环输入前两个数组的值,并依次存入第三个数组中。另外编写排序函数,在主函数中调用对第三个数组中的元素排序并输出。实验代码及注释:#include#include void f1(int *a, int i, int j)

2、 int m, n, c; int k; m = i; n = j; k = a(i + j) / 2; do while (amk&mk&ni) n-; if (m = n) c = am; am = an; an = c; m+=1; n-=1; while (m = n); if (mi) f1(a, i, n);int main() int a15,a25,c10; printf(请输入两个数组,每组五个整数:n); for(int i=0;i5;i+) scanf(%d %d,&a1i,&a2i); for(int i=0;i5;i+) ci=a1i; ci+5=a2i; f1(c,

3、0,9); printf(排序后为:n); for(int i=0;i10;i+) printf(%d ,ci); putchar(n); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验用到了循环结构对数组输入,这是对多个数据同时输入的一种非常方便的方法。利用指针进行排序,由于形参和实参在数据传递上有单向性,在进行元素交换类数组函数的编写时,需要借用指针。本实验将其中一个主要功能编写为函数,使代码模块化,利于阅读查错。实验题目2:某公司生成5种产品,每周记录生产的每种产品数量和销售数量。在每个月月末,公司将对其生产规划进行评估。

4、该评估需要以下一个或多个信息:(a)每周生产和销售的数量;(b)所有生产产品的总量;(c)所有销售产品的总量;(d)每种产品生产和销售的总量;假设生产和销售的产品分别用二维数组M45和S45表示。其中,Mij表示第i周生产第j种产品的数量。Sij表示第i周销售第j种产品的数量。假设使用一维数组C5来表示每种产品的价格。其中,Ci表示第j种产品的价格。数组M、S和C的值都在程序中输入。定义两个二维数组Mvalue和Svalue来表示生产和销售的产品价值。输出变量的计算方式如下:Mvalueij=第i周生产第j种产品的价值=Mij*CiSvalueij=第i周销售第j种产品的价值=Sij*CiMw

5、eeki=在i周里生产的产品价值=(j从1到5 求和)MvalueijSweeki=在i周里所有产品的产品价值=(j从1到5 求和)SvalueijMproducti=在本月里生成第j种的产品价值=(i从1到4 求和)MvalueijSproducti=在本月里销售第j种的产品价值=(i从1到4 求和)SvalueijMtotal=在本月里生成所有产品的产品总价值=(i从1到4 求和)MeekijStotal=在本月里销售所有产品的产品总价值=(i从1到4 求和)Seekij请编程实现数据的输入和输出。设计思想:本实验中涉及多组数值,如数量、周数、价值等。根据题目要求定义四个二维数组,分别表示

6、生产和销售的数量及价值,再定义四个一维数组表示生产和销售的周数以及产品价值。最后,根据题目中给定的计算方法理清数组之间关系,设计函数进行计算。实验代码及注释:#include#include int main() int M45=0,S45=0,C5=0,Mvalue45=0,Svalue45=0,Mweek5=0,Sweek5=0,Mproduct5=0,Sproduct5=0,Mtotal=0,Stotal=0; int Mt=0,St=0,sum=0; for(int j=0;j5;j+) printf(C%d=,j+1); scanf(%d,&Cj); for(int i=0;i4;i

7、+) for(int j=0;j5;j+) printf(M%d%d=,i+1,j+1); scanf(%d,&Mij); Mvalueij=Mij*Cj; for(int i=0;i4;i+) for(int j=0;j5;j+) printf(S%d%d=,i+1,j+1); scanf(%d,&Sij); Svalueij=Sij*Cj; for(int i=0;i4;i+) for(int j=0;j5;j+) Mweeki+=Mvalueij; Sweeki+=Svalueij; for(int j=0;j5;j+) for(int i=0;i4;i+) Mproductj+=Mva

8、lueij; Sproductj+=Svalueij; for(int i=0;i4;i+) Mtotal+=Mweeki; Stotal+=Sweeki; printf(a):n); for(int i=0;i4;i+) printf(第%d周生成数量:%dn,i+1,Mi0+Mi1+Mi2+Mi3+Mi4); printf(第%d周销售数量:%dn,i+1,Si0+Si1+Si2+Si3+Si4); printf(n); printf(b):n); for(int i=0;i4;i+) for(int j=0;j5;j+) Mt+=Mij; St+=Sij; printf(所有生产产品的总

9、量:%dn,Mt); printf(n); printf(c):n所有销售产品的总量:%dn,St); printf(n); printf(d):n); for(int j=0;j5;j+) printf(第%d种产品生产的总量:%dn,j+1,M0j+M1j+M2j+M3j); printf(第%d种产品销售的总量:%dn,j+1,S0j+S1j+S2j+S3j); printf(n); for(int i=0;i4;i+) for(int j=0;j5;j+) printf(Mvalue%d%d=%dn,i+1,j+1,Mvalueij); printf(Svalue%d%d=%dn,i+

10、1,j+1,Svalueij); printf(n); for(int i=0;i4;i+) printf(Mweek%d=%dn,i+1,Mweeki); printf(Sweek%d=%dn,i+1,Sweeki); printf(n); for(int j=0;j5;j+) printf(Mproduct%d=%dn,j+1,Mproductj); printf(Sproduct%d=%dn,j+1,Sproductj); printf(n); printf(Mtotal=%dn,Mtotal); printf(Stotal=%dn,Stotal); system(pause); ret

11、urn 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验计算方法已经给出,但涉及较多数组,关系复杂。由于一个数组可以存放多个数据,导致数据之间关系难以理清。求解这类问题时,要小心谨慎地先理清数据之间的关系,再根据给定的算法进行计算。实验题目3:编程将一个字符串插入到另一个字符串的第n个位置。设计思想:定义两个较大的数组,数据类型为字符型。利用循环对数组赋值。定义一个变量控制插入的位置。用strlen函数计算两组字符串长度,在第二个数组中为第一个数组让开位置(留出空位,使原有元素后移至第一数组完全插入时末尾位置),用第一个数组中的字符串覆盖第二个数组中相应位置字符,达到插入的

12、目的。实验代码及注释:#include#include#includeint main() int n,i,j; int len1,len2; char str1256,str2256; 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;ilen2,jstrlen(str1);i+,j+) str2len1=str2i; str2i=st

13、r1j; len1+; printf(%s,str2); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验用了循环结构对数组进行赋值,这是对多个数据同时输入的一种非常方便的方法。同时,本实验采取了将原有元素后移为即将插入的元素“让位”的插入方法,这也是一种比较常用的方法。在对数组中元素进行移位时,要特别注意是否相差一,因为数组计数从零开始,这种问题特别容易发生。所以,在查错时也要特别注意这一点。实验题目4:编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。设计思想:设计函数对数组中的字符串进行反序排列。首先设

14、计一个函数对数组中的两个元素进行交换,从首尾两端同时进行,第一位和最后一位交换第二位和倒数第二位进行交换,依次类推,实现数组的反序。在主函数中调用。实验代码及注释:#include#include #include#define swap(a,b) char temp; temp=a;a=b;b=temp;void f2(char s) int lenth=strlen(s); char temp; for(int i=0;ilenth/2;i+) swap(si,slenth-1-i);int main() char s256; printf(请输入一串字符:n); scanf(%s,&s)

15、; f2(s); printf(反序后为:n); printf(%s,s); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验通过利用数组直接作为函数形参,直接对数组进行反序,省去了借用指针的过程,更加简洁方便。实验题目5:编写程序,从键盘输入一行字符,统计其中英文字母数、空格、数字和其他字符数的个数。设计思想:分别编写三个函数对字符进行检测,函数的编写根据ASCll码进行检测,函数结果返回1或0(符合要求返回1,反之返回0)。在主函数中对输入的字符串进行逐位检测,直接利用三个函数的返回值进行计数,最后分别输出结果。实验代码及注释

16、:#include#includeint zimu(char s) if(64s&s91|96s&s123) return 1; else return 0;int kongge(char s) if(s= ) return 1; else return 0;int shuzi(char s) if(48=s&s=57) return 1; else return 0;int main() char s; int zm=0,kg=0,sz=0,qita=0; printf(请输入一串字符:n); while(s=getchar()!=n) zm+=zimu(s); kg+=kongge(s);

17、 sz+=shuzi(s); printf(字母=%dn空格=%dn数字=%d,zm,kg,sz); system(pause); return 0;验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验利用了ASCll码对字符进行判断,由于字符与ASCll码一一对应,所以ASCll码经常被用来判断字符。本实验中将函数的返回值定位0或1,可以直接用来计数,省去了再次计数的麻烦。实验六实验题目1:编程序求不超过2000的所有对称数。请编写函数,判断一个数字是否为对称数,若是对称数,函数返回值为1,否则返回值为0。主函数完成数据的输入与结果的输出。设计思想:定义一个五位数组,数据类型为字符

18、型。设计函数通过指针对输入字符串的首位和尾位进行比较,然后向中间靠拢,最后得出是否为对称数,作为主函数里的判断条件。在主函数中输入、输出并调用此函数。实验代码及注释:#include#include#include int panduan(char s) int n=strlen(s); int t=n/2; char *p1,*p2; p1=s; p2=p1+n-1; for(int i=0;it;i+) if(*(p1+i)!=*(p2-i) return 0; return 1; int main() char s5; int a,b,c; printf(2000以内对称数有:n); f

19、or(int n=1;n=2000;n+) sprintf(s,%d,n); b=panduan(s); if(b=1) printf(%dt,n); printf(请输入一个数:); scanf(%d,&a); sprintf(s,%d,a); c=panduan(s); if(c=1) printf(%d是对称数n,a); else printf(%d不是对称数n,a); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验要求判断是否为对称数,很容易想到直接输入数字求其相应数位再进行对比。不过,本实验采用判断字符的方式,使程序更

20、加简洁,占用内存更小。同时,本函数采用指针指向字符串的相应位,直接进行比较,非常方便。实验题目2:请编写函数,判断一个字符串是否是回文。若是回文,函数返回值为1,否则返回值为0.设计思想:采用指针的运算进行移位,在这一过程中对数组的相应位进行比较,从首位和尾位开始比较,比较完成后进行移位,直至全部比较结束。将比较结果作为判断条件,决定是反回何值。实验代码及注释:#include#include#include int panduan(char s,int n) char *p1,*p2; p1=s;p2=s+n-1; for(int i=0;in/2;i+) if(*(p1+i)!=*(p2-

21、i) return 0; return 1;int main() char s128; printf(请输入一串字符:n); scanf(%s,&s); if(strlen(s)=1|panduan(s,strlen(s) printf(1n); else printf(0n); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验与上一实验有很大的相似性,函数采用指针指向字符串的相应位,直接进行比较,比较完成后通过指针的运算进行移位,非常方便。在解决多数据问题需要移位时,指针的运算是一种很好的方法。实验题目3:分别利用行指针和指向元

22、素的指针求整型二维数组中最大的元素及其所在的行号与列号。设计思想:通过循环方法对数组进行赋值。指向行时,分别判断每一行最大值再进行比较,同时记录行号和列号。指向元素时,比较所有元素大小,找出最大值,并记录行号和列号。实验代码及注释:#include#include int main() int M,N; printf (请输入数组的行和列:n); scanf(%d%d,&M,&N); int aMN,max,h,l,nu=0; int (*p)N,*q; printf(请输入%d个数字:n,M*N) ; for(int i=0;iM;i+) for(int j=0;jN;j+) scanf(%

23、d,&aij); printf(n); p=a; max=0; /指向元素方案 for(int i=0;iM;i+) for(int j=0;jN;j+) if(max*(*(p+i)+j) max=*(*(p+i)+j); h=i; l=j; printf(指向元素t最大值为%d,所在行为%d,所在列为%dn,max,h+1,l+1); /指向行方案 max=a00;q=a0; for(int i=0;qa0+M*N;q+) if(max*q) nu=i; max=*q; i+; h=nu/N; l=nu%N; printf(指向行t最大值为%d,所在行为%d,所在列为%dn,max,h+1

24、,l+1); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:实验中考察了指向行和指向元素两种指针方法。指针分为多种,多级,在使用指针时,可以考虑多种不同的方式进行函数设计,以最简为目的。实验题目4:编写程序,输入5个单词,请将它们按从小到大的顺序排序后输出。设计思想:实验代码及注释:#include#include#include void paixu(char s32) char zj32; for(int i=0;i4;i+) for(int j=i+1;j5;j+) if(strcmp(sj,si)0) strcpy(zj,si

25、); strcpy(si,sj); strcpy(sj,zj); int main() printf(请输入五个单词:n); char s532; for(int i=0;i5;i+) scanf(%s,si); paixu(s); for(int i=0;i5;i+) printf(%sn,si); system(pause); return 0; 验证与结论:程序运行正常,结果输出正确。总结与心得体会:本实验中调用了字符串函数,这几个函数在比较字符串以及字符串的长度计算,复制字符串方面十分方便。要注意在调用字符串函数前要调用string.h头文件。实验题目5:输入一个三位数,计算该数各位上的数字之和,如果在1,12之内,则输出与和数相对应的月份的英文名称,否则输出*。例如:输入:123 输出: 1+2+3=6 June输入:139 输出: 1+3+9=13 *要求:用指针数组记录各月份英文单词的首地址。设计思想:定义一个指针数组,数据类型为字符型。用指针数组记录各月份英文单词的首地址。对输入的三位数分别求各个数位,相加判断输出几月或者*。实验代码及注释:#include#includestdl

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

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