函数2 2018年11月29日
以下内容仅供娱乐,欢迎随时探讨,请多指教!
1、下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
#include <stdio.h>
void fun(int a[][5])
{
int i,k;
for(i=0; i<5; i++)
for(k=0; k<5; k++)
if(i>=k)a[i][k]=0;
}
int main()
{
int a[5][5];
int i,k;
for(i=0; i<5; i++)
for(k=0; k<5; k++)
a[i][k]=5*i+k+1;
fun(a);
for(i=0; i<5; i++)
{
for(k=0; k<5; k++)
printf("%d\t",a[i][k]);
printf("\n\n");
}
return 0;
}
函数接口如下:int fun(int a[][N],int n)
2、下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是求出数组周边元素的平均值并作为函数值返回给主函数中的s。
函数接口如下:double fun(int w[][N],int n)
#include <stdio.h>
double fun(int w[][5],int n)
{
int i;
double s;
for(i=0; i<5; i++)
s+=w[0][i]+w[4][i];
for(i=1; i<5-1; i++)
s+=w[i][0]+w[i][4];
return s/(4*5-4);
}
int main()
{
int a[5][5];
int i,k;
double s;
for(i=0; i<5; i++)
for(k=0; k<5; k++)
a[i][k]=5*i+k+1;
s=fun(a,5);
for(i=0; i<5; i++)
{
for(k=0; k<5; k++)
printf("%d\t",a[i][k]);
printf("\n\n");
}
printf("s=%lf\n",s);
return 0;
}
3、请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。
函数接口如下:void fun(int tt[M][N], int pp[N])
#include <stdio.h>
#define M 3
#define N 3
void fun(int tt[M][N], int pp[N])
{
int i,k,n;
for(i=0; i<3; i++) //列
{
n=0;
for(k=0; k<3; k++) //行
{
if( tt[k][i] < tt[n][i] )n=k;//记录
}
pp[i]=tt[n][i];
}
}
int main()
{
int tt[M][N]= {
{
5,2,13},{
4,11,6},{
7,8,9}},pp[N];
int i,k;
fun(tt,pp);
printf("before is\n");
for(i=0; i<M; i++)
{
for(k=0; k<N; k++)
printf("%d\t",tt[i][k]);
printf("\n\n");
}
for(i=0; i<3; i++)
printf("%d ",pp[i]);
return 0;
}
4、请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
函数接口如下:unsigned int fun(unsigned int w)
#include <stdio.h>
//注意范围
unsigned int fun(unsigned int w)
{
if(w>=10000) return w%10000;
if(w>=1000) return w%1000;
if(w>=100) <