C語言怎樣判斷二維陣列結束?

時間 2025-04-15 20:15:17

1樓:聽不清啊

可以用這樣的方法來實現:

#include<

#include

int main()

char *a=

int i;

for(i=0; iprintf("%s",a[i]);

return 0;

2樓:格里程式設計辦公技巧

如題中的指標陣列,其實不需要新增什麼就可以判斷是否結束。因為陣列的大小是定的,你可以使用sizeof函式求出其陣列元素個數。

size = sizeof(a)/sizeof(char *)表示陣列元素個數。

char*a=

遍歷陣列。for(int i = 0; i < size; i++)puts(a[i]);

3樓:網友

在c語言中沒有特別的方法判斷乙個二維陣列結束,因為是你自己定義的,你應該知道這個陣列有多少個變數,所以需要自己根據自己的定義來判斷。

4樓:wo是隻小菜鳥

判斷『\0』即可,這種定義的方式,系統會自動在字串的結束處新增『\0』結束符。 看看書本,書本上講得有有關於字串初始化的內容。

5樓:網友

char *a=

這樣你就知道它到乙個null指標即結束。

或者,你另外用乙個變數記錄它的長度。

6樓:重慶新華電腦學校

scanf輸入的時候以空格回車結束輸入如果以回車判斷結尾換行的會報不可預知的錯誤 scanf()容易記憶體越界,做使用者互動程式很不安全!

7樓:苦瓜它不苦

sizeof(a),獲取指標陣列的大小。

sizeof(a)/sizeof(char *)獲取指標數量。

8樓:恬淡且頑強的小幫手

c語言怎麼用二維陣列輸入行數不確定的字串 求助!!!能用eof結束輸入碼我寫的是錯的。。。求助!!!能用 eof結束輸入碼我寫的是錯的。。。

9樓:網友

你應該在陣列末尾插入乙個特別字串如""來標誌它得結束。語言層面似乎沒有好得方法。

c語言矩陣陣列輸入,求指教,怎麼判斷結束

10樓:白鯨記

首先我沒看到你初始化二維陣列a[m][n],另外for語句的判斷語句和條件語句寫反了,應該是for(i = 0;i < m;i++)你那種寫法當然會一直迴圈。

11樓:網友

你的for迴圈寫錯了,應該這樣寫for(int i=1;i

12樓:網友

直接回車就可以了,不需要while()來判斷for (i=0; ifor (j=0; jscanf ("%d",&a[i][j]);

輸完直接回車就可以了。

c語言想問問**出錯了,二維陣列怎樣判斷?

13樓:網友

額,,。你的這個比較是兩個字串比較,要用strcmp函式才能比較,不能直接==

在最前面加上乙個#include,然後你所有比較的地方可以這樣改:strcmp(n[i],"a1"),如果兩個字串是相同的話他返回的是0;如果不相同的話返回的是非0的,例如:

if (strcmp(n[i],"a1")==0)這樣試試。

14樓:網友

這樣試試看。

#include

int main()

for(i=0;i<2;i++)/*逐個檢測字元,並輸出相應文字*/

if (!strcmp(n[i],"a2"))if (!strcmp(n[i],"a3"))if (!

strcmp(n[i],"a4"))if (!strcmp(n[i],"a5"))if (!strcmp(n[i],"a6"))if (!

strcmp(n[i],"oo")) return 0;}

15樓:是經費和

字串比較得用strcmp函式。

16樓:網友

你這是要進行字串比較嘛?字串比較也不能這樣比較呀,你得轉換ascii值進行比較。

c語言二維陣列判斷

17樓:匿名使用者

對的,省略了預設為第零行。即第一維大小為0 而且 雖然初始化前兩個,但是第一行的四個元素都為0;

18樓:匿名使用者

第一維大小為1哦,只不過下標為0

19樓:匿名使用者

暈倒,c語言哪來的new啊?

c語言二維陣列輸入用下面的程式,但是第一次迴圈結束不是返回for (i…),那不是隻能輸?

20樓:岔路程式緣

首先說明一點,這樣的語句並不能輸入任何乙個元素,它只能輸出元素。你得把printf改成scanf,才能輸入。

其次程式雖然只有短短的三句,但它包含乙個巢狀迴圈:

外迴圈的迴圈變數是i,第二句和第三句是它的迴圈體(可稱"外迴圈體");

內迴圈的迴圈變數是j,第三句是它的迴圈體(可稱"內迴圈體")。

寫成能夠一目瞭然的方式,是這樣的:

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

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

scanf("%d",a[i][j]);

可以看到,它的執行過程是(為了敘述方便,我寫上了行號):

1、第一次執行①,i賦值0,比較i=0<2成立,符合迴圈條件,進入外迴圈體;

2、第一次進入內迴圈體,執行②,j賦值0,比較j=0<2成立,進入內迴圈體;

3、執行③,輸入a[i][j]的值,這時,因為i=0,j=0,輸入的是a[0][0]的值———這一點你分析的對;

4、完成內迴圈體的執行後,返回②,而不是①。因為,內迴圈還沒有執行完!這是你分析錯誤的地方。返回②後,先執行j++,j成為1,而且j=1<2成立,再執行③;

5、再執行③,因為這時候i=0,j=1,所以,輸入a[0][1]的值;

6、程式再返回②,j++成為2,比較j=2<2不成立,跳出內迴圈,回到外迴圈①;

7、執行①,i自增為1,i=1<2成立,再進入外迴圈體;

8、執行②,再進入內迴圈,像第一次一樣,j先賦值0,比較j=0<1成立,執行③,輸入a[1][0]的值,..

後面就不要寫了吧。

21樓:網友

你上面的**是按行從左到右,從上至下進行輸出,也就是a[0][0] a[0][1] a[1][0] a[1][1] 這種,不清楚你想問什麼。

22樓:yx陳子昂

雙重迴圈就是這麼工作的:

for(i=0;i<2;i++)才會回到第一重迴圈的判斷條件。

23樓:網際網絡前世今生

對於二次迴圈的順序,是先獲取外部迴圈的乙個值,然後迴圈內部,當內部迴圈完之後,再迴圈外部,所以它的輸出順序是。

a[0][0],a[0][1],a[1][0],a[1][1]

24樓:聽不清啊

要輸入二維陣列中所有的元素,只要使用如下的輸入語句就可以了:

for(i=0;i<2;i++)for(j=0;j<2;j++)scanf("%d",&a[i][j]);

25樓:網友

人肉跟蹤一下程式的執行:

i=0;[i=0],i<2成立,開始外層迴圈。

j=0;[j=0],j<2成立,開始內層迴圈: printf輸出a[i][j]即a[0][0]的值。

j++;j=1],j<2成立,繼續內層迴圈: printf輸出a[i][j]即a[0][1]的值。

j++;j=2],j<2不成立,結束內層迴圈。

i++;i=1],i<2成立,繼續外層迴圈。

j=0;[j=0],j<2成立,再次開始內層迴圈: printf輸出a[i][j]即a[1][0]的值。

j++;j=1],j<2成立,繼續內層迴圈: printf輸出a[i][j]即a[1][1]的值。

j++;j=2],j<2不成立,結束內層迴圈。

i++;i=2],i<2不成立,結束外層迴圈。

c語言二維陣列

26樓:網友

i = 0; ch[i]等於ch[0],它的值是'1'這個字元的 asc ii碼為49,'0'的asc ii碼為48。所以你下邊的算式如下:

10 * s + ch[i] -0'對應如下:

10 * 0 + 49 - 48 所以結果是數字1,而不字元'1'。

你的for執行了一次就結束了,是因為'a'的asc ii碼是97,大於'9'的asc ii碼,所以這個for執行了一次就結束了。

27樓:逆鱗到魚

for() 迴圈中的判斷條件是: 從i=0開始,ch[i]>=0'&&ch[i]<=9',就是如果數字是在0-9之間,就執行s=s*10+ch[i]-'0',並再看i+2位置的數字是否滿足,否則退出迴圈。

根據程式,因為ch[0]='1',ch[2]='a',語句只會執行一次,輸出應該是:1。

28樓:網友

1.首先明確此題正確;

2.該題s是以 字元的ascii轉化為 整型阿拉伯數字計算的;

語句是迴圈結構,只有當()內條件成立時才計算,否則break;

題中a[0]='1'=49滿足條件 s=1;

a[2]='a'=97不滿足條件,break;

所以最後結果是:1

29樓:美圖賞

先是把ch[0]=1與ch[i]>=0'&&ch[i]<=9'對比,符合,執行i+=2;

再把ch[2]=a與ch[i]>=0'&&ch[i]<=9'對比,不符合,跳出迴圈,故輸出1

30樓:流星逝空

不知道你從那裡看的,不過這個程式時不正確的,s=10*s+ch[i]-'0';這句s是整型變數,而'0'是字元型,c不支援混合運算,編譯會出錯。

31樓:1024程式設計師

c語言陣列之二維陣列。

輸入二維陣列直到輸入的n為-1結束c語言該怎樣寫 是不是要有while(scanf("%d",n),n+1),然後再輸入陣列元素

32樓:匿名使用者

c++的**。

const int r=3,c=2;//r代表2維陣列的行數,c代表2維陣列的列數。

int arr[r][c]=,n=0;

for(int i=0;i>n;//輸入nif(n!=-1)//如果n不等於-1

arr[i][j]=n;//就把n付給陣列元素else//否則,退出迴圈。

break;

if(n==-1)

break;

c也是這個思路。

33樓:網友

簡單點的使用break 就可以了。

while(1)

while 裡面要求是表示式 你這個明顯不對。

c語言二維陣列問題

34樓:聽不清啊

scanf("%d",&select); //這行中%d前面不要空格。

scanf("%d",&i); //這行中%d前面不要空格,後面不要。

scanf("%d",&j); //這行中%d前面不要空格,後面不要。

scanf("%d%d",&i,&j); //這行中%d前面不要空格,後面不要。

scanf("%d",&score[i][j]);//這行中%d前面不要空格,後面不要。

35樓:gta小雞

1.去掉scanf的格式字串中的。

2.因為陣列元素score[i][j]是int型,讀入到int型變數的位址當然要使用取位址符&。你也可以直接寫成score[i]+j表示score[i][j]的位址。

C語言二維陣列的排序問題,c語言二維陣列

不是。這麼說吧,陣列名本身就是指標,指向陣列的第一個元素。至於你所說的呼叫呼叫二級 二維吧 陣列,難道不是如普通變數般直接呼叫嗎?根據問題補充說,這是不允許的,main 函式的形參是固定的不能傳遞指標。而一般的自定義函式只能用傳遞首地址的形式來傳遞二維陣列,例子如下 定義 int a x y int...

C語言陣列下標越界問題,C語言二維陣列下標越界問題

光輝歲月 首先 陣列下標是從0開始的 所以a 的下表是從0 9的,即a 10 a 9 是錯誤的。a指的是a 9 後面的那個儲存單元的的數值。其次 void fun int a,int n,int m 這個j是多餘的。 void fun int a,int n,int m 第一個括號是全形的括號!還有...

C語言中二維陣列中指標的問題,C語言中二維陣列中指標的問題

假若定義 int a 10 int p a 那麼p指向a陣列的首地址 若想要找到a 3 則 p 4 這你看到了嗎?首地址 相當於此陣列的名字。因為陣列元素在記憶體中是連續的 邏輯上 所以 知道了首地址就知道了這個陣列所有元素的位置二維應該同理 我也是初學。只能這麼告訴你。但願我的描述是正確的。 a ...