C 預設問題

時間 2022-08-10 12:55:05

1樓:同學叫我神

我怎麼看你寫的**就感覺奇怪呢,根本和題目不搭嘛!題目不是要求寫一個函式area(),如果呼叫如area(10,30),函式能返回一個半徑為10,夾角為30度的區域容器(也就是扇形啦),如果呼叫如area(10),函式能返回一個半徑為10的圓。

#define t 3.1415926 //這裡就不要加分號啦

int area(int r,int agl=360)//agl為夾角

這樣就沒錯了,至於為什麼總輸出3,我就拷貝下2樓的:

#define t 3.1415926;因為你這句有個";"號 (本不應該有";")

t(r/10)*(r/10)*100;並且這句t後面沒有*號 (應該是你忘了寫了)

所以變成這樣 3.1415926;(r/10)*(r/10)*100;

你的那個函式就變成以下**

int area(int r=10)

再把3.1415926取整,就為3

(r/10)*(r/10)*100;這句根本就沒有起作用,

所以總反回3

最後再說一下,#define 是c格式的定義常量,c++的話是用const來定義的

const int a=12;

#define只是字元替換,所以才會出現你上面的情況,定義時把t替換為"3.1415926;",如果你沒加分號,那你的程式就有語法錯誤了。

return 3.1415926(r/10)*(r/10)*100;是吧。

而const則有資料型別檢查,不會出現這種情況,更安全。

我有一份高質量c++/c程式設計指南,對基礎的事談的很到位,你如果需要,就把分給我,再留下你的郵箱,我發給你吧。

2樓:**夢幻

int area(double r, double a = 360.0)

你理解錯題目了。

題目裡area(10, 30)並不是說區間(10, 30),而是說引數有兩個。

area(10)表示引數只有1個。

3樓:匿名使用者

#define t 3.1415926;因為你這句有個";"號 (本不應該有";")

t(r/10)*(r/10)*100;並且這句t後面沒有*號 (應該是你忘了寫了)

所以變成這樣 3.1415926;(r/10)*(r/10)*100;

你的那個函式就變成以下**

int area(int r=10)

再把3.1415926取整,就為3

(r/10)*(r/10)*100;這句根本就沒有起作用,所以總反回3

4樓:丨花自飄零丨

你在定義area(int r=10)這個函式時給了它一個預設r=10的形參,意思是如果你不輸入實參的話那麼就將10作為引數使用。

為什麼會輸出3呢?而且無論你輸入什麼資料甚至大於30或小於10的數都是輸出3;原因就是你的這句「return t(r/10)*(r/10)*100;」出錯了改成(r/10)*(r/10)*100*t就ok啦!

有關預設路由的問題

舉個例子和你說 比如你在家並且在你自己的房間裡,這時候你可以寫一條去廁所的路由,也可以寫一條去你父母房間的路由,也可以寫一條去廚房的路由,最後在寫一條去你家大門的預設路由.這條預設路由是給你上學,去玩,去工作,去醫院等等等一些很多不確定的去向.你說的stub network就相當於你正住在學生宿舍裡...

C語言問題,C語言問題C語言問題

選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...

C語言問題,C語言問題

include void main 最後輸出 1 2 2 3 cca 2,b 2,c 4 2.設計一個程式 計算0xaf 01234567,字元 a 的ascii碼值 十進位制 是多少,101 代表的字元是什麼,32678 1的準確結果是多少,1.456e6 35的準確結果是多少,12345 6的準...