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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言程序设计实验报告.docx

1、C语言程序设计实验报告 实验报告 C语言程序设计 专业 计算机科学与技术 班级 0809 日期 2009-4-3 成绩 实验组别 第 次实验 3 指导教师 卢萍 学生姓名 邓入弋 学号 u200814504 同组人姓名 数组实验 实验名称 一、实验目的1掌握数组的说明、初始化和使用。 2掌握一维数组作为函数参数时实参和形参的用法。 3掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数实现算法。 4掌握基于分治策略的二分查找算法和选择法排序算法的思想,以及相关算法的实现。 二、实验任务 利用数组实现有关排序,串操作和查找的程序,解决一些经典问题(如瑟夫问题,八皇后问题等)。 三、实

2、验步骤及结果 (要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象) 1源程序改错题 下面程序用来将数组a中元素按升序排序后输出。分析程序中存在的问题,并对程序进行修改,使之能够正确完成任务。 #include void main(void) int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39; void sort(int ,int); int i; sort(a0,10); for(i = 0; i 10; i+) printf(m,ai); printf(); void sort(int b, in

3、t n) int i, j, t; for (i = 0; i n - 1; i+) for ( j = 0; j n - i - 1; j+) if(bj bj+1) t = bj, bj = bj+1, bj+1 = t; function : int * differs in levels of 输入以上源程序,进行编译,没有错误但有两个警告:1.indirection from int 和sort : different types for formal and actual parameter 1,进行修改得如下程序: #include void main(void) int a10

4、 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39; void sort(int ,int); int i; sort(a,10); /*此处的形参应用数组名,作为一个指针常量,代表数组首元素的地址*/ for(i = 0; i 10; i+) printf(m,ai); printf(); void sort(int b, int n) int i, j, t; for (i = 0; i n - 1; i+) for ( j = 0; j n - i - 1; j+) if(bj bj+1) t = bj, bj = bj+1, bj+1 = t; 2.进行连接

5、,没有错误。 3.运行该程序,得如下运行结果: (是按降序排列的,证明有逻辑错误) 4.经过调试,对程序进行修改,得如下结果: #include void main(void) int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39; void sort(int ,int); int i; sort(a,10); for(i = 0; i 10; i+) printf(m,ai); printf(); void sort(int b, int n) int i, j, t; for (i = 0; i n - 1; i+) for ( j = 0; j b

6、j+1按升序排列应为 if(bj bj+1) /* t = bj, bj = bj+1, bj+1 = t; 程序运行结果: 2源程序完善、修改、替换题 (1)下面程序用于求解瑟夫问题。M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人为止。请在下划线处填写合适的代码来完善该程序。 #include #define M 10 #define N 3 void main(void) int aM, bM; /*数组a存放圈中人的编号,数组b存放出圈人的编号*/ int i, j, k; for(i = 0; i 1; i-) /*i表示圈中人个数,

7、初始为M个,剩1个人时结束循环;j表示当前报数人的位置*/ for(k = 1; k i - 1) j = 0;/*最后一个人报数后第一个人接着报,形成一个圈*/ bM-i = j? : ; /*将报数为N的人的编号存入数组b*/ if(j) for(k = -j; k i; k+) /*压缩数组a,使报数为N的人出圈*/ ; for(i = 0;i M 1; i+) /*按次序输出出圈人的编号*/ printf(“m”, bi); printf(“mn”, a0); /*输出圈中最后一个人的编号*/ (2)上面程序用数组元素的值表示圈中人的编号,每当有人出圈时都要压缩数组,这种算法不够精炼。

8、如果采用做标记的办法,即每当有人出圈时对相应数组元素做标记,省掉压缩数组的时间,这样处理效率更高一些。请采用做标记的办法修改(1)中程序,使修改后的程序与(1)中程序具有相同的功能。 (1)填写代码后,源程序如下: #include #define M 10 #define N 3 void main(void) int aM, bM; /*数组a存放圈中人的编号,数组b存放出圈人的编号*/ int i, j, k; M*/ 1对圈中人按顺序编号/* for(i = 0; i 1; i-) /*i表示圈中人个数,初始为M个,剩1个人时结束循环;j表示当前报数人的位置*/ for(k = 1;

9、k i - 1) j = 0;/*最后一个人报数后第一个人接着报,形成一个圈*/ aj-1 aj+1; /*将报数为: N的人的编号存入数组 bM-i = j? b*/ if(j) /*压缩数组afor(k = -j; k i; k+) ,使报数为N的人出圈*/ ak=ak+1; /* for(i = 0;i M 1; i+) 按次序输出出圈人的编号*/ , bi); printf(“m”/*输出圈中最后一个人的编号*/ mn printf(“”, a0); 程序运行结果: (2)上面程序用数组元素的值表示圈中人的编号,每当有人出圈时都要压缩数组,这种算法不够精炼。如果采用做标记的办法,即每当

10、有人出圈时对相应数组元素做标记,省掉压缩数组的时间,这样处理效率更高一些。请采用做标记的办法修改(1)中程序,使修改后的程序与(1)中程序具有相同的功能。 编写程序如下: #include #define M 10 #define N 3 void main(void) int aM,bM; /*数组a存放圈中人的编号,数组b存放出圈人的编号*/ int i,j,k; for(i=0;i1;i-) /*i表示圈中人个数,初始为M个,剩1个人时结束循环;j表示当前报数人的位置*/ for(k=1;kM)j=1; /*最后一个人报数后,第一个人接着报*/ if(aj-1=0) k-; /*碰到已标

11、记的元素,报数减1*/ bM-i=aj-1; /*将报数为N的人的编号存入数组b*/ aj-1=0; /*并将其标记为0*/ for(i=0;iM-1;i+) printf(m,bi); for(i=0;iM;i+) /*输出数组a中不为0的元素*/ if(ai!=0) printf(mn,ai); 程序运行结果: 3跟踪调试题 #include void strncat(char ,char ,int); void main(void) char a50=The adopted symbol is ,b27=abcdefghijklmnopqrstuvwxyz; strncat(a, b,

12、4); printf(%sn,a); void strncat(char s,char t, int n) int i = 0, j; while(si+) ; for(j = 0; j n & tj;) si+ = tj+; si = 0; 函数strncat(s,t,n)本来应该将字符数组t的前n个字符连接到字符数组s中字符串的尾部。但函数strncat在定义时代码有误,不能实现上述功能。按下面的要求进行操作,回答问题并排除错误。 (1)单步执行。进入函数strncat后观察表达式s、t和i。当光条落在for语句所在行时,i的值为23;当光条落在strncat函数块结束标记(右花括号 )所在行时,s为0x0012ff4cThe adopted symbol is ,t为砰?晦?慜换敤杦楨歪浬潮煰獲畴睶祸屺。 (2)分析函数出错的原因,排除错误,使函数正确实现功能,最后写出程序的输出结果。 通过分析,执行完while语句后,i 对应的是串尾0后面一个单元的位置,所以先要自减i ,使它对应0所在单元。修改后程序如下: #include void strncat(char ,char ,int); void main(void) char a50=The adopted symbol is

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

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