数组程序设计实验报告Word下载.docx

上传人:b****6 文档编号:17732067 上传时间:2022-12-08 格式:DOCX 页数:17 大小:60.11KB
下载 相关 举报
数组程序设计实验报告Word下载.docx_第1页
第1页 / 共17页
数组程序设计实验报告Word下载.docx_第2页
第2页 / 共17页
数组程序设计实验报告Word下载.docx_第3页
第3页 / 共17页
数组程序设计实验报告Word下载.docx_第4页
第4页 / 共17页
数组程序设计实验报告Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数组程序设计实验报告Word下载.docx

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

数组程序设计实验报告Word下载.docx

}

elseif(i==strlen(str)-1)

{k++;

ch[k+1]='

if(k+1>

max)

{max=k+1;

strcpy(str1,ch);

}

else

elseif(flag==1)

{ch[k+1]='

flag=0;

if(k+1>

printf("

输入的字符串中,最长的单词有%d个字母,该单词是%s\n"

max,str1);

main()

{chara[100];

请输入一行字符:

\n"

);

gets(a);

word(a);

实验运行结果

实验中出现的问题:

如果从键盘键入的英文中有两个或两个以上长度最长且相同的单词,则程序只能输出第一个单词,此问题并未解决。

(2)从键盘键入一段英文,找出长度最短的单词

实验代码

conio.h>

voidXX(charstring[])

{

inti,j,word=0,wordstart=0;

intzishu,xiaozishu=10;

for(i=0;

string[i]!

{

if(string[i]=='

'

{

word=0;

}

elseif(word==0)

{

word=1;

zishu=0;

for(j=i;

string[j]!

string[j]!

j++)

{

zishu++;

}

if(zishu<

xiaozishu)

{

xiaozishu=zishu;

wordstart=i;

}

}

}

for(i=wordstart;

&

string[i]!

i++)

putchar(string[i]);

}

voidmain()

charstr[80];

gets(str);

XX(str);

getch();

printf("

实验中出现的问题

如果从键盘输入的英文中,最短单词并不唯一,本程序只能输出第一个,此问题还未解决。

(3)从键盘输入一段英文,找出出现次数最多的字符。

#include"

stdio.h"

stdlib.h"

string.h"

#defineMAX_LEN100

struct_NODE

{

charch;

intnum;

struct_NODE*next;

};

struct_NODE*_STRCMP(struct_NODE*CNODE,charch)

intflag=0;

if(CNODE==NULL)

CNODE=(struct_NODE*)malloc(sizeof(struct_NODE));

CNODE->

ch=ch;

num=1;

next=NULL;

else

struct_NODE*temp1,*temp2,*temp;

temp1=CNODE;

while(temp1!

=NULL)

if(temp1->

ch==ch)

temp1->

num++;

flag=1;

break;

temp1=temp1->

next;

if(!

flag)

temp=CNODE;

temp2=(struct_NODE*)malloc(sizeof(struct_NODE));

temp2->

next=temp;

CNODE=temp2;

returnCNODE;

voidprint(struct_NODE*CNODE)

struct_NODE*temp;

intnum=0;

while(CNODE!

=NULL)

if(CNODE->

num>

num)

num=CNODE->

num;

CNODE=CNODE->

字符串中出现最多的字母及其个数:

%c%d\n"

temp->

ch,temp->

num);

return;

intmain()

struct_NODE*znode;

charstr[MAX_LEN];

intlen;

inti;

znode=NULL;

scanf("

%s"

str);

len=strlen(str);

i<

len;

znode=_STRCMP(znode,str[i]);

print(znode);

return0;

在一些实验中,本程序并不能给出正确的结果,此问题还未找出原因,没有解决。

2输出魔方阵,所谓魔方阵就是指这样的方阵,它的每一行、每一列和对角线之和均相等。

要求输出由1-n*n之间的自然数构成的魔方阵。

inta[16][16];

inti,j,k,n,p=1;

while(p)

EntertheRows(From1to15andtheNumbermustbeanodd):

%d"

&

n);

if((n!

=0)&

(n<

=15)&

(n%2))p=0;

for(i=1;

i<

=n;

i++)

for(j=1;

j<

j++)

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

for(k=2;

k<

=n*n;

k++)

i--;

j++;

if((i<

1)&

(j>

n))

i+=2;

j--;

if(i<

1)i=n;

if(j>

n)j=1;

if(a[i][j]==0)

a[i][j]=k;

 

for(j=1;

%5d"

a[i][j]);

本程序只能输出n=1,3,5,7,9,11,13,15的魔方阵,对于此范围之外的数字没有作用。

371个人围成一圈,从第一个人开始从1报号,每次报号顺序递增,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个学生为止。

问此人原来的位置是多少号?

实验代码

#include<

shortp[71];

shorti,j,n=2,countdown=71;

for(i=0;

71;

i++)p[i]=i+1;

p[2]=0;

while(countdown!

=0)

3;

if(n==71-1)n=-1;

while(p[n+1]==0)

n++;

if(n==70)

n=0;

p[n]=0;

countdown--;

if(p[i]!

=0)n=i;

printf("

最后一个学生原来的位置是%d号\n"

n+1);

4求方程组3x+5y-z=29.8

2x-8y+5z=-19.8

4x+3y+2z=31.7

的解,要求误差小于10-9。

stdlib.h>

malloc.h>

math.h>

intGS(int,double**,double*,double);

double**TwoArrayAlloc(int,int);

voidTwoArrayFree(double**);

voidmain()

inti,j,n;

doubleep,**a,*b;

ep=1e-4;

你要解几元线性方程组:

scanf("

a=TwoArrayAlloc(n,n);

b=(double*)calloc(n,sizeof(double));

if(b==NULL)

内存分配失败\n"

exit

(1);

n;

请输入第%d行相应的系数:

i+1);

for(j=0;

j<

j++)

a[%d][%d]:

"

i,j);

%lf"

a[i]+j);

fflush(stdin);

请输入第%d行相应的常数:

b[%d]:

i);

b+i);

方程组:

if(a[i][j]>

0)

if(j>

0)printf("

+"

if(a[i][j]!

=1)

%lfX%d"

a[i][j],j+1);

else

X%d"

j+1);

if(a[i][j]<

-"

=-1)

fabs(a[i][j]),j+1);

=%lf\n"

b[i]);

if(!

GS(n,a,b,ep))

不可以用高斯消去法求解\n"

exit(0);

该方程组的解为:

x%d=%.10f\n"

i+1,b[i]);

TwoArrayFree(a);

free(b);

intGS(intn,double**a,double*b,doubleep)

inti,j,k,l;

doublet;

for(k=1;

k<

=n;

k++)

for(l=k;

l<

l++)

if(fabs(a[l-1][k-1])>

ep)

break;

elseif(l==n)

return(0);

if(l!

=k)

for(j=k;

t=a[k-1][j-1];

a[k-1][j-1]=a[l-1][j-1];

a[l-1][j-1]=t;

t=b[k-1];

b[k-1]=b[l-1];

b[l-1]=t;

t=1/a[k-1][k-1];

for(j=k+1;

a[k-1][j-1]=t*a[k-1][j-1];

b[k-1]*=t;

for(i=k+1;

a[i-1][j-1]-=a[i-1][k-1]*a[k-1][j-1];

b[i-1]-=a[i-1][k-1]*b[k-1];

for(i=n-1;

i>

=1;

i--)

for(j=i+1;

b[i-1]-=a[i-1][j-1]*b[j-1];

return

(1);

double**TwoArrayAlloc(intr,intc)

double*x,**y;

intn;

x=(double*)calloc(r*c,sizeof(double));

y=(double**)calloc(r,sizeof(double*));

x||!

y)

for(n=0;

n<

=r-1;

++n)

y[n]=&

x[c*n];

return(y);

voidTwoArrayFree(double**x)

free(x[0]);

free(x);

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

当前位置:首页 > 高中教育 > 理化生

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

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