数组实验实验报告Word格式.docx
- 文档编号:19936047
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:19
- 大小:159.72KB
数组实验实验报告Word格式.docx
《数组实验实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数组实验实验报告Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
10;
i++)
printf("
%6d"
a[i]);
\n"
);
return0;
}
voidsort(intb[],intn)
inti,j,t;
n-1;
for(j=0;
j<
n-i-1;
j++)
if(b[j]<
b[j+1])
t=b[j],b[j]=b[j+1],b[j+1]=t;
2.源程序完善、修改、替换
(1)下面的源程序用于求解瑟夫问题:
M个人围成一个圈,从第一个人开始依次从1直N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人。
请在源程序中的下划线处填写适当的代码来完善程序。
stdio.h>
#defineM10
#defineN3
inta[M],b[M];
inti,j,k;
M;
a[i]=i+1;
for(i=M,j=0;
i>
1;
i--){
for(k=1;
k<
=N;
k++)
if(++j>
i-1)j=0;
b[M-i]=j?
____:
___;
if(j)
for(k=--j;
i;
________________;
}
M-1;
b[i]);
%6d\n"
a[0]);
(2)上面的程序中使用数组元素的值表示圈中人的编号,故每当有人出圈是都要压缩数组,这种算法不够精炼。
如果采用做标记的方法,即每当有人出圈是对相应数组元素做标记,从而可省掉压缩数组的时间,这样处理效率会更高一些。
因此,请采用做标记的方法修改〔1〕中的程序,并使修改后的程序与〔1〕中的程序有相同的功能。
3.跟踪调试程序
在下面所给的源程序中,函数strncat(s,t,n)本来应该讲字符数组t的前n个字符链接到字符数组s中字符串的尾部。
但是函数strncat在定义是代码有误,不能实现上述功能,请按下面的要求进行操作,并答复下列问题和排除错误。
(1)单步执行源程序。
进入函数strncat后观察表达式s、t和i。
当光条落在for语句所在行是吗,i位多少?
当光条落在strnca函数块结束标记所在行时,s,t分别为和值?
i=22s和t没有变化
(2)分析函数出错的原因,排除错误,是函数正确实现功能,最后写出程序的结果。
#include<
voidstrncat(char[],char[],int);
chara[50]="
Theadoptedsymbolis"
b[27]="
abcdefghijklmnopqrstuvwxyz"
;
strncat(a,b,4);
%s\n"
a);
voidstrncat(chars[],chart[],intn)
inti=0,j;
while(s[i++]);
n&
&
t[j];
)
s[i++]=t[j++];
s[i]='
\0'
4.程序设计
编写并上机调试运行实现以下功能的程序:
(1)编写一个程序,从键盘读入数据,对一个3*4矩阵进行赋值,求其转置矩阵,然后输出原举这个和转置矩阵。
(2)编写一个程序,其功能要求是:
输入一个整数,将他在内存中二进制表示的每一位转换成对应的数字字符,存放在一个数组中,然后输出该整数的二进制表示.
(3)编写一个程序,其功能是:
输入n个学生的和c语言课程的成绩,将成绩按从高到低的次序排序,同时做相应的调整,输出排序后的和成绩。
然后,输入一个c成绩,用二分进行搜,如果搜到,输出和成绩,没有,输出“notfound!
”。
5.选做题
编写并上机调试运行能实现以下功能的函数和程序:
(1)编写函数strnins(s,t,n),其功能是:
将字符数组t中的字符串插入到字符数组中的第n个字符的后边。
(2)编写一个实现八皇后问题的程序。
输出所有解法。
三、实验步骤
1.源程序改错:
voidsort(intb[],intn);
voidsort(int[],int);
sort(a,10);
if(b[j]>
〔1〕
i--)
{
i-1)j=0;
a[j-1]:
a[i];
a[k]=a[k+1];
〔2〕
inta[M],b[M];
inti,j,k,t;
for(i=0;
i<
i++)
a[i]=i+1;
for(i=M,j=0;
i>
1;
i--)
for(k=1;
k<
=N;
k++)
for(;
a[j]>
j++);
if(j++>
=(M-1))j=0;
a[M-1];
b[M-i]=a[j-1];
a[j-1]=11;
else
for(t=1;
a[M-t]>
t++);
b[M-i]=a[M-t];
a[M-t]=11;
i<
M-1;
b[i]);
if(a[i]<
11)printf("
while(s[i]!
='
s[i++];
ctype.h>
inti,j;
chars[3][5],c;
pleaseinputyourjuzhen:
3;
5;
c=getchar();
if(isdigit(c))
s[i][j]=c;
thejuzhenyouinputis:
4;
putchar(s[i][j]);
putchar('
\n'
thejuzhenhasbeenchangedinto:
#defineMAX16
intmain()
intn,i;
chars[MAX];
pleaseinputanumber:
scanf("
%d"
&
n);
if(n>
=-32768&
n<
=32767)
;
wrong:
thenumberistoolarge"
return-1;
=0)
n!
=0;
s[i]=n%2+'
0'
n/=2;
=MAX-1;
n=-(n+1);
=MAX-2;
MAX-1;
if(s[i]=='
1'
elseif(s[i]=='
for(i=MAX-1;
putchar(s[i]);
〔3〕
stdlib.h>
intbinsearch(intn,ints[],intx);
inti,j,m,n,k,a;
ints[10];
structstudents{
char*name;
intgrade;
}ACM[7]={
{"
zhang"
90},
li"
69},
wang"
87},
zhao"
73},
sun"
83},
tian"
92},
ying"
82}
};
structstudentst;
malloc(sizeof(structstudents));
theoriginallistis:
\nname\tgrade\n"
for(m=0;
m<
=6;
m++)
%s\t%d\n"
ACM[m].name,ACM[m].grade);
6;
6-i;
if(ACM[j].grade>
ACM[j+1].grade)
t=ACM[j],ACM[j]=ACM[j+1],ACM[j+1]=t;
nowthelistis:
for(k=0,m=0;
=6&
k++,m++)
s[k]=ACM[m].grade;
for(m=6;
m>
m--)
pleaseinputagrade:
);
a=binsearch(n,s,7);
if(a==-1)
thenumberhasnotbeenfound\n"
ACM[a].name,ACM[a].grade);
intbinsearch(intn,ints[],intx)
intlow,high,mid;
low=0;
high=x-1;
while(low<
=high)
mid=(low+high)/2;
if(n<
s[mid])
high=mid-1;
elseif(n>
low=mid+1;
returnmid;
voidstrnins(char*s,char*t,intn);
intn;
chars[]="
oh,ihave"
chart[]="
failedagain"
theoriginalstringsis:
\n%s\n"
s);
theoriginalstringtis:
t);
strnins(s,t,n);
nowthestringis:
voidstrnins(char*s,char*t,intn)
for(i=1;
=n&
(*s)!
s++,i++)
(*t)!
s++,t++)
*s=*t;
*s='
inti,j,k,l,m,n,o,p;
intq=0;
theanswerof8queensarelistasfollow:
=8;
for(j=1;
if(j==i||j==i+1||j==i-1)
continue;
if(k==i||k==i+2||k==i-2||k==j||k==j+1||k==j-1)
for(l=1;
l<
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)
for(m=1;
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)
for(n=1;
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)
for(o=1;
o<
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-2||o==n||o==n+1||o==n-1)
for(p=1;
p<
p++)
if(p==i||p==i+7||p==i-7||p==j||p==j+6||p==j-6||p==k||p==k+5||p==k-5||p==l||p==l-4||p==l+4||p==m||p==m+3||p==m-3||p==n||p==n+2||p==n-2||p==o||p==o-1||p==o+1)
(1,%d)\t(2,%d)\t(3,%d)\t(4,%d)\t(5,%d)\t(6,%d)\t(7,%d)\t(8,%d)\t\n"
i,j,k,l,m,n,o,p);
q++;
q);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)