當前位置:首頁 » 編程語言 » c語言輸入m生成二維數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言輸入m生成二維數組

發布時間: 2022-04-17 09:43:09

㈠ 用c語言創建一個二維數組a[m][n],要求m,n從鍵盤輸入

#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int m,n;
int** a;
int i,j;
printf("輸入m和n,空格分隔:");
scanf("%d%d",&m,&n);
a=(int**)malloc(sizeof(int*)*m);
for(i=0;i<m;i++)
{
a[i]=(int*)malloc(sizeof(int)*n);
}
srand(time(0));
printf("隨機填充數組如下:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=rand()%100;
printf("%-4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<m;i++)
free(a[i]);
free(a);
return 0;
}

㈡ c語言輸入m個字元串到二維數組中,並假設每一個字元串的長度均小於n,

#include <stdio.h>

#include"string.h"
#defineM5
#defineN31
intmain(void){
chars[M][N],i,j,k,t[N];
printf("Inputsomestrings... ");
for(i=0;i<M;scanf("%30s",s[i++]));
for(i=0;i<M;i++){
for(k=i,j=k+1;j<M;j++)
if(strcmp(s[k],s[j])>0)
k=j;
if(k-i){
strcpy(t,s[k]);
strcpy(s[k],s[i]);
strcpy(s[i],t);
}
printf("%s ",s[i]);
}
return0;
}

㈢ c語言 輸入一個m*n整形的二維數組,對其每行求和,和單獨存放在一個一維數組中

m,n 輸入後,動態分配 2維數組 a, 和存放 每行和 的 1維數組 b.
然後輸入 m*n個 整形數據,最後輸出 每行和。
#include <stdio.h>
int main(){
int **a; // a[m][n] or a[NR][NC]
int *b;
int NR,NC;
int i,j;
printf("input number of rows m:\n");
scanf("%d",&NR);
printf("input number of cols n:\n");
scanf("%d",&NC);
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
b = (int *) malloc(sizeof(int *) * NR);
printf("input 2-d array data, %d rows %d colums:\n",NR,NC);
for (j=0;j<NR;j++) for (i=0;i<NC;i++) scanf("%d",&a[j][i]);
for (j=0;j<NR;j++){
b[j]=0;
for (i=0;i<NC;i++) b[j]=b[j]+a[j][i];
}
printf("sum of each line:\n");
for (j=0;j<NR;j++) printf("%d ",b[j]);
return 0;
}
例如:
input number of rows m: 3
input number of cols n: 4
input 2-d array data, 3 rows 4 colums:
1 2 3 4
5 6 7 8
9 10 11 12
sum of each line:
10 26 42

㈣ C語言中,如何手動輸入二維數組

C語言中,如何手動輸入二維數組?c語言的數組是非常重要的內容,特別是二維數組的內容,所以今天就由小編來為大家介紹c語言怎麼創建一個二維數組。
工具原料c語言電腦
方法/步驟分步閱讀
1
/6
第一首先在電腦上打開c語言編程軟體。
然後創建項目。
2
/6
第二然後導入stdio.h和stdlib包。
再加入malloc包。
3
/6
第三然後定義五個參數。
再創建其中兩個參數的空間。
4
/6
第四然後用for語句進行循環。
再用scanf語句進行接收輸入到二維數組。。
5
/6
第五然後用兩個for語言循環。
再輸出二維數組的數值。
6
/6
第六然後用printf語句進行數據輸出分格。
這樣一個二維數組就創建成功了。
注意事項
個人經驗,僅供參考。
內容僅供參考並受版權保護
擴展內容:
二維數組:
二維數組本質上是以數組作為數組元素的數組,即「數組的數組」,類型說明符 數組名[常量表達式][常量表達式]。二維數組又稱為矩陣,行列數相等的矩陣稱為方陣。對稱矩陣a[i][j] = a[j][i],對角矩陣:n階方陣主對角線外都是零元素。
二維數組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語言編程,如何自動生成一個二維數組

程序主要通過malloc函數動態生成數組,srand和rand函數配合生成隨機數據,代碼如下,
//程序功能,實現自定義m*n二維數組,隨機生成給定范圍max-min的數組元素
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
int i=0,j=0;
int m=0,n=0;//數組維數
int max=0,min=0;//數組數據范圍
int **p=NULL;//二維指針,存放m*n個元素
int tmp;
printf("請輸入數組維數m和n:");
scanf("%d %d",&m,&n);
printf("請輸入數組元素最大最小值max和min:");
scanf("%d %d",&max,&min);
if(max<min)//保證max大於min
{
tmp=max;
max=min;
min=max;
}
p=(int**)malloc(m*sizeof(int*));//先分配m個一維指針
if(NULL==p)
exit(1);
for (i = 0; i < n ; i++)
{
p[i] = (int*)malloc(n*sizeof(int));//為m個一維指針分配n個整型大小的空間
if (NULL==p[i])
exit(1);
}
srand(time(NULL));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
p[i][j]=rand()%(max-min+1)+min;
printf("%d*%d二維數組為:\n",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d\t",p[i][j]);
printf("\n");
}

for (i = 0; i < n; i++)
{
free(p[i]);
p[i]=NULL;
}
free(p);
p=NULL;
}

void *malloc( size_t size );如果分配成功則返回指向被分配內存的指針,指針指向一個大小為size的內存空間;如果錯誤發生返回NULL。
一般srand和rand配合使用產生偽隨機數序列。rand函數在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過參數seed改變系統提供的種子值,從而可以使得每次調用rand函數生成的偽隨機數序列不同,從而實現真正意義上的「隨機」。通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以為rand函數提供不同的種子值,進而產生不同的隨機數序列。

㈥ C語言 如何動態創建二維數組

這樣的方法可行,不過要是題目要求輸入m和n,然後再定義二維數組a[m][n],那就行不通了。
你可以這樣做:(以int型為例)
int **a;
int m,n,i;

scanf("%d%d",&m,&n);

a=(int**)malloc(m*sizeof(int*)); /*malloc函數在stdlib.h裡面,用的時候加入這個頭文件*/
for(i=0;i<m;i++)
a[i]=(int*)malloc(n*sizeof(int));

/*這樣以後你就可以把a當作二維數組a[m][n]來用了。。

㈦ c語言如何動態創建二維數組

既然是動態創建,那麼,所創建的二維數組的行、列數應該具有「普適」性,即,應由「用戶」確定二維數組的規模。這是有難度的。因為,二維數組要牽扯行指針,且需要固定每行的列元素個數,用這種思路就沒有辦法達到「普適」。
為此,必須清醒地知道,所謂二維數組,其元素在內存中依然是以一維的方式存放的。說實話,二維數組本質上是不存在的。
既然如此,那麼,「構造」一個所謂的二維數組,只要能提供足夠實用的函數(工具)操作這個二維數組就可以了。
綜上,接受由用戶決定的二維數組行、列值,申請一個一維數組的空間,按照二維數組方式進行定位和操作就可以了。
為簡便起見,我用如下定義,你可以更改裡面的類型,以適應自己的需要:
typedef int USER_TYPE;

// 定義一個控制二維數組(矩陣)的「控制頭」,由三個成員組成

typedef struct MATRIX
{
USER_TYPE *data; // 真正用來存儲二維數組元素的空間

int Row; // 二維數組行數

int Col; // 二維數組列數

}MATRIX;

MATRIX *initMatrix(int row, int col); // 初始化二維數組

USER_TYPE getElementAt(MATRIX matrix, int i, int j); // 取得指定下標的元素

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val); // 給指定下標的元素賦值
void destroyMatrix(MATRIX *matrix); // 銷毀二維數組

void destroyMatrix(MATRIX *matrix)
{
free(matrix->data);
free(matrix);

}

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val)
{
matrix.data[i*matrix + j] = val;

}

USER_TYPE getElementAt(MATRIX matrix, int i, int j)
{
return matrix.data[i*matrix.Col + j];

}

MATRIX *initMatrix(int row, int col)
{
MATRIX *mp;

mp = (MATRIX *)malloc(sizeof(MATRX));
mp->data = (USER_TYPE *)malloc(sizeof(USER_TYPE) * row * col);
mp->Row = row;
mp->Col = col;

return mp;

}
把上面的函數當成工具,完成二維數組初始化、賦值、取值等一系列操作,如果需要比較,還需要編寫比較的函數。

㈧ 急急!!!如何用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語言怎麼創建二維數組

int a[m][n];//就表示一個m行n列的整型二維數組
在c語言中數組的下標是從0開始的所以,數組a的元素個數可以表示為:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>
intmain()
{
inta[3][2],i,j;//定義一個3行2列的整型二維數組a

for(i=0;i<3;i++)//依次給二維數組賦值
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf(" ");
for(i=0;i<3;i++){//輸出二維數組
for(j=0;j<2;j++)
printf("%d",a[i][j]);
printf(" ");
}
return0;
}
/*
運行結果:
12
34
45

12
34
45
*/

㈩ C語言如何建立一個二維數組

剛剛看錯了,原來是C語言,這樣就好了.
輸入m,n

int m,n;
int i,j;
scanf("%d%d",&m,&n);
int **mm=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
mm[i]=(int*)malloc(n*sizeof(int));

這就建了一個二維數組mm[m][n]了.
使用時,就直接mm[i][j]就可以了.

先輸入行數m,列數n
然後輸入一個m*n的矩陣
然後輸出這個矩陣.

#include <stdio.h>
#include <malloc.h>
void main() {
int m,n;
int i,j;
scanf("%d%d",&m,&n);
int **mm=(int**)malloc(sizeof(m*sizeof(int*)));
for(i=0;i<m;i++)
mm[i]=(int*)malloc(sizeof(n*sizeof(int)));
for(i=0;i<m;i++) {
for(j=0;j<n;j++)
scanf("%d",&mm[i][j]);
}
for(i=0;i<m;i++) {
for(j=0;j<n;j++)
printf("%d ",mm[i][j]);
printf("\n");
}
}