函数题
定义一个二维数组 每一行都以0结束 然后找出每一行中绝对值最大的数输出
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
int main(){
int n,m,i,j,max;
int a[100][100] = {0};
printf("输入二维数组行数:");
scanf("%d", &n);
for(i = 0; i < n; i++){
j = 0;
scanf("%d", &a[i][j]);
while (a[i][j]!=0)
{
j++;
scanf("%d", &a[i][j]);
}
}
for(i = 0; i < n; i++){
max = a[i][0];
for (j = 1; a[i][j]!=0; j++)
{
if (abs(max)<abs(a[i][j]))
{
max = a[i][j];
}
}
printf("%d\n", max);
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
简单的实现,参考代码如下:
int main(int argc, const char * argv[]) {
// 比如定义一个二维数组a 有2行5列 根据需要进行赋值,这里没有赋值
int a[2][5] = {{1, 2, -5, -8, 3}, {2, -10, 9, 8, 3}};
// 遍历每一行
for (int i = 0; i < 2; i++) {
int max = 0; // 定义一个临时变量记录第i+!行绝对值最大的数
// 遍历第i+1行的每一列,即每一个数
for (int j = 0; j < 5; j++) {
// 遇到 0 结束
if (a[i][j] == 0) {
break;
}
if (j == 0) {
max = a[i][j];
}
if (abs(max) < abs(a[i][j])) {
max = a[i][j];
}
}
printf("第%d行绝对值最大的数是:%d\n", i+1, max);
}
return 0;
}
二维数组必须指定行数和列数,作为一般性函数,可以这样设计
void maxAbs(double *a, int n,int m){ /*a是数组的入口,n是行数,m是列数*/
int i,j;
double max,mAbs;/*用来存储每行最大绝对值相关信息*/
double t,tAbs;/*用来获取一个临时数*/
for(i=0;i<n;i++){
max=0;
mAbs=0;
for (j=0;j<m;j++){
t=a[i*m+j];
if ( t==0 ) break;
if (t<0){
tAbs=-t;
}else{
tAbs=t;
}
if (tAbs>mAbs){
mAbs=tAbs;
max=t;
}
}
print("第%d行绝对值最大的数是:%f\n",i ,max);
}
}