数组实验实验报告.doc_第1页
数组实验实验报告.doc_第2页
数组实验实验报告.doc_第3页
数组实验实验报告.doc_第4页
数组实验实验报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计实验报告专业:计算机科学与技术 班级:计算机科学与技术创新实验班 日期:2011-12-22成绩:实验组别: 第 次实验: 指导教师:学生姓名: 学号: 同组人姓名:实验名称:数组实验一、实验目的(1) 掌握数组的说明、初始化和使用(2) 掌握一维数组作为函数参数时实参的用法;(3) 掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数的实现算法。(4) 掌握基于分支策略的二分查找算法和选择排序算法的思想,以及相关算法的实现。二、实验内容及要求1. 源程序改错 下面是用来将数组a中元素按升序排序后输出的源程序。分析源程序中存在的问题,并对源程序进行修改,使之能争取完成任务。源程序:#include int 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;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;jn-i-1;j+) if(bjbj+1) t=bj,bj=bj+1,bj+1=t;2. 源程序完善、修改、替换(1) 下面的源程序用于求解瑟夫问题:M个人围成一个圈,从第一个人开始依次从1直N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人。请在源程序中的下划线处填写适当的代码来完善程序。源程序:#include #define M 10#define N 3int main(void) int aM,bM; int i,j,k; for(i=0;i1;i-) for(k=1;ki-1) j=0; bM-i=j?_:_; if(j) for(k=-j;ki;k+) _; for(i=0;iM-1;i+) printf(%6d,bi); printf(%6dn,a0); return 0;(2) 上面的程序中使用数组元素的值表示圈中人的编号,故每当有人出圈是都要压缩数组,这种算法不够精炼。如果采用做标记的办法,即每当有人出圈是对相应数组元素做标记,从而可省掉压缩数组的时间,这样处理效率会更高一些。因此,请采用做标记的办法修改(1)中的程序,并使修改后的程序与(1)中的程序有相同的功能。3. 跟踪调试程序在下面所给的源程序中,函数strncat(s,t,n)本来应该讲字符数组t的前n个字符链接到字符数组s中字符串的尾部。但是函数strncat在定义是代码有误,不能实现上述功能,请按下面的要求进行操作,并回答问题和排除错误。(1) 单步执行源程序。进入函数strncat后观察表达式s、t和i。当光条落在for语句所在行是吗,i位多少?当光条落在strnca函数块结束标记所在行时,s,t分别为和值? i=22 s和t没有变化(2) 分析函数出错的原因,排除错误,是函数正确实现功能,最后写出程序的结果。源程序:#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+); for(j=0;jn&tj;) si+=tj+; si=0;4.程序设计编写并上机调试运行实现以下功能的程序:(1) 编写一个程序,从键盘读入数据,对一个3*4矩阵进行赋值,求其转置矩阵,然后输出原举这个和转置矩阵。(2) 编写一个程序,其功能要求是:输入一个整数,将他在内存中二进制表示的每一位转换成对应的数字字符,存放在一个数组中,然后输出该整数的二进制表示.(3) 编写一个程序,其功能是:输入n个学生的姓名和c语言课程的成绩,将成绩按从高到低的次序排序,姓名同时做相应的调整,输出排序后的姓名和成绩。然后,输入一个c成绩,用二分进行搜,如果搜到,输出姓名和成绩,没有,输出“not found!”。5. 选做题编写并上机调试运行能实现以下功能的函数和程序:(1) 编写函数strnins(s,t,n),其功能是:将字符数组t中的字符串插入到字符数组中的第n个字符的后边。(2) 编写一个实现八皇后问题的程序。输出所有解法。3、 实验步骤1. 源程序改错:#includevoid sort(int b,int n);int 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;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 10#define N 3int main(void) 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; 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); return 0;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!=0) si+; for(j=0;jn&tj;) si+=tj+; si=0;4. 程序设计(1)#include #include int main(void) int i,j; char s35,c; printf(please input your juzhen:n); for(i=0;i3;i+) for(j=0;j5;j+) c=getchar(); if(isdigit(c) sij=c; printf(the juzhen you input is:n); for(i=0;i3;i+) for(j=0;j4;j+) putchar(sij); putchar(n); printf(the juzhen has been changed into:n); for(j=0;j4;j+) for(i=0;i3;i+) putchar(sij); putchar(n); return 0;(2)#include#define MAX 16int main() int n,i; char sMAX; printf(please input a number:n); scanf(%d,&n); if(n=-32768&n=0) for(i=0;n!=0;i+) si=n%2+0; n/=2; for(;i=MAX-1;i+) si=0; else n=-(n+1); for(i=0;n!=0;i+) si=n%2+0; n/=2; for(;i=MAX-2;i+) si=0; for(i=0;i=0;i-) putchar(si); return 0;(3)#include#includeint binsearch(int n,int s,int x);int main() int i,j,m,n,k,a; int s10; struct students char *name; int grade; ACM7= zhang,90, li,69, wang,87, zhao,73, sun,83, tian,92, ying,82 ; struct students t; malloc(sizeof(struct students); printf(the original list is:nnametgraden); for(m=0;m=6;m+) printf(%st%dn,ACM,ACMm.grade); for(i=0;i6;i+) for(j=0;jACMj+1.grade) t=ACMj,ACMj=ACMj+1,ACMj+1=t; printf(now the list is:nnametgraden); for(k=0,m=0;m=6&k=0;m-) printf(%st%dn,ACM,ACMm.grade); printf(please input a grade:n) ; scanf(%d,&n); a=binsearch(n,s,7); if(a=-1) printf(wrong:the number has not been foundn); return -1; printf(%st%dn,ACM,ACMa.grade); return 0;int binsearch(int n,int s,int x) int low,high,mid; low=0; high=x-1; while(low=high) mid=(low+high)/2; if(nsmid) low=mid+1; else return mid; return -1;5. 选做题(1)#include void strnins(char *s,char *t,int n);int main() int n; char s=oh,i have ; char t=failed again; printf(the original string s is:n%sn,s); printf(the original string t is:n%sn,t); printf(please input a number:n); scanf(%d,&n); strnins(s,t,n); printf(now the string is:n%sn,s); return 0;void strnins(char *s,char *t,int n) int i; for(i=1;i=n&(*s)!=0;s+,i+) ; for(;(*t)!=0;s+,t+) *s=*t; *s=0;(2)#includeint main() int i,j,k,l,m,n,o,p; int q=0; printf(the answer of 8 queens are list as follow:n); for(i=1;i=8;i+) for(j=1;j=8;j+) if(j=i|j=i+1|j=i-1) continue; else for(k=1;k=8;k+) if(k=i|k=i+2|k=i-2|k=j|k=j+1|k=j-1) continue; else for(l=1;l=8;l+) if(l=i|l=i+3|l=i-3|l=j|l=j+2|l=j-2|l=k|l=k+1|l=k-1) continue; else for(m=1;m=8;m+) if(m=i|m=i+4|m=i-4|m=j|m=j+3|m=j-3|m=k|m=k+2|m=k-2|m=l|m=l-1|m=l+1) continue; else for(n=1;n=8;n+) if(n=i|n=i+5|n=i-5|n=j|n=j+4|n=j-4|n=k|n=k+3|n=k-3|n=l|n=l-2|n=l+2|n=m|n=m+1|n=m-1) continue; else for(o=1;o=8;o+) if(o=i|o=i+6|o=i-6|o=j|o=j+5|o=j-5|o=k|o=k+4|o=k-4|o=l|o=l-3|o=l+3|o=m|o=m+2|o=m-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论