数组实验实验报告Word文件下载.docx

上传人:b****2 文档编号:13477758 上传时间:2022-10-11 格式:DOCX 页数:19 大小:159.60KB
下载 相关 举报
数组实验实验报告Word文件下载.docx_第1页
第1页 / 共19页
数组实验实验报告Word文件下载.docx_第2页
第2页 / 共19页
数组实验实验报告Word文件下载.docx_第3页
第3页 / 共19页
数组实验实验报告Word文件下载.docx_第4页
第4页 / 共19页
数组实验实验报告Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数组实验实验报告Word文件下载.docx

《数组实验实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数组实验实验报告Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

数组实验实验报告Word文件下载.docx

分析源程序中存在的问题,并对源程序进行修改,使之能争取完成任务。

源程序:

#include<

stido.h>

intmain(void)

{

inta[10]={27,13,5,32,23,3,17,43,55,39};

voidsort(int[],int);

inti;

sort(a[0],10);

for(i=0;

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个学生的XX和c语言课程的成绩,将成绩按从高到低的次序排序,XX同时做相应的调整,输出排序后的XX和成绩。

然后,输入一个c成绩,用二分进行搜,如果搜到,输出XX和成绩,没有,输出“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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

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

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