c语言求二维数组最小值,C语言 基础60题(2)——二维数组操作

本篇内容主要是是对二维数组操作,掌握二维数组作为参数传递时,如何用指针表示。

第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);

}

大家应该都知道,程序的算法不是唯一的,欢迎路过的朋友将你们认为更高效的算法指出,欢迎评论,让我们一起进步吧......

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值