mdsk.net
当前位置:首页 >> 个m行n列的二维数组,m,n由键盘输入,该怎么定义 >>

个m行n列的二维数组,m,n由键盘输入,该怎么定义

int **a; // a[m][n] int m,n,i,j; printf("please input m n\n"); scanf("%d %d", &m, &n); // m,n由键盘输入, 输入后 做动态分配:a = (int **) malloc(sizeof(int *) * m); for (j=0;j<m;j++){ a[j] = (int *) malloc(sizeof(int) * n); }// 接下来可以 用 a[j][i] 了, 例如

一般设一个足够大的数组存就行了,这种方法是用空间换取时间,效率高.代码参考如下:int m, n;cin>>m>>n;int a[100000][100000]; //足够大的数组int i, j;for(i= 0; i>a[m][n]; }}

在定义一个二维数组的时候,它的第二个维度必须是一个常量,比如你 int a[][];然后输入m,n循环是不合法的.所以你可以预先定义一个,比如int a[][100];(假如预计输入的n小余100),然后用两个for循环把每个值输入

用malloc函数

#include <stdio.h>#include <stdlib.h> int main(){ int n,m,i,j; int **arr; int *ans; printf("Please input m n:"); scanf("%d%d",&m,&n); arr=(int **)malloc(sizeof(int*)*m); for(i=0;i<m;i++) arr[i]=(int*)malloc(sizeof(int)*n); printf("Please input a M*N array:\

1. 把int i ,j,k;改成int i ,j,k=0;.2. 把b[k++]=s[i][j];printf("%3d",b[k]);改成b[k]=s[i][j];printf("%3d",b[k++]);在这里输出没有必要,建议把printf("%3d",b[k]);删除.

下面是我想到的方法,不知道有没有更好的,没有了楼主就先用着吧,输入的时候一定要小心,没有容错操作 #include "stdio.h" #include "stdlib.h" int main() { int m,n,i,j; int **a; scanf("%d",&m); scanf("%d",&n); a = (int **)malloc((m + n)

Scanner sc = new Scanner(System.in);// 接受m和n的值 int m = sc.nextInt(); int n = sc.nextInt(); String[][] arr = new String[m][n];// 为二维数组赋值 for (int i=0;i for (int j=0;j arr[i][j] = sc.next(); }// 输出二维数组 for (int i=0;i for (int j=0;j System.out.print(arr[i][j] + ","); System.out.println(); }

#include #define M 10#define N 10 void main () { int a1[100],a2[M][N]; int m,n,i,j,k=0; printf("请输入行数m 列数n:"); scanf("%d %d",&m,&n); for(i=0;i for(j=0;j { scanf("%d",&a2[i][j]); a1[k++]=a2[i][j]; } for(i=0;i printf("%-5d",a1[i]); }

#include void main(){ int m, n; int i, j; int **a; printf("输入行数和列数:"); scanf("%d%d",&m, &n); a = (int**)malloc(m); if (a==NULL) { printf("申请内存空间失败!\n"); return; }for (i=0; i 评论0 0 0

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com