数组.docx
《数组.docx》由会员分享,可在线阅读,更多相关《数组.docx(67页珍藏版)》请在冰豆网上搜索。
![数组.docx](https://file1.bdocx.com/fileroot1/2023-2/9/bbe72201-5017-402c-a849-d06b39bcc914/bbe72201-5017-402c-a849-d06b39bcc9141.gif)
数组
第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;iprintf("%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或middle3).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_fif(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;iprintf("\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;jxa+=x[j]/n;
/***********SPACE***********/
【?
】;
for(j=0;js+=(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+64).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;iprintf("%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(*XXif(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;XXprintf("%3d",x[XX]);
printf("\n\nSecondArray:
\n");
for(YY=0;YYprintf("%3d",y[YY]);
printf("\n\nThirdArray:
\n");
for(ZZ=0;ZZprintf("%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;iprintf("%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(numberprintf("Theresultarray:
\n");
for(i=0;iprintf("%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