[問題]C_陣列問題

看板C_and_CPP作者 (阿塔)時間14年前 (2010/06/19 21:30), 編輯推噓0(0011)
留言11則, 3人參與, 最新討論串1/1
有請各位大大了,麻煩幫小弟解決一個問題,謝謝 #include<stdio.h> #include<stdlib.h> #define SIZE 100 void square(int *arr); void MAX(int *arr); void MAX(int *arr) { int i,*max; max=arr; for(i=0;i<SIZE;i++) if(*max<*(arr+i)) max=arr+i; } void square(int *arr) { int i; for(i=0;i<SIZE;i++) *(arr+i)=*(arr+i)**(arr+i); } int main() { int i; int ARR[SIZE]={0}; printf("輸入數字,用空白格開,結束案\\0\n"); for(i=0;i<SIZE;i++) { scanf("%d",&ARR[i]); if(ARR[i]==0) break; } printf("陣列內容"); for(i=0;i<SIZE;i++) printf("% d ",ARR[i]); printf("\n"); square(ARR); printf("{"); for(i=0;i<SIZE;i++) printf("%d ",ARR[i]); printf("}"); MAX(ARR); printf("\n%d\n",MAX); system("pause"); return 0; } 遇到的問題: (題意請描述清楚) (1) 這個程式中,小弟本來希望按"\0"時,程式就會結束,但是他卻會補0 (2) 在比較MAX時,跑出來的時也是怪怪的ORZ 希望得到的正確結果: 希望板上的大大能幫我指出問題所在 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.199.96 ※ 編輯: bri410116 來自: 140.117.199.96 (06/19 21:35)

06/19 21:39, , 1F
1. "\0" 和 '\0' 和 '0' 是不一樣的東西喔,要分清楚
06/19 21:39, 1F

06/19 21:40, , 2F
2. MAX() 應改寫為傳回int,然後 printf("%d", MAX(arr));
06/19 21:40, 2F

06/19 21:40, , 3F
另外,MAX() 裡應該是用 int max 而非 int *max
06/19 21:40, 3F

06/19 21:41, , 4F
指標問題請看置底文12誡中的第4誡
06/19 21:41, 4F

06/19 21:41, , 5F
說錯,是第3誡才對
06/19 21:41, 5F

06/19 21:43, , 6F
感謝樓上大大的回答
06/19 21:43, 6F
敢問一下大大,我是想在 \0 時,程式結束,但他卻補0,這要如何解呢? 謝謝 ※ 編輯: bri410116 來自: 140.117.199.96 (06/19 22:18)

06/19 22:19, , 7F
你一定沒有弄清楚一樓講的那三種東西
06/19 22:19, 7F

06/19 22:19, , 8F
你輸入 \0 的時候其實是 "\0" 而不是 '\0' (即 0)
06/19 22:19, 8F

06/19 22:25, , 9F
超感激大大的解說 謝謝
06/19 22:25, 9F

06/19 23:42, , 10F
正確的說應該是 "\\0" 不過知道意思就行了 XD
06/19 23:42, 10F

06/19 23:48, , 11F
對對,我忘記要escape了 XD
06/19 23:48, 11F
文章代碼(AID): #1C7CQ5IG (C_and_CPP)