『壹』 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;