本篇内容主要是是对二维数组操作,掌握二维数组作为参数传递时,如何用指针表示。
第10题
double sum_2diagonal(double* array_2d, unsigned int m, unsigned int n);
功 能:求出二维数组中两条对角线上元素之和
参 数:array_2d为二维数组;m为二维数组的行数;n为二维数组的列数.
返回值:二维数组中两条对角线上元素之和
分 值://题:求出二维数组中两条对角线上元素之和。 应该是求行数和列数相同的数组
double sum_2diagonal(double *array_2d,unsigned int m,unsigned int n){
double sum=0;
for(unsigned int i=0;i
for(unsigned int j=0;j
if(i==j)
sum=sum+*(array_2d+i*n+j);
if((n-1-i)==j)
sum=sum+*(array_2d+i*n+j);
}
}
return sum;
}
第11题
double sum_diagonal(double* array_2d, unsigned int m, unsigned int n);
功 能:求出二维数组中主对角线上元素之和
参 数:array_2d为二维数组;m为二维数组的行数;n为二维数组的列数.
返回值:二维数组中主对角线上元素之和
分 值:double sum_diagonal(double *array_2d,unsigned int m,unsigned int n){
double sum=0;
for(unsigned int i=0;i
for(unsigned int j=0;j
if(i==j)
sum=sum+*(array_2d+i*n+j);
}
}
return sum;
}
第12题
double sum_circum(double* array_2d, unsigned int m, unsigned int n);
功 能:求出二维数组中周边元素之和
参 数:array_2d为二维数组;m为二维数组的行数;n为二维数组的列数.
返回值:二维数组中周边元素之和
分 值:double sum_circum(double *array_2d,unsigned int m,unsigned int n){
double sum=0;
for(unsigned int i=0;i
sum=sum+*(array_2d+i*n+0);
sum=sum+*(array_2d+i*n+(n-1));
}
for(unsigned int j=1;j
sum=sum+*(array_2d+j);
sum=sum+*(array_2d+(m-1)*n+j);
}
return sum;
}
第13题
double sum_max(double* array_2d, unsigned int m, unsigned int n);
功 能:求出二维数组中的最大值
参 数:array_2d为二维数组;m为二维数组的行数;n为二维数组的列数.
返回值:二维数组中的最大值
分 值:double sum_max(double *array_2d,unsigned int m,unsigned int n){
double largest=*array_2d;
for(unsigned int i=0;i
for(unsigned int j=0;j
if(largest
largest=*(array_2d+i*n+j);
}
}
return largest;
}
第14题
double sum_min(double* array_2d, unsigned int m, unsigned int n);
功 能:求出二维数组中的最小值
参 数:array_2d为二维数组;m为二维数组的行数;n为二维数组的列数.
返回值:二维数组中的最小值
分 值:double sum_min(double *array_2d,unsigned int m,unsigned int n){
double min=*array_2d;
for(unsigned int i=0;i
for(unsigned int j=0;j
if(min>*(array_2d+i*n+j))
min=*(array_2d+i*n+j);
}
}
return min;
}
//测试程序
#include
//将sum_2diagonal()、sum_diagonal()、sum_circum()、sum_max()、sum_min()代码考到此处
void main()
{
//调用sum_2diagonal()、sum_diagonal()、sum_circum()、sum_max()、sum_min()函数
double arr_2d[4][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};
double sum_2d = sum_2diagonal((double *)arr_2d,4,4);
double sum_d = sum_diagonal((double *)arr_2d,4,4);
double sum_cir = sum_circum((double *)arr_2d,4,4);
double max=sum_max((double *)arr_2d,4,4);
double min=sum_min((double *)arr_2d,4,4);
printf("the sum_2diagonal is %.2f\n",sum_2d);
printf("the sum_diagonal is %.2f\n",sum_d);
printf("the sum_circum is %.2f\n",sum_cir);
printf("the largest number is %.2f\n",max);
printf("the least number is %.2f\n",min);
double arr_2dd[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}};
sum_2d = sum_2diagonal((double *)arr_2dd,3,4);
sum_d = sum_diagonal((double *)arr_2dd,3,4);
sum_cir = sum_circum((double *)arr_2dd,3,4);
max=sum_max((double *)arr_2dd,3,4);
min=sum_min((double *)arr_2dd,3,4);
printf("the sum_2diagonal is %.2f\n",sum_2d);
printf("the sum_diagonal is %.2f\n",sum_d);
printf("the sum_circum is %.2f\n",sum_cir);
printf("the largest number is %.2f\n",max);
printf("the least number is %.2f\n",min);
}
第15题
int sum_odd(unsigned int n);
功 能:求出小于给定自然数的所有奇数之和
参 数:n为给定的自然数.
返回值:>=0,小于给定自然数的所有奇数之和; <0,不成功.
分 值:int sum_odd(unsigned int n){
if(n<0)
return -1;
int sum=0;
unsigned int i;
for( i=1;i<=n;i+=2){
sum=sum+i;
}
return sum;
}
第16题
int sum_even(unsigned int n);
功 能:求出小于给定自然数的所有偶数之和
参 数:n为给定的自然数.
返回值:>=0,小于给定自然数的所有偶数之和; <0,不成功.
分 值:int sum_even(unsigned int n){
if(n<0)
return -1;
int sum=0;
unsigned int i;
for( i=0;i<=n;i+=2){
sum=sum+i;
}
return sum;
}
//测试程序
#include
//将sum_odd()、sum_even()代码考到此处
void main()
{
//调用sum_odd()、sum_even()函数
int a=sum_odd(1);
int b=sum_odd(10);
printf("the sum_odd is %d\n",a);
printf("the sum_odd is %d\n",b);
a=sum_even(1);
b=sum_even(10);
printf("the sum_odd is %d\n",a);
printf("the sum_odd is %d\n",b);
}
大家应该都知道,程序的算法不是唯一的,欢迎路过的朋友将你们认为更高效的算法指出,欢迎评论,让我们一起进步吧......