免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计实验报告实验名称 数组实验 一、实验目的1掌握数组的说明、初始化和使用。2掌握一维数组作为函数参数时实参和形参的用法。3掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数实现算法。 4掌握基于分治策略的二分查找算法和选择法排序算法的思想,以及相关算法的实现二、实验任务1源程序改错题下面程序用来将数组a中元素按升序排序后输出。分析程序中存在的问题,并对程序进行修改,使之能够正确完成任务。#includevoid 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(%6d,ai); printf(n);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源程序完善、修改、替换题(1)下面程序用于求解瑟夫问题。M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人为止。请在下划线处填写合适的代码来完善该程序。#include#define M 10#define N 3void main(void) int aM, bM;int i, j, k; for(i = 0; i 1; i-) for(k = 1; k i - 1) j = 0; bM-i = j? : ; if(j)for(k = -j; k i; k+) ; for(i = 0;i M 1; i+) printf(“%6d”, bi); printf(“%6dn”, a0);(2)上面程序用数组元素的值表示圈中人的编号,每当有人出圈时都要压缩数组,这种算法不够精炼。如果采用做标记的办法,即每当有人出圈时对相应数组元素做标记,省掉压缩数组的时间,这样处理效率更高一些。请采用做标记的办法修改(1)中程序,使修改后的程序与(1)中程序具有相同的功能。3跟踪调试题#includevoid strncat(char ,char ,int);void main(void) char a50=The adopted symbol is ,b27=abcdefghijklmnopqrstuvwxyz; strncat(a, b, 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为何值?当光条落在strncat函数块结束标记(右花括号 )所在行时, s、t分别为何值?(2)分析函数出错的原因,排除错误,使函数正确实现功能,最后写出程序的输出结果。4编程设计题(1)编写程序从键盘读取数据,对一个34矩阵进行赋值,求其转置矩阵,然后输出原矩阵和转置矩阵。(2)输入一个整数,将它在内存中二进制表示的每一位转换成为对应的数字字符,存放到一个字符数组中,然后输出该整数的二进制表示。(3)输入n个学生的姓名和C语言课程的成绩,将成绩按从高到低的次序排序,姓名同时作相应调整,输出排序后学生的姓名和C语言课程的成绩。然后,输入一个C语言课程成绩值,用二分查找进行搜索。如果查找到有该成绩,输出该成绩同学的姓名和C语言课程的成绩;否则输出提示“not found!”。三、实验步骤及结果1源程序改错题修改后的程序如下:#includevoid sort(int b,int);int main() int a10=27,13,5,32,23,3,17,43,55,39; int i; sort(a,10); for(i=0; i10;i+) printf(%6d,ai); printf(n); return 0;void sort(int b,int n) int i,j,t; for(i=0;in-1;i+) for(j=0;jbj+1) t=bj,bj=bj+1,bj+1=t;运行结果:2源程序完善、修改、替换题(1)源程序完善#include#define M 100#define N 3int main() int aM, bM; int i,j,k; for(i=0;i1;i-) for(k=1;ki-1) j=0; bM-i=j?aj-1:ai-1; if(j) for(k=-j;ki;k+) ak=ak+1; for(i=0;iM-1;i+) printf(%6d,bi); printf(%6dn,a0); return 0;(2)源程序修改、替换#include#define M 10#define N 3int main(void) int aM, bM; int i, j, k,t; for(i = 0; i 1; i-) for(k = 1; k 10;j+); if(j+=(M-1) j = 0; bM-i = j? aj-1: aM-1 ;if(j) bM-i=aj-1; aj-1=11; else for(t=1;aM-t10;t+); bM-i=aM-t; aM-t=11; for(i = 0;i M-1 ; i+) printf(%6d, bi); for(i=0;iM;i+) if(ai11) printf(%6d,ai);运行结果:3跟踪调试题(1).进入函数strncat后观察表达式s、t和i。当光条落在for语句所在行时,i等于1. 当光条落在strncat函数块结束标记(右花括号 )所在行时:(3).修改后的程序:#includevoid strncat(char,char,int);int main(void) char a50=The adopted symbol is ,b27=abcdefghijklmnopqrstuvwxyz; strncat(a,b,4); printf(%sn,a); return 0;void strncat(char s,char t,int n) int i=0,j; while(si) i+; for(j=0;jn&tj;) si+=tj+; si = 0;最后的运行结果:4编程设计题(1).矩阵转置程序:#include#define M 3#define N 4int change(int aMN);int main() int aMN; int i,j; printf(Please input %d numbers:n,M*N); for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&aij); printf(n); printf(the original juzhen is:nn); for(i=0;iM;i+) for(j=0;jN;j+) printf(%dt,aij); printf(n); printf(nnn); printf(the changed juzhen is:nn); change(a); return 0;int change(int aMN) int m,n; for(n=0;nN;n+) for(m=0;mM;m+) printf(%dt,amn); printf(n); return 0;运行结果:(2).输出整数的二进制表示:#includeint main() int m,i,j; char asizeof(int)*8; printf(Input a number:); scanf(%d,&m); for(i=0;i=1; printf(n); for(j=sizeof(int)*8;j=0;j-) printf(%d,aj); printf(n);运行结果:(3). 学生成绩记录,排序和查找:#include #define N 3int BinarySearch(int a,int x,int n);int main() char nameN10,sN10; int scoreN,t,i,j,k,score0,index; printf(input the students names and scores:n); for(i=0;iN;i+) printf(name:); scanf(%s,namei); printf(score:); scanf(%d,&scorei); for(k=1;kN;k+) for(i=0;iN-k;i+) if(scoreiscorei+1) t=scorei;scorei=scorei+1;scorei+1=t; for(j=0;nameij!=0;j+) sij=nameij; for(j=0;nameij!=0;j+) nameij=namei+1j; for(j=0;nameij!=0;j+) namei+1j=sij; for(i=0;iN;i+) printf(%st%dn,namei,scorei); printf(input a score please:n); scanf(%d,&score0); index=BinarySearch(score,score0,N); if(index!=-1) printf(%st%d,nameindex,scoreindex);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6300-2025船舶完工文件编制和提交规定
- 2025年初中七年级物理月考卷
- 2025年河北省石家庄市桥东区保安员招聘考试题库附答案解析
- 2025年建筑施工起重机械设备安全监督管理规定
- 2025年绿色能源热泵技术应用项目可行性研究报告及总结分析
- 锂离子电池原理介绍课件
- 2025年企业文化建设服务协议
- 2022年福建中烟工业有限责任公司招聘考试真题
- 2025年一级建造师之一建工程法规通关考试题库带答案解析
- 2020-2025年质量员之设备安装质量专业管理实务能力测试试卷A卷附答案
- JG/T 160-2004混凝土用膨胀型、扩孔型建筑锚栓
- 高一家长会化学教师课件
- 2025年中国电脑CPU散热器市场调查研究报告
- 2025年保密观考试题库及答案(真题版)
- 超市店长职责与工作流程
- 重症监护室护理管理制度范本
- 《社会体育指导员技术等级培训教材》
- 科研项目经费预算表格-科研项目经费明细
- 锂电池叉车充电使用安全
- 南京艺术学院《文学概论》2023-2024学年第二学期期末试卷
- (新版)多旋翼无人机超视距驾驶员执照参考试题(附答案)
评论
0/150
提交评论