1樓:匿名使用者
沒多大的弊端
#define就是預處理的時候處理下,簡單點就是讀你檔案的時候 讀完 馬上 根據你的#define來做查詢替換工作
printf("%d",s(i,n)); 換成 printf("%d",i>n?i:n);
不過一般#define s(a,b) a>b?a:b 都要再加個括號避免替換出差錯#define s(a,b) (a>b?a:b)
如printf("%d",s(2,1)*4); 如果是你那樣寫的話 就是 printf("%d",2>1?2:1*4); 即 printf("%d",2>1?2:4);
#define s(a,b) (a>b?a:b) 就是 printf("%d",(2>1?2:1)*4); 2*4=8 了解了嗎
2樓:匿名使用者
可以啊 不會有什麼弊端 只要你明白預編譯相當於將整個式子替換進去 不要把函式表示式弄錯了就行了~
3樓:匿名使用者
不知道你所說的簡歷的函式問題是指的什麼?不過發現你的巨集定義有點小小的瑕疵。覺得這樣定義會好一些。#define s(a,b) ((a)>(b)?(a):(b))
不過巨集定義只是簡單的替換,所以使用的時候要小心。
c語言的兩個問題: 所有的遞迴程式均可以用非遞迴演算法實現?遞迴函式中的形式引數是自動變數嗎? c語言中
4樓:匿名使用者
c語言所有遞迴都bai可以用非遞迴演算法實du現,最典型的就是
zhi迭代法dao,有時比遞迴更容專易理解。至
於遞迴中屬的形式引數是自動變數,沒明白樓主的意思,形參就是形參啊,形參變數也是變數,其記憶體分配在棧區,隨著函式的結束,其記憶體也會被釋放,形參的生命週期與函式生命週期相同哈(同生共死)
5樓:匿名使用者
||#include
unsigned int fibonacci(int n);
int main( void )
return 0;
}unsigned int fibonacci(int n)這種演算法效屬率比較低
**不清楚可以hi我
6樓:賊寇在何方
1.是的,借助堆疊都可以實現
2.是的
以下對c語言函式的有關描述中,不正確的描述是哪個?(選擇是問題補充裡)
7樓:哈包祥明
這個是多選題 答案abc 函式可以巢狀呼叫但不可以潛逃定義;函式可以沒有返回值(void);可以放在多個檔案中;在c中,呼叫函式時,只能把實參的值傳送給形參,形參的值不能傳送給實參,這就是傳說中的單向傳遞。 做選擇題 你要注意高溫字詞:比如說必須,只能等等(太絕對)還有其他的詞這裡就不一一說了
8樓:倒霉熊
a:不可以巢狀定義,可以遞迴呼叫
b:不一定有函式值,像void型別。
c:可以放在多個檔案中,包含相應的標頭檔案,就像庫函式的呼叫,包含相應的標頭檔案即可。
d:這個正確,函式值傳遞,是單向傳遞。
所以abc
9樓:匿名使用者
a 不能巢狀定義
b 不一定要有返回值可以是空
c 不一定要在同一源程式檔案中,可以呼叫外部檔案的函式加extern就行了abc
10樓:匿名使用者
a 肯定不能巢狀定義啊
c 可以不同檔案
另外,回一下ls void也是返回值吧,只不過是void而已,本質上還是有返回值的
最近參加了幾場c語言筆試題:經常要求不使用庫函式來實現字串處理這樣的問題,請問這是什麼意思呢。是不
11樓:匿名使用者
不用庫函式的意思是不使用和字串處理相關的庫函式,比如字串的複製,這個功能有庫函式strcpy直接實現,直接用strcpy誰都會...還筆試什麼呢?這個意思實際上就是讓你寫個函式來實現和strcpy這個函式一樣的功能了。
printf和scanf只是輸入輸出需要用到,但是筆試的時候似乎用不上的吧,一般來說只需要寫出需要實現的功能對應的函式就可以了(至少我只經歷過這種情況),不用寫出完整的可執行測試**。如果說要求輸入輸出的話,printf和scanf我覺得是可以使用的。
12樓:匿名使用者
這個問題就考lz自己想辦法了,方法是有的就怕人想不到。舉個例子
str1="abc",str2="def";要實現這兩字串的交換,可以用指標+中間變數來實現,可以不用到庫函式
所謂的字串處理函式就是指函式,計算長度,交換,相加等等
13樓:匿名使用者
printf scanf這些基本的都是可以用的 比如說strcpy,strcmp之類的不能用吧
14樓:匿名使用者
printf scanf是相當大的函式,不太可能自己寫的
關於c語言的學習有什麼建議嗎
c語言問題(不要c++) 回溯和深搜不是太明白,希望可以用盡量簡單的方法來詳細有條理地解釋一下,最
求教c語言程式設計問題,求教c語言程式設計問題
include void main if m n t n else t m for k t k 1 k if m k 0 n k 0 如上 include int main if n 0 printf n else if n 0 printf 兩數的最大公約數為 0 n兩數的最小公倍數為 0 n e...
c語言問題求教
貌似風輕 c是讀取乙個字元 s是讀取乙個字串 這裡的 1s是只讀取輸入的字串的第乙個字元,其實作用和 c差不多 在你的程式裡,之所以會出現差別是受到了前面 的影響 前乙個輸入scanf d a 這裡你輸入了乙個數字和乙個回車符 之後如果你使用scanf c b 讀字元,那麼程式會發現輸入流裡已經有乙...
求教一道c語言問題,求教一道C語言問題
while str i getchar n 這裡的問題,根本就不能實現將鍵盤中輸入的數字存入str i 中的功能,可以改為 while i 測試結果 建議 可以將列印資料的地方加個空格,不然顯示好難看 虹灬穎鳶 int n,str 80 i 0,j 0,min,max,temp1,temp2 cha...
求教c語言中的函式指標問題,C語言有關函式指標的乙個題目,看不懂,求解答
施瓦辛格 pite ret pite taskfunction pite message msg unsigned char pite taskfunction pite message msg 上邊是函式指標宣告的一種 type pointer parameter list pointer 為函式...
幾道C語言問題求教望高手解答
1,語句 x y z 執行後 x 值就是 y z 也即 5 那麼條件就為真,你是不是要寫為 x y z 2,算術運算的優先順序高於邏輯運算 故先計算出 兩邊 表示式的結果在進行 與運算 故為 1 3,執行 y z x 後 y z 故 y z 為真 故 x 1 第一題改為if x y z 要小心呀 x...