max=a[i][j];
returnmax;
}
main()
{intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();
printf("max=%d\n",fun(arr));
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*wf;
intarr[][M]={5,8,3,90,76,-4,12,82};
wf=fopen("out.dat","w");
fprintf(wf,"max=%d\n",fun(arr));
fclose(wf);
}
题目六二维数组周边元素1
3.下列程序定义了N×N的二维数组,并在主函数中赋值。
请编写函数fun,函数的功能是:
求出数组周边元素的平均值并作为函数值返回给主函数中的s。
例如,若a数组中的值为:
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
则返回主程序后s的值应为3.375。
#include
#include
#include
#defineN5
doublefun(intw[][N])
{
inti,j,k=0;
doubleav=0.0;
for(i=0;ifor(j=0;jif(i==0||i==N-1||j==0||j==N-1)/*只要下标中有一个为0或N-1,则它一定是周边元素*/
{av=av+w[i][j];/*将周边元素求和*/
k++;
}
returnav/k;/*求周边元素的平均值*/
}
voidmain()
{
FILE*wf;
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;
system("CLS");
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);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%lf",s);
fclose(wf);
/*****************************/
}
题目六二维数组周边元素2
3.请编写函数fun,该函数的功能是:
求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如,若二维数组中的值为:
1 3 5 7 9
2 9 9 9 4
6 9 9 9 8
1 3 5 7 0
则函数值为61。
#include
#include
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
inti,j,sum=0;
for(i=0;ifor(j=0;jif(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/
sum=sum+a[i][j];/*将周边元素相加*/
returnsum;
}
voidmain()
{
FILE*wf;
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;
system("CLS");
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");
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%d",y);
fclose(wf);
/*****************************/
}
题目七二维数组转一维数组1
3.请编写函数fun,该函数的功能是:
将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为
33333333
44444444
55555555
则一维数组中的内容应是:
334455334455334455334455
#include
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j;
for(j=0;jfor(i=0;i{
b[*n]=*(*(s+i)+j);
*n=*n+1;/*通过指针返回元素个数*/
}
}
voidmain()
{
intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
inta[100]={0},n=0;
FILE*out;
printf("Thematrix:
\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
/******************************/
out=fopen("out.dat","w");
printf("TheAarray:
\n");
for(i=0;i{printf("%3d",a[i]);
fprintf(out,"%d",a[i]);
}
printf("\n\n");
fclose(out);
/******************************/
}
题目七二维数组转一维数组2
3.请编写函数fun,该函数的功能是:
将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为
WWWW
SSSS
HHHH
则字符串中的内容应是:
WSHWSHWSHWSH。
#include
#defineM3
#defineN4
voidfun(char(*s)[N],char*b)
{
inti,j,k=0;
for(i=0;ifor(j=0;jb[k++]=s[j][i];
b[k]='\0';
}
voidmain()
{
FILE*wf;
chara[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};
inti,j;
printf("Thematrix:
\n");
for(i=0;i{for(j=0;jprintf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("TheAstring:
\n");
puts(a);
printf("\n\n");
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%s",a);
fclose(wf);
/*****************************/
}
题目七二维数组转一维数组3
1.请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
#include
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
inti,j,max;
for(j=0;j{
max=tt[0][j];/*假设各列中的第一个元素最大*/
for(i=0;iif(tt[i][j]>max)/*如果各列中的元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/
max=tt[i][j];
pp[j]=max;/*将各列的最大值依次放入pp数组中*/
}
}
main()
{
voidNONO();
intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;ifor(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
NONO();
}
voidNONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
inti,j,k,m,t[M][N],p[N];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(m=0;m<10;m++){
for(i=0;ifor(j=0;jfscanf(rf,"%6d",&t[i][j]);
}