當前位置:首頁 » 編程語言 » 求每行c語言最大值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

求每行c語言最大值

發布時間: 2022-05-19 17:09:26

『壹』 c語言中二維數組找到每行的最大值

思路和想法完全正確,仔細看應該是給b[]賦值沒有寫對位置,在往後一步,放在大括弧外面,應該循環比較是兩層循環加一個if比較,所以要把賦值在往後移動,等比較全部完成後再賦值給數組保存。

#include<stdio.h>

//首先指定M和N的值

#define M 3

#define N 3

int main()

{

printf("There are %d rows %d columns. ", M, N); //輸出到屏幕的提示信息

int a[M][N] = { 0 }; //聲明一個M行N列的數組,並將全部元素賦初值為0

int i, j; //for循環中要用到

for (i = 0; i < M; i++)

{

printf("input %d row's %d values: ", i + 1, N); //輸出到屏幕的提示信息

for (j = 0; j < N; j++)

scanf("%d", &a[i][j]); //對第i行第j列的元素賦值

}

int maxArr[M] = { 0 }; //聲明一個含有M個元素的一維數組來存儲M個行最大值

for (i = 0; i < M; i++)

{

int max = a[i][0]; //先將每一行的第一個數作為最大值

for (j = 1; j < N; j++) //找出行最大值

if (max < a[i][j])

max = a[i][j];

maxArr[i] = max; //將行最大值存入行最大值數組中

}

for (i = 0; i < M; i++) //將每行最大的數輸出

printf("%d ", maxArr[i]);

return 0;

}

(1)求每行c語言最大值擴展閱讀:

二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按「列優先順序」存儲時,地址計算為:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組

『貳』 如何用c語言求2維數組的每行的最大值

假設數組a[5][6];

inti,j;
for(i=0;i<5;++i)
{
max=a[i][0];
for(j=1;j<6;++j)
{
if(max<a[i][j])max=a[i][j];
}
printf("第%d行的最大值:%d ",max);
}

輸出的就是每行最大值了

『叄』 C語言求出一個3×4的矩陣每一行的最大值

1、/打開Dev-c++軟體,點擊「新建源代碼」。

『肆』 c語言輸入一個二維數組,找出每行的最大值輸出

#include<stdio.h>

//首先指定M和N的值

#define M 3

#define N 3

int main()

{

printf("There are %d rows %d columns. ", M, N); //輸出到屏幕的提示信息

int a[M][N] = { 0 }; //聲明一個M行N列的數組,並將全部元素賦初值為0

int i, j; //for循環中要用到

for (i = 0; i < M; i++)

{

printf("input %d row's %d values: ", i + 1, N); //輸出到屏幕的提示信息

for (j = 0; j < N; j++)

scanf("%d", &a[i][j]); //對第i行第j列的元素賦值

}

int maxArr[M] = { 0 }; //聲明一個含有M個元素的一維數組來存儲M個行最大值

for (i = 0; i < M; i++)

{

int max = a[i][0]; //先將每一行的第一個數作為最大值

for (j = 1; j < N; j++) //關鍵步驟——找出行最大值

if (max < a[i][j])

max = a[i][j];

maxArr[i] = max; //將行最大值存入行最大值數組中

}

for (i = 0; i < M; i++) //將每行最大的數輸出

printf("%d ", maxArr[i]);

return 0;

}

(4)求每行c語言最大值擴展閱讀:

分析

1、for循環輸入一個二維數組a[M][N]。

2、使用一個一維數組存儲二維數組每行的最大值,一維數組的大小為M。

3、嵌套for循環找出二維數組每行的最大值,並將最大值傳遞給一維數組。

4、輸出存儲最大值的數組。

『伍』 C語言求每行最大值

程序第12行的那個if語句判斷條件錯了,為什麼?因為你在第10行定義的最小值是tt[i][0],這樣在有一組數據你的19進不去循環,導致pp[i]未賦值到最小的,建議將最小值初始為一個極大值。

『陸』 C語言產生隨機二維數組並求每一行的最大值最小值和平均值,那怎麼把最大值最小

把這個二維數組看作是每一行是一維數組的一維數組。
先寫一個對第i 行的一維數組求最大值,最小值和平均值的程序,然後在外面加一層循環,窮舉二維數組的每一行就可以了。

『柒』 C語言2維數組求每行的最大值及其位置,每行的最小值及其位置

#include<stdio.h>

#define n 3

main()

{

int a[n][n]={1,3,2,5,4,6,9,8,7};

int i,j,x,y,min,p;

for(i=0;i<3;i++)

{p=0;

min=a[i][0];

for(j=0;j<3;j++)

{

if(min>a[i][j])

{min=a[i][j];

p=j;

}

}

printf("%d 位置%d ",min,p);

}

}

『捌』 C語言求一個二維組每行每列的最大值 並放在一個新數組中 ,用指針做

行列最大值,方法很多,一般循環遍歷屬於就可以了。

既然你要用指針來做,我就用指針來寫。利用數組元素地址連貫性來做。

#include <stdio.h>

#define MXR 4//最大行數

#define MXC 3//最大列數

int main()

{

int i=0,mr,mc,*p=NULL,*ps=NULL;

int nums[MXR][MXC]={{8,6,7},{2,6,3},{1,4,2},{9,3,5}};

int mrs[MXR],mcs[MXC];

printf("原二維數組: 8 6 7 2 6 3 1 4 2 9 3 5 ");

//-----------------------獲取每行最大值------------------------------------------------

p=&nums[0][0],mr=*p;

for(;p<=&nums[MXR-1][MXC-1];p++)

{

if(p>&nums[0][0]&&(p-&nums[0][0])%MXC==0)//如果指針換行,保存上一行最大值

{

mrs[i++]=mr;

mr=*p;

}

if(mr<*p)

mr=*p;

}

mrs[i]=mr;

//-----------------------獲取每列最大值-----------------------------------------------------

i=0,ps=&nums[0][0];

while(ps<=&nums[0][MXC-1])

{

p=ps,mc=*p;

while(p<=&nums[MXR-1][MXC-1])

{

if(mc<*p)

mc=*p;

p+=MXC;

}

mcs[i++]=mc;

ps++;

}

//---------------輸出結果-----------------------------------------------------------------

printf("每行最大值分別為: ");

for(i=0;i<MXR;i++)

printf("%d ",mrs[i]);

printf(" 每列最大值分別為: ");

for(i=0;i<MXC;i++)

printf("%d ",mcs[i]);

return 0;

}

『玖』 C語言編程問題,求每行的最大值

#include"stdio.h"
intT=4,S=10;
doublearr[]={0.235,0.253,0.258,0.245};
doublearray[4][10];
voidmain()
{
inti,j,t,m,c=0;
doublee[10],d[10];
doublemax,z;

for(t=0;t<T-1;t++)
{
if(t==0)
for(i=0;i<=S-1;i++)
{
d[i]=arr[0]*(i+1);
if(d[i]>1)
{
d[i]=1;
}
array[0][i]=d[i];
}
else
for(i=t;i<=S-1;i++)
{
for(j=1;j<i+1;j++)
{
if(arr[t]*j>1)
{
z=1;
}
else
{
z=arr[t]*j;
}
e[j-1]=z+array[t-1][i-j];
printf("%f",e[j-1]);
}

max=0;
for(m=0;m<j-1;m++)//將這里的<=改為<就行了
{
if(max<e[m])
{
max=e[m];
}
}
array[t][i]=max;
printf("%f ",array[t][i]);
}
printf(" ");
}
}

你這個程序有很大的問題。你賦值e[]每次只賦值了i個,但你求最大值的時候,卻比較了i+1個。只所以當t=1時是正確的,是因為你沒有將e[]賦初值,它裡面的數據都是以前的數據,基本都是小於0的數,所以,你這次是正確的。

但是當t=2時,由於你在t=1時已經將e[]賦值過,所以你多比較的一個數就會算進去。所以你第二次的第一個最大值,是第二個三角形的2個數,加上第一個三角形最後一排的第3個數,所以是0.746000.第二個最大值,是第二個三角形的3個數,加上第一個三角形最後一排的第4個數,所以是2.依次後推。希望你明白

『拾』 用C語言編程:3行4列的二維數組中輸出每一行的最大值怎麼編程呀

摘要 您好,很榮幸幫您解答--int a[3][4],m=0;