c語言的陣列中能不能包含未知數,關於c語言陣列的方括號中能不能使用變數的問題。

時間 2021-08-16 14:07:02

1樓:夏之夜**

不行,你的x沒有定義,還有你的x是乙個變數你可以把它初始化為0,int a[2][2]=這樣是將這個二維陣列初始化為0,你也可以這樣int a[2][2]=;

scanf("%d",&a[1][1]);

for(int i=0;i<2;++i)

for(int j=0;j<2;++j)

2樓:鹹樂心

@現在我遇到這樣乙個問題,乙個6*6的矩陣,裡面每個數都是未知數,都需要通過另外的公式計算得到,那這個陣列該怎麼定義呢?是不是在定義這個陣列之前都要把這些未知數都通過公式和scanf定義了?

回答:先根據36個數的型別(如int),定義int a[6][6]=,這個語句的意思是:36個元素都設為0.

在後來的計算中,將開始的元素替換掉就可以了,如 a[5][5] = 100;(將最後乙個元素設為100)

3樓:匿名使用者

你的追問的問題其實可以只是在二維陣列中存放該矩陣每個元素的係數,如果你後面把x的值求出來了,直接讓每個元素都乘以x的值不就可以得到求解後的矩陣了嘛,或者我理解錯你的意思了?

4樓:匿名使用者

哎呀,你先隨便定義乙個不就行了嗎?算出來的時候再覆蓋掉不就好了嗎?

你一開始就定義

int a[6][6];

for(int i = 0; i < 6; i++)}你沒有定義乙個數不代表這個位置不能存在乙個隨機數呀。像一般的電腦裡面沒有被初始化的靜態陣列裡面都是有數字的,但是你想用的時候第一步就是對這個陣列初始化。因為你認為原來的數沒有意義。

你現在也應該這麼想

5樓:匿名使用者

可以先讀入x,再定義陣列;

如果先定義陣列,然後讀入x,需要再次賦值

6樓:

好像c90是不允許的,現在的c99,好像可以了

7樓:數學教輔資料

最後不能printf這個陣列(,)。

關於c語言陣列的方括號中能不能使用變數的問題。

8樓:四捨**入

方括號裡必須是乙個大於零的整數常量或者常量表示式。

常量表示式(const experssion):是指值不會改變專 並且在編譯過屬程就能得到計算結果的表示式。字面量屬於常量表示式,用常量表示式初始化的const物件也是常量表示式。

乙個物件(或表示式)是不是常量表示式由它的資料型別和初始值共同決定。

const int a =1; //常量表示式cosnt int b=a+1; //常量表示式int c=2; //初始值是字面值常量,當c資料型別是普通int。

9樓:匿名使用者

陣列的方括號復有兩種使用制情況。

1 定義。

當用於定義時,bai陣列方括du號中的是陣列含有的元素個zhi數,即定dao

義了陣列的規模。

這種情況下,按照ansi c的標準,是不可以用變數的。

不過目前有些編譯器支援了c99及以上規範,在c99下,c語言陣列定義時可以使用變數。

至於編譯器是否支援,定義乙個以變數為規模的陣列,編譯一下,如果能通過,那麼就是支援的,反之則是不支援。

由於並不是所有編譯器支援,這樣的**就不易於移植,所以不推薦使用這種寫法。如果一定需要用動態值,可以採用動態陣列的方式。

2 取值。

當取陣列a的第n個元素值時,可以使用a[n]的方式。

這種取值操作的情況下,是可以使用變數的。對此,任意版本的c語言都沒有做限制。

不過其中的變數只能為整型系列的型別,比如char, short, int, long等,或者對應的無符號型別。

10樓:匿名使用者

其實baic語言的較新版本標準

是支援du

int n=5;

int a[n];

的用法的,只是vc一直只zhi支援舊版本的標準dao而已……不過對回於這個問題,原答因不是這個。int a[n];是物件宣告,a[i++]=i;是表示式中的運算,二者是完全不同的東西……

11樓:匿名使用者

好多大學課本教程是老版的c語言了,在vc++6.0編譯器裡(好多年前的編譯器了,已經沒有更新了),int a[n]是錯誤的,用別的編譯器就沒事,比如dev c++

12樓:匿名使用者

這句話你要仔細理解,人家說的是對陣列的「定義」不能用動態定義,就是說陣列在定義時不能依賴於程式執行過程中變數的值,第二個例子並不是對陣列定義而是陣列運算

13樓:匿名使用者

是宣告的時候不能用變數去指定初始大小,訪問的時候是可以的

14樓:匿名使用者

陣列,沒好好看啊,定義和使用的區別

15樓:為明天_小樂

上面的為乙個陣列的宣告,而n為5,如果按照main中的執行順序的話看上去是沒有問題的..並且版有的編譯權器也支援(例如dev--c++)但是a是乙個陣列,在編譯的時候其需要乙個特定的大小來讓系統為其分配記憶體空間,,它與下面的i++不同,在i++操作之前,a陣列的大小已經固定了,所以可以通過.

16樓:匿名使用者

只是定義

bai的時候不能用變數

du。a[i++]這是你前面zhi已經定義好了的dao a[10]。記住!!

a[ ]方括號內可以專用變數,只是定義屬的時候不能用變數。如果一定要用字母表示可以這樣寫:#define n 5

int main()

n其實也是前面定義的乙個常量。

17樓:匿名使用者

int a[n],是在定義乙個陣列,而陣列的長度為n,n是乙個變數,這在c語言是不允許,c語言不支回持定義變長答陣列,因為在編譯的時候,系統無法知道陣列的長度是多少,也就無法為這個陣列分配乙個空間。

解決的方法有:

1、#define n 5

int main()

2、#include

int main()

c語言中怎麼保留數列中的未知數x

18樓:匿名使用者

可以採用bai結構體

比如strcut aa

;如果未知數可能是多項式,那麼可以用

strcut bb;

c語言中陣列長度不能用變數定義嗎?

19樓:曉喋

1、c語言e68a8462616964757a686964616f31333365646235中不支援。

c++中支援變長陣列(你可以自行度娘變長陣列和alloca函式),但是因為其實在棧上分配,不被推薦使用。做為解決方案,你可以使用c式的malloc函式或者c++式的new函式來在堆上動態分配記憶體,這樣長度是完全可以自定的。

2、c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平台的特性,以乙個標準規格寫出的c語言程式可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平台。

3、、在陣列一章中,曾介紹過陣列的長度是預先定義好的, 在整個程式中固定不變。c語言中不允許動態陣列型別。例如:

用變數表示長度,想對陣列的大小作動態說明, 這是錯誤的。但是在實際的程式設計中,往往會發生這種情況, 即所需的記憶體空間取決於實際輸入的資料,而無法預先確定。對於這種問題, 用陣列的辦法很難解決。

4、為了解決上述問題,c語言提供了一些記憶體管理函式,這些記憶體管理函式可以按需要動態地分配記憶體空間, 也可把不再使用的空間**待用,為有效地利用記憶體資源提供了手段。 其它文獻中所提到的"動態陣列",指的就是利用記憶體的申請和釋放函式,在程式的執行過程中,根據實際需要指定陣列的大小.其本質是乙個指向陣列的指標變數.

常用的記憶體管理函式有以下三個:分配記憶體空間函式malloc;分配記憶體空間函式 calloc;釋放記憶體空間函式free。

20樓:曠起雲戊靜

只是定義來陣列的話是不行的,你源百可以把bai陣列定度du義成指標,用zhic語言中的問

malloc來分配空間,因為dao這是你手動分配的,在不用之後答要手動釋放。

你可以如下申請

int**u

=(int

**)malloc(sizeof(int*)*m);for(int

i=0;

i

i++)

這樣專u這個指標就相當於屬乙個可變的2維陣列u[m][n]了釋放時用free

21樓:匿名使用者

你可以試試用指標呀,或者是把m,n定義得足夠大。陣列的長度在定義的時候必須是乙個確定的值。

22樓:程振

陣列的大復小不能用變數表制示的哦,因為

在編譯連線期間記憶體要按照你制定的長度給陣列分配相應的記憶體空間,如果是變數的話就沒有辦法給它分配了,你可以用符號常量來解決,在開頭用

# define m 100

# define n 100 然後在程式中就可以定義u[m][n]二維陣列了,當不一定非要是100,可以是任何乙個正整數。

23樓:墨派

陣列大小要求是常量!當然不能是變數了!

你的問題可以這樣解決:

先算出m,n的值,

再用new去申請

如:int a;

int *pa=new a[m][n];

24樓:

先定義乙個足夠大的二維陣列 例:

u[100][100]

25樓:匿名使用者

只是定義陣列的話是不行的,你可以把陣列定義成指標,用c語言中的 malloc來分配空回間,因為這是你手動答分配的,在不用之後要手動釋放。

你可以如下申請

int **u = (int **)malloc(sizeof(int *) * m);

for(int i=0; i

26樓:匿名使用者

動態分配記憶體,c用malloc

c++,用new

27樓:cabbage包菜

定義陣列的時候,copy陣列的大bai小必須確定,並且是du整型。

在c99中提出了變長

zhi陣列,即為val,意dao

思是你可以用乙個變數去代替陣列的大小。

例如 int val = 5;

int a[val];

變長陣列中的變,也只是說你可以用變數去定義陣列,但是變長陣列的大小在建立後就是不變得,

而且變長陣列必須的自動的儲存類。

由於變長陣列的限制太多了,很少人去使用他。

所以對你這個問題,需要使用動態記憶體,即用malloc calloc 這類的函式。

28樓:鑽時封芯

只是不行的,一般也不必這麼做

29樓:劼翾

不能,這你可以使用動態儲存分配。方法是:

int *p=new int [m][n]中間應用,用完後記得使用

delete [ ]p

好了,給分吧。呵呵

30樓:匿名使用者

c語言中不支援來。

c++中支援變長自

陣列(你可以自行度bai娘變長陣列和dualloca函式),但是因為其實在zhi棧上分配,不被推

dao薦使用。

做為解決方案,你可以使用c式的malloc函式或者c++式的new函式來在堆上動態分配記憶體,這樣長度是完全可以自定的。

編寫C語言程式,從已排序的陣列中刪去某數後,該陣列仍然

戶哲茂 include void fun int arr,int n,int dat void main void int i for i 0 i 9 i printf d a i printf r n fun a,9,3 for i 0 i 9 i printf d a i printf r n ...

c語言中程式中能不能存在兩個不相關的結構體

定義多少個不同的結構體,原則上是沒有限制的。完全可以,結構體只是乙個資料的組織形式,可以簡單理解為一種資料的型別,所以兩個不相干的結構體完全不影響 完全可以啊,結構體和其他的變數型別一樣用,沒什麼限制 union是用來定義聯合體的關鍵字,union維護足夠的空間來置放多個資料成員中的最大的 一種 而...

c語言中2的3次方能不能表示成

天雲小店 在c語言中2的3次方不能表示為2 3,因為符號 在c語言中是用來表示異或運算的位運算子。如果表示為2 3就會被當成2與3的異或運算,結果為1。在c語言中表示x的y次方,可以用庫函式pow函式。函式原型 double pow double x,double y 功 能 計算x的y次方 返 回...