❶ c語言:怎樣用malloc函數動態分配二維數組,使之可輸入數組的行數和每行的列數。
這個是可以的,但是和其他網友說的一樣,內存是線性的,當你在語言中分配一個多維數組的時候,編譯器其實也是分配線性內存的,但是我們可以通過模擬來實現類似數組的操作,下面演示一個分配以及操作數組的實例(列數要固定,這里假設列數為4):
int _tmain(int argc, _TCHAR* argv[])
{
int (*p)[4] = (int (*)[4])0;
int row = 3;
int (*mem)[4] = (int (*)[4])0; // 定義數組首指針
mem = (int (*)[4])malloc(sizeof(int(*)[4]) * row); // 分配row行, 4列的數組
// 分別為二維數組的第一維各個元素賦值。
mem[0][0] = 1;
mem[0][1] = 2;
mem[0][2] = 3;
mem[0][3] = 4;
// 列印二維數組的各個元素的值
printf("%d, %d, %d, %d", mem[0][0], mem[0][1], mem[0][2], mem[0][3]);
free(mem);
return 0;
}
不過這里列數必須指定,還有一種方法,這種方法可以保證用戶輸入任意行或列,而不必要將列數定死,演示如下:
int getElement(int* arr, int colNum, int row, int col);
void setElement(int* arr, int colNum, int row, int col, int val);
int _tmain(int argc, _TCHAR* argv[])
{
int *arr = (int*)0;
int row = 3;
int col = 5;
//分配 row 行 col 列的整形數組
arr = (int*)malloc(sizeof(int) * col * row);
// 將最後一個元素值設置為100
setElement(arr, col, 2, 4, 100);
//輸出最後一個元素的值
printf("%d", getElement(arr, col, 2, 4));
free(arr);
return 0;
}
//各個參數說明如下:
//arr: 數組首地址
//colNum:數組列數
//row: 要取得的元素所在行
//col: 要取得的元素所在列
int getElement(int* arr, int colNum, int row, int col)
{
return *(arr + sizeof(int) * (row - 1) * colNum + col);
}
// 此函數用來設置指定行和列的元素的值:
//arr: 數組首地址
//colNum:數組列數
//row: 要取得的元素所在行
//col: 要取得的元素所在列
//val: 要設置的值
void setElement(int* arr, int colNum, int row, int col, int val)
{
*(arr + sizeof(int) * (row - 1) * colNum + col) = val;
}
其實歸根到底,還是對指針的操作,希望可以幫到你,呵呵。
❷ C語言怎麼多行輸入
在C語言中,要實現多行數據要使用循環語句,輸入的時候輸入回車鍵進行換行。比如要輸入一個2行3列的矩陣,源碼如下: #include#includeint main(){ int a[2][3]; int i,j; printf("請輸入一個2行3列的矩陣:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } printf("\n您輸入的矩陣是:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf("%d ",a[i][j]); } printf("\n"); } system("pause"); return 0;}
❸ c語言裡面怎麼輸入多行數據
根據數據格式的。
一般這種輸入多行數據,ACM裡面很常見
常用的方式有兩種
1 輸入整行字元串
while(gets(s))
2 每行有固定格式。
比如 固定兩個整型
while(scanf("%d%d", &a, &b) != EOF)
❹ 不知道怎樣用C語言輸入多行數據和輸出多行數據
方法一:將已輸入的數據先保存到數組(二維數組)中,然後再進行數據計算並輸出結果
方法二:輸入時,完成計算,將結果存儲到數組(一維數組)中,全部計算完成,輸出結果數組。
採用哪一種方法,要看上體題目特點和要求。
如,題目:輸入n行整數,輸出每行的平均數 (可採用方法二)
❺ c語言中,輸入時如何輸入多行數據,沒輸入一行我用enter換行時就執行結果了,怎麼搞
可以用字元型數組
每輸入一個字元判斷一次
終止輸入的字元換成別的
❻ c語言數組,怎麼樣從鍵盤上輸入行數和列數
你好!
你的scanf中用逗號分隔了兩個格式符,則輸入時也要用逗號分開
比如輸入
2和5
2,5按下回車就行了
僅代表個人觀點,不喜勿噴,謝謝。
❼ c語言裡面怎麼輸入多行數據並且以輸入0結束,輸入0後才對輸入數據進行處理
通過getchar()得到每次輸入的字元,如果不是0就存入一個buffer中,如果是0就跳出循環:
int
n=0;//記錄buffer中要處理字元的個數。
char
ch;
char*
buffer;
buffer
=
malloc(sizeof(char),MAX_SIZE);//MAX_SIZE是你自己定義的宏值
while(
(ch=getcahr())
!=
'0')
{
將ch存入buffer中,記住考慮buffer存滿的情況,則用realloc重新分配內存;
n++;//記錄buffer中要處理字元的個數。
}
❽ c語言中怎樣實現多行輸入然後再多行輸出
要實現多行輸入,再多行輸出,可採用數組協助實現,方法如下:
方法一:將已輸入的數據先保存到數組(二維數組)中,然後再進行數據計算並輸出結果
方法二:輸入時,完成計算,將結果存儲到數組(一維數組)中,全部計算完成,輸出結果數組。
採用哪一種方法,要看上體題目特點和要求。
如,題目:輸入n行整數,輸出每行的平均數
(可採用方法二)
參考代碼:
❾ c語言怎麼可以使輸入有多行且每行2個正整數
循環輸入
判斷eof來判斷是否輸入結束
比如int a,b;
可以
while(scanf(「%d%d」,&a,&b)!= EOF)