数组.docx

上传人:b****7 文档编号:10261772 上传时间:2023-02-09 格式:DOCX 页数:67 大小:27.64KB
下载 相关 举报
数组.docx_第1页
第1页 / 共67页
数组.docx_第2页
第2页 / 共67页
数组.docx_第3页
第3页 / 共67页
数组.docx_第4页
第4页 / 共67页
数组.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

数组.docx

《数组.docx》由会员分享,可在线阅读,更多相关《数组.docx(67页珍藏版)》请在冰豆网上搜索。

数组.docx

数组

第6题(10.0分)题号:

425

功能:

当输入“2,5”的时候输出为“255”

#include

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d,%d",&k,&m);

/***********SPACE***********/

for(i=0;i<=【?

】;i++)f[i]=0;

/***********SPACE***********/

f[【?

】]=1;

for(i=k;i<=m;i++)

/***********SPACE***********/

for(j=i-k;j<=i-1;j++)f[i]【?

】f[j];

printf("%d%10d%10d\n",k,m,f[m]);

}

答案:

1).m

2).k-1或k-1

3).+=或=1+

第35题(10.0分)题号:

625

功能:

有一整数数组x(正序排列),判断是否有数组元素x[i]=i

的情况发生。

intindex_search(intx[],intn)

{

intfirst=0;

intlast=n-1;

intmiddle,index;

index=-1;

while(first<=last)

{

middle=(first+last)/2;

/***********SPACE***********/

if(【?

】)

{

index=middle;

break;

}

/***********SPACE***********/

elseif(【?

】)

last=middle-1;

else

first=middle+1;

}

returnindex;

}

#include

voidmain(void)

{

intx[]={-1,0,1,3,5,7,9,10};

intn=sizeof(x)/sizeof(int);

intanswer,i;

printf("\nIndexSearchProgram");

printf("\n====================");

printf("\n\nGivenArray:

");

for(i=0;i

printf("%5d",x[i]);

/***********SPACE***********/

【?

】;

if(answer>=0)

printf("\n\nYES,x[%d]=%dhasbeenfound.",answer,answer);

else

printf("\n\nNO,thereisnoelementwithx[i]=i");

}

答案:

1).x[middle]==middle

2).x[middle]>middle或middle

3).answer=index_search(x,n)

第48题(10.0分)题号:

463

功能:

输入一正整数n、打印1-n能够组成的所有自然数集合

(包含空集)。

#include

#include

#defineMAXSIZE20

#defineLOOP1

voidmain(void)

{

intset[MAXSIZE];

intn,i;

intposition;

charline[100];

printf("\nAllPossibleSubsetsGenerationbyLexicalOrder");

printf("\n================================================");

printf("\n\nNumberofElementsintheSet-->");

gets(line);

n=atoi(line);

printf("\n{}");

position=0;

set[position]=1;

while(LOOP)

{

/***********SPACE***********/

printf("\n{%d",【?

】);

for(i=1;i<=position;i++)

printf(",%d",set[i]);

printf("}");

if(set[position]

{

/***********SPACE***********/

set[【?

】]=set[position]+1;

position++;

}

elseif(position!

=0)

set[--position]++;

else

/***********SPACE***********/

【?

】;

}

}

答案:

1).set[0]

2).position+1

3).break

 

第61题(10.0分)题号:

472

功能:

现有两组有序数组(增序),x[i]、y[j]代表数组x、y的

任一元素,问满足x[i]>y[i]的元素对有多少个?

intdominance_count(intf[],intg[],intm,intn)

{

intindex_f,index_g;

intcount;

count=index_f=index_g=0;

while(index_f

if(f[index_f]<=g[index_g])

index_f++;

else

{

index_g++;

/***********SPACE***********/

count+=【?

】;

}

/***********SPACE***********/

【?

】;

}

 

#include

voidmain(void)

{

intx[]={1,6,8};

intnx=sizeof(x)/sizeof(int);

inty[]={4,5,7};

intny=sizeof(y)/sizeof(int);

intdominance_count(int[],int[],int,int),i;

printf("\nDominanceCountoftwoIncreasingArrays\n");

printf("\n#Array1Array2");

printf("\n----------------");

for(i=0;i

printf("\n%3d%10d%10d",i,x[i],y[i]);

printf("\n\nThereare%dDominancePairs.",

/***********SPACE***********/

【?

】);

}

答案:

1).m-index_f或m-index_f

2).returncount

3).dominance_count(x,y,nx,ny)

 

第76题(10.0分)题号:

34

功能:

以下程序的功能如(图1)。

#include

#include

/***********SPACE***********/

floatfun(【?

】,intn)

{

/***********SPACE***********/

【?

】;

floatxa=0,s;

for(j=0;j

xa+=x[j]/n;

/***********SPACE***********/

【?

】;

for(j=0;j

s+=(x[j]-xa)*(x[j]-xa)/n;

/***********SPACE***********/

【?

】;

}

main()

{

floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};

clrscr();

printf("%f\n",fun(x,8));

}

答案:

1).floatx[]或float*x

2).intj

3).s=0或s=0.0

4).returns或return(s)

 

第85题(10.0分)题号:

13

功能:

产生并输出杨辉三角的前七行。

1

11

121

1331

14641

15101051

1615201561

main()

{

inta[7][7];

inti,j,k;

for(i=0;i<7;i++)

{

a[i][0]=1;

/***********SPACE***********/

【?

】;

}

for(i=2;i<7;i++)

/***********SPACE***********/

for(j=1;j<【?

】;j++)

/***********SPACE***********/

a[i][j]=【?

】;

for(i=0;i<7;i++)

{

/***********SPACE***********/

for(j=0;【?

】;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}

答案:

1).a[i][i]=1

2).i

3).a[i-1][j]+a[i-1][j-1]或a[i-1][j-1]+a[i-1][j]

4).j<=i或i>=j或jj或j-1j-1

 

第104题(10.0分)题号:

12

功能:

产生并输出如下形式的方阵。

1222221

3122214

3312144

3331444

3315144

3155514

1555551

main()

{

inta[7][7];

inti,j;

for(i=0;i<7;i++)

for(j=0;j<7;j++)

{

/***********SPACE***********/

if(【?

】)a[i][j]=1;

/***********SPACE***********/

elseif(i

】;

elseif(i>j&&i+j<6)a[i][j]=3;

/***********SPACE***********/

elseif(【?

】)a[i][j]=4;

elsea[i][j]=5;

}

for(i=0;i<7;i++)

{

for(j=0;j<7;j++)

printf("%4d",a[i][j]);

/***********SPACE***********/

【?

】;

}

}

答案:

1).i==j||i+j==6

2).a[i][j]=2

3).i6或j>i&&i+j>6或ii&&i+6

4).printf("\n")

 

第121题(10.0分)题号:

468

功能:

对一数组进行逐步累加求和,prefix代表从前向后累加值,

suffix代表从后向前累加值,问在此过程中prefix与suffix

有几次值相同?

inthead_tail(intx[],intn)

{

intprefix=0,suffix=0;

intprefix_idx=0,suffix_idx=n-1;

intcount=0;

while(suffix_idx>=0&&prefix_idx<=n-1)

/***********SPACE***********/

if(【?

】)

prefix+=x[prefix_idx++];

elseif(prefix>suffix)

/***********SPACE***********/

suffix+=x[【?

】];

else

{

/***********SPACE***********/

【?

】;

prefix+=x[prefix_idx++];

suffix+=x[suffix_idx--];

}

returncount;

}

#include

voidmain(void)

{

intx[]={3,6,2,1,4,5,2};

intn=sizeof(x)/sizeof(int);

inti;

printf("\nHeadSum==TailSumCountingProgram");

printf("\n=====================================\n");

printf("\nGivenArray:

");

for(i=0;i

printf("%5d",x[i]);

printf("\n\nThereare%dequalPrefix-Suffixsumpairs.",head_tail(x,n));

}

答案:

1).prefixprefix

2).suffix_idx--或suffix_idx=suffix_indx-1或--suffix_idx

3).count++或count=count+1

 

第123题(10.0分)题号:

482

功能:

找出三个增序数组中值相同的数。

#defineFOUND1

#defineNOT_FOUND0

intsearch(intx[],inty[],intz[],

intX,intY,intZ,

int*XX,int*YY,int*ZZ)

{

*XX=*YY=*ZZ=0;

while(*XX

if(x[*XX]

(*XX)++;

elseif(y[*YY]

(*YY)++;

/***********SPACE***********/

elseif(【?

】)

(*ZZ)++;

else

/***********SPACE***********/

【?

】;

returnNOT_FOUND;

}

#include

voidmain(void)

{

intx[]={1,3,5,7,9,11,13,15,17,19};

inty[]={2,4,9,10,12,14,16,18,20,21};

intz[]={1,2,3,4,5,6,7,8,9,10};

intX=sizeof(x)/sizeof(int);

intY=sizeof(y)/sizeof(int);

intZ=sizeof(z)/sizeof(int);

intXX,YY,ZZ;

printf("\nSearchforaCommonElementfromThreeArrays");

printf("\n=============================================");

printf("\n\nFirstArray:

\n");

for(XX=0;XX

printf("%3d",x[XX]);

printf("\n\nSecondArray:

\n");

for(YY=0;YY

printf("%3d",y[YY]);

printf("\n\nThirdArray:

\n");

for(ZZ=0;ZZ

printf("%3d",z[ZZ]);

/***********SPACE***********/

if(search(x,y,z,X,Y,Z,【?

】)>0)

printf("\n\n%discommontox[%d],y[%d]andz[%d]",

x[XX],XX,YY,ZZ);

else

printf("\n\nNOCOMMONELEMENTFOUND.");

}

答案:

1).z[*ZZ]z[*ZZ]

2).returnFOUND或return1

3).&XX,&YY,&ZZ

━━━━━━━━━━━━━━━━━━

一、程序改错共137题(共计1370分)

━━━━━━━━━━━━━━━━━━

第29题(10.0分)题号:

4

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

在一个已按升序排列的数组中插入一个数,插入后,数

组元素仍按升序排列。

------------------------------------------------------*/

#defineN11

main()

{

inti,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf("pleaseenteranintegertoinsertinthearray:

\n");

/**********FOUND**********/

scanf("%d",&number)

printf("Theoriginalarray:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

/**********FOUND**********/

for(i=N-1;i>=0;i--)

if(number<=a[i])

/**********FOUND**********/

a[i]=a[i-1];

else

{

a[i+1]=number;

/**********FOUND**********/

exit;

}

if(number

printf("Theresultarray:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

答案:

1).scanf("%d",&number);

2).for(i=N-2;i>=0;i--)或for(i=N-2;0<=i;i--)

3).a[i+1]=a[i];

4).break;

 

第35题(10.0分)题号:

28

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

求一个3行4列矩阵的外框的元素值之和。

注意:

矩阵四个角上的元素不能重复加。

例如:

矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时,

四框元素值之和应为65。

------------------------------------------------------*/

intfun(inta[3][4],intm,intn)

{

/**********FOUND**********/

inti,j,s,s1=s2=s3=s4=0;

for(j=0;j

{

s1=s1+a[0][j];

/**********FOUND**********/

s2=s2+a[m][j];

}

/**********FOUND**********/

for(i=0;i

{

s3=s3+a[i][0];

s4=s4+a[i][n-1];

}

/**********FOUND**********/

s=s1-s2-s3-s4;

returns;

}

main()

{

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

printf("total=%d\n",fun(a,3,4));

}

答案:

1).inti,j,s,s1=0,s2=0,s3=0,s4=0;

2).s2=s2+a[m-1][j];或s2+=a[m-1][j];或s2=a[m-1][j]+s2;

3).for(i=1;ii;i++)或for(i=1;-1+m>i;i++)或for(i=1;i<=m-2;i++)或for(i=1;m-2>=i;i++)

4).s=s1+s2+s3+s4;

 

第41题(10.0分)题号:

405

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写函数fun生成一个对角线元素为5,上三角元素为0

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

当前位置:首页 > 高等教育 > 军事

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

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