数组.docx
《数组.docx》由会员分享,可在线阅读,更多相关《数组.docx(37页珍藏版)》请在冰豆网上搜索。
数组
数组
2.3.编程题.请编写一个函数fun(),它的功能是:
找出一维数组元素中最大的值和它所在的下标,最大值.和它所在的下标通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
voidfun(inta[],intn,int*max,int*d)
{
}
main()
{
inti,x[20],max,index,n=10;
randomize();
for(i=0;i<=n;i++)
{
x[i]=rand()%50;
printf("%4d",x[i]);/*输出一个随机数组*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
3.3.编程题.请编写一个函数fun(),它的功能是:
求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
711142122283335424449注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{
intaa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;kif((k+1)%20==0)/*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
5.2.改错题
下列给定程序中,函数fun()的功能是:
先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
intfun()
{
inta[3][3],sum;
inti,j;
/**********************found***********************/
sum=1;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
/**********************found***********************/
scanf("%d",a[i][j]);
}
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
}
main()
{
fun();
}
8.1.填空题
下列给定程序中,函数fun()的功能是:
给一维数组a输入任意4个整数,并按如下的规律输出。
例如输入1,2,3,4,程序运行后输出以下方阵:
4123
3412
2341
1234
试题程序:
#include
#defineM4
voidfun(【1】)
{inti,j,k,m;
printf("Enter4number:
");
for(i=0;iprintf("\n\nTheresult:
\n\n");
for(i=M;i>0;i--)
{k=a[M-1];
for(j=M-1;j>0;j--)
a[j]=a[j-1];
【3】;
for(m=0;mprintf("\n");
}
}
main()
{inta[M];
fun(a);printf("\n\n");
}
8.3.编程题.编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数.注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#defineMAX100
intfun(intlim,intaa[MAX])
{
}
main()
{
intlimit,i,sum;
intaa[MAX];
clrscr();
printf("输入一个整数");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i{
if(i%10==0&&i!
=0)/*每行输出10个数*/
printf("\n");
printf("%5d",aa[i]);
}
}
9.3.编程题.编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,若输入下面的矩阵:
100200300
400500600
700800900
则程序输出:
100400700
200500800
300600900
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
intfun(intarray[3][3])
{
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};
clrscr();
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
10.3.编程题
请编写函数fun(),函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如:
若二维数组中的值为
13579
29994
69998
13570
则函数值为61。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
}
main()
{
intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};
inti,j,y;
clrscr();
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("%6d",aa[i][j]);
printf("\n");
}
y=fun(aa);
printf("\nThesun:
%d\n",y);
printf("\n");
}
11.1.填空题给定程序中,函数fun()的功能是:
使数组中的元素的值增加10倍。
试题程序:
#include
#include
intm[10];
【1】fun(void)
{
intj;
printf("Insubfuncaftercalling\n");
for(j=0;【2】;j++)
{
m[j]=【3】;
printf("%3d",m[j]);
}
}
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
{
m[i]=i;
printf("%3d",m[i]);
}
fun();
printf("\nInmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
}
11.3.编程题.下列程序定义了N×N的二维数组,并在主函数中赋值。
请编写函数fun(),函数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中的s。
例如:
若a数组中的值为a=
01279
19745
23831
45682
59141
则返回主程序后s的值应为3.375。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
doublefun(intw[][N])
{
}
main()
{
inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
inti,j;
doubles;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{printf("%4d",a[i][j]);}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:
%lf\n",s);
}
12.3.编程题.下列程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),该函数的功能是:
使数组左下半三角元素中的值全部置成0。
例如a数组中的值为a=
197
238
456
则返回主程序后a数组中的值应为
097
008
000
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("THERESULT\n");
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
17.2.改错题
下列给定的程序中,函数fun()的功能是:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;j/**********************found***********************/
{p=j
for(i=j;iif(a[i]/**********************found***********************/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{inta[N]={9,6,8,3,-1},i,m=5;
printf("排序前的数据:
");
for(i=0;ifun(a,m);
printf("排序后的顺序:
");
for(i=0;i}
18.1.填空题
下列给定程序中,函数fun()的功能是:
输出M行M列整数方阵,然后求两条对角线上的各元素之和,返回此和数。
试题程序:
#include
#include
#defineM5
【1】fun(intn,intxx[][M])
{inti,j,【2】;
printf("\nThe%dx%dmatrix:
\n",M,M);
for(i=0;i{for(j=0;jprintf("%4d",xx[i][j]);
printf("\n");
}
for(i=0;isum+=【3】;
return(sum);
}
main()
{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
printf("\nThesumofallelementson2diagnalsis%d",fun(M,aa));
}
18.3.编程题
请编写函数voidfun(intx,intpp[],int*n),它的功能是:
求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
voidfun(intx,intpp[],int*n)
{
}
main()
{
intx,aa[1000],n,i;
clrscr();
printf("\nPleaseenteranintegernumber:
\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;iprintf("%d",aa[i]);
printf("\n");.
}
19.2.改错题假如整数数列中的数不重复,并存放在数组中。
下列给定的程序中,函数fun()的功能是:
删除数列中值为X的元素。
N中存放的是数列中元素的个数。
请改正程序中的错误果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#defineN20
fun(int*a,intn,intx)
{intp=0,i;
a[n]=x;
while(x!
=a[p])
p=p+1;
if(p==n)return-1;
else
{for(i=p;i/**********************found***********************/
a[i+1]=a[i];
returnn-1;
}
}
main()
{intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;
n=10;
printf("Theoriginaldata:
\n");
for(i=0;iprintf("\nInputx(todelete):
");scanf("%d",&x);
printf("Delete:
%d\n",x);
n=fun(w,n,x);
if(n==-1)printf("***Nobefound!
***\n\n");
else
{printf("Thedataafterdeleted:
\n");
for(i=0;i}
}
22.2--.改错题.给定程序中,函数fun()的功能是:
使数组中的元素的值缩小5倍。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
floatm[10];
/**********************found***********************/
intfun(void)
{
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<10;j++)
{
;
/**********************found***********************/
printf("%f",m[j]%5);
}
}
main()
{
inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
{
m[i]=i+20;
printf("%f",m[i]);
}
fun();
printf("\nInmainaftercalling\n");
for(i=0;i<10;i++)
printf("%f",m[i]/5);
}
24.2.改错题.下列给定程序中,函数fun()的功能是:
输出M行N列整数方阵,然后求两条对角线上的各元素的平方和,返回此和数。
#include
#include
#defineM5
intfun(intn,intxx[][M])
{
inti,j,sum=0;
printf("\nThe%dx%dmatrix:
\n",M,M);
for(i=0;i{
for(j=0;j/**********************found***********************/
printf("%4d",xx[ij]);
/**********************found***********************/
printf('\n');
}
for(i=0;isum+=xx[i][i]*xx[i][i]+xx[i][n-i-1]*xx[i][n-i-1];
return(sum);
}
main()
{
intaa[M][M]={{3,12,4,24,35},{11,3,3,7,56},{61,27,58,49,24},{17,28,7,36,85},
{15,33,5,24,9}};
clrscr();
printf("\nTheresultofallelementson2diagnalsis%d",fun(M,aa));
}
26.2.改错题.下列给定程序中,函数fun()的功能是:
用冒泡法对6个字符串按由大到小的顺序进行排序。
请改正程序中的错误,使它能得到正确结果
#include
#include
#defineMAXLINE20
voidfun(char*pstr[6])
{
inti,j;
char*p;
for(i=0;i<5;i++)
for(j=i+1;j<6;j++)
/**********************found***********************/
if(strcmp((pstr+i),(pstr+j))<0)
{
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
/**********************found***********************/
*(pstr+j)=*p;
}
}
main()
{
inti;
char*pstr[6],str[6][MAXLINE];
clrscr();
for(i=0;i<6;i++)
pstr[i]=str[i];
printf("\nEnter6string(1stringateachline):
\n");
for(i=0;i<6;i++)
scanf("%s",pstr[i]);
fun(pstr);
printf("Thestringsaftersorting:
\n");
for(i=0;i<6;i++)
printf("%s\n",pstr[i]);
}
28.2.改错题
下列给定程序中,函数fun()的功能是:
对N名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
#include
#include
#include
#include
#defineN10
typed