[問題] 新手簡單程式碼問題= =

看板C_and_CPP作者 (adonis)時間14年前 (2010/05/31 20:50), 編輯推噓5(509)
留言14則, 9人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) syntax error 希望得到的正確結果: 就差這個了 程式跑出來的錯誤結果: syntax error before '[' token 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev C++ 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<stdlib.h> int a,b,c,perim,s,area; main() { printf("請輸入三角形的第一個邊"); scanf("%d",&a); printf("請輸入三角形的第二個邊"); scanf("%d",&b); printf("請輸入三角形的第三個邊"); scanf("%d",&c); s=(a+b+c)/2; area = [s*(s-a)*(s-b)*(s-c)]^0.5; (syntax error before '[' token) printf("此三角形的三角形面積="); printf("%d",area); printf("\n"); system("pause"); return 0; } 補充說明: 應該都沒打錯啊 請問一下這個code有哪個地方錯了嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.174.109

05/31 20:51, , 1F
[]改成()
05/31 20:51, 1F

05/31 20:52, , 2F
改成()會變成invalid operands to binary ^
05/31 20:52, 2F

05/31 20:57, , 3F
^0.5是想開根號? C不能這樣寫 你要使用math.h中的函式
05/31 20:57, 3F

05/31 21:04, , 4F
感謝樓上
05/31 21:04, 4F

05/31 21:04, , 5F
^0.5是excel的寫法
05/31 21:04, 5F

05/31 21:06, , 6F
你要把[]改成(),根號的部份加入math.h使用POW()
05/31 21:06, 6F

05/31 21:12, , 7F
或是sqrt()?
05/31 21:12, 7F

05/31 22:12, , 8F
[]是陣列 運算式必須用()..
05/31 22:12, 8F

05/31 22:13, , 9F
^0.5是matlab的語法..c的話要include <math.h> 然後用pow..
05/31 22:13, 9F

05/31 22:14, , 10F
pow不知道能不能用0.5 所以用sqrt好了 = =+
05/31 22:14, 10F
後來解決這問題後 改了程式碼 main() { printf("請輸入三角形的第一個邊 "); scanf("%f",&num[0]); printf("請輸入三角形的第二個邊 "); scanf("%f",&num[1]); printf("請輸入三角形的第三個邊 "); scanf("%f",&num[2]); s=(num[0]+num[1]+num[2])/2; area = sqrt(s*(s-num[0])*(s-num[1])*(s-num[2])); if(num[0]+num[1]<=num[2]||num[0]+num[2]<=num[1]||num[1]+num[2]<=num[0]) printf("此三角形不存在"); squaresum=pow(num[0],2)+pow(num[1],2)+pow(num[2],2); max=num[0]; for(i=1;i<=2;i++) { if(num[i]>max) max = num[i]; } //找出最大邊長 if (pow(max,2)>squaresum - pow(max,2)) { printf("此鈍角三角形的三角形面積="); printf("%f",area); } if (pow(max,2)<squaresum - pow(max,2)) { printf("此銳角三角形的三角形面積="); printf("%f",area); } if (pow(max,2)==squaresum - pow(max,2)) { printf("此直角三角形的三角形面積="); printf("%f",area); } printf("\n"); system("pause"); return 0; } 請問為啥我用3 4 5 去測每次都是銳角= = ※ 編輯: adoniscomes 來自: 120.107.174.109 (05/31 22:27)

05/31 22:31, , 11F
你的變數全宣告成int, 然後用%f硬讀, 之後中間的整數運
05/31 22:31, 11F

05/31 22:32, , 12F
算根本就不知道算出什麼了; 另外, 兩個正數互相運算的結
05/31 22:32, 12F

05/31 22:32, , 13F
果也還是整數喔, 要注意型態的問題....@_@"
05/31 22:32, 13F

05/31 22:34, , 14F
建議原po善用printf把你的變數印出來確認
05/31 22:34, 14F
文章代碼(AID): #1C0x2Ecy (C_and_CPP)