数组实验实验报告Word格式文档下载.docx
《数组实验实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数组实验实验报告Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
i<
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);