Ⅰ 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;
}
(1)c语言传入二维数组扩展阅读:
分析
1、for循环输入一个二维数组a[M][N]。
2、使用一个一维数组存储二维数组每行的最大值,一维数组的大小为M。
3、嵌套for循环找出二维数组每行的最大值,并将最大值传递给一维数组。
4、输出存储最大值的数组。
Ⅱ c语言函数怎么传入一个二维数组
这样传:
函数声明:Func(变量类型 *[二维数组的列长] arry);
char arry[][4] ;
Func(arry);
Ⅲ 急急!!!如何用c语言输入和输出一个二维数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[2][2];
int i,j;
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
scanf("%d ",&a[i][j]);
}
}
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d",a[i][j]);
return 0;
}
运行成功
Ⅳ C语言中如何将二维数组作为函数的参数传递
在c语言中可以用二维数组作为实参或者形参。
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:
void f(int array[3][10]); //正确
void f(int array[][10]); //正确上面的两种二维数组形参表示都是正确的。
2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:
void f(int array[][]); //错误
因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:
void f(int array[3][]); //错误 3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:
void f(int array[][10]);可以将如下数组传递给函数f。
int a[2][10] = {1,2,3,4};
int b[4][10] = {1};
Ⅳ c语言如何传递多个二维数组
二维数组即数组元素为数组的数组,数组在函数传参时,为了避免复制,会自动转成指向数组第1个元素的指针,二维数组在传参时,会转成一个指向数组的指针
所以声明是fun(int (*a)[N])当然写成fun(int a[][N])也行,因为实际是int(*)[N]这种类型,所以建议就这么写。
调用就直接转一个int a[x][N]类型的数组即可。
定义就是多一个函数体,必须有形参的名字。
Ⅵ c语言二维数组输入
输入格式里不要添加空格(你用了: "%d ") 。改用 scanf("%d", &a[j][i]); 就可以了。
输入的数据 用空格 或 换行符分隔即可。
Ⅶ C语言中 指针做函数参数传递二维数组
C语言中
指针做函数参数传递二维数组有两种基本方法:
1、传递“数组指针”
#include <stdio.h>
void output( int (*pa)[3], int n )//这个函数只能输出n行3列的二维数组
{
int i,j;
for( i=0;i<n;i++ ){
for( j=0;j<3;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
output(a,2);
}
2、传递“指针数组”
先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。
#include <stdio.h>
void output( int *pa[], int row,int col ) //这个函数更通用,但调用前,要做好准备工作。
{
int i,j;
for( i=0;i<row;i++ ){
for( j=0;j<col;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
int i;
int *pa[2];
for( i=0;i<2;i++ )
pa[i]=a[i];
output(pa, 2, 3);
}
Ⅷ C语言如何将数据放入二维数组
#include<stdio.h>
int main()
{
int i, j;
int num[5][5];//二维数组
for(i = 0; i < 5; i++)//行
{
for(j = 0; j < 5; j++)//列
{
scanf("%d",&num[i][j]); //输入25个数据,空格分隔,最后回车。
}
}
for(i = 0; i < 5; i++)//行
{
for(j = 0; j < 5; j++)//列
{
printf(" %d",num[i][j]); //输出
}
printf("\n");
}
return 0;
}
Ⅸ 如何使用C语言在动态数组中手动输入一个二维数组的值
c++强答一波
#include <iostream>
using namespace std;
int main()
{
cout << "请输入你需要的矩阵a的行数和列数" << endl;
int s, t;//s为数组行数的递推
int i, j;//i为二维数组的行数,j为二位数组的列数
cin >> i >> j;
int a[100][100];
int b[100][100];
cout << "请输入你需要的矩阵b的行数和列数" << endl;
int m, n;
cin >> m >> n;//m为二维数组的行数,n为二位数组的列数
if (i != m || j != n)//矩阵a与b的哈那个书和列数需相等,否则无法比较
{
cout << "error" << endl;
}
cout << "请输入你需要的矩阵a的数值" << endl;
for (s = 0; s < i; s++)
{
for (t = 0; t < j; t++)
{
cin >> a[s][t];//输入矩阵a
}
}
cout << "请输入你需要的矩阵b的数值" << endl;
for (s = 0; s < i; s++)
{
for (t = 0; t < j; t++)
{
cin >> b[s][t];//输入矩阵b
}
}
cout << "a的矩阵为" << endl;
for (s = 0; s < i; s++)
{
for (t = 0; t < j; t++)
{
cout << a[s][t] << " ";//输出矩阵a
}cout << endl;
}
cout << "b的矩阵为" << endl;
for (s = 0; s < i; s++)
{
for (t = 0; t < j; t++)
{
cout << b[s][t] << " ";//输出矩阵b
}cout << endl;
}
system("pause");
}
Ⅹ c语言 二维数组如何输入 该怎么输入数组,才能输出
其实并不存在真正的“二维”,只不过是C编译器自动的将它 一行一行的保存成了一维信息。所以,二维数组的输入只要用双重循环即可,比如:
int a[11][11];
for(int i=0; i<10; i++){
for(int j=0; j<10; j++){
scanf("%d",&a[i][j]);
}
}
其实 int a[3][3] 可以这样初始化:
int a[3][3] = {0,1,2,3,4,5,6,7,8};
编译器会自动的将线性信息写入二维数组中。