又是C 題望幫忙

2022-04-18 07:03:03 字數 1039 閱讀 3451

1樓:匿名使用者

n=2時根本就沒有返回值啊

int fat(int n)

else if(n==0 || n==1)else}

2樓:小蝸牛冒險

n=2時,int型函式fat沒有任何返回值,這種情況編譯器一般會給一個警告,如果沒有的話,把fat函式改成如下**:

int fat(int n)

else if(n==0 || n==1)

else return n*fat(n-1) ;

} 其餘不變,另外void main()應該改成int main(),小問題!

回看問題補充:這是因為你fat沒有返回值,但是去返回了,而且,你的程式又編譯過了(因為編譯器可能想:你肯定不會讓它t≠0且t≠1,因此當執行時,它的結果,是未定義的!!!!

未定義(undefined)是很嚴重的,就是說,它愛輸出什麼就輸出什麼,它不愛輸出它就爆掉,所以說你的程式就是這樣,執行時程式就驚慌失措,就像你媽媽叫你把你的銀行卡拿出來,可是你根本沒有銀行卡一樣。因此fat=1是根本沒有意思的東西!

3樓:匿名使用者

我在網咖裡,沒法編譯你的程式。我只看了下,覺得該這樣該。

#include

using namespace std;

int fat(int n)

else if(n==0 || n==1) //程式無論如何都會執行到這

//裡,無論前面t為多少由於這句t=1所以都返回1,所以我認為fat(n)都為1

//你試驗一下看是不是,我沒編譯過,上面只是我的想法。

else return n*fat(n-1) ;

}void main()

4樓:世鑲柳

請仔細看編譯器的警告:

[10:42:39@~/c-cpp]$ g++ -wall a.cpp

a.cpp: in function 『int fat(int)』:

a.cpp:18: 警告: 在有返回值的函式中,控制流程到達函式尾

C語言,這道題我很疑惑,望高手進來看看,幫忙解答下

lz不用煩 bai惱了,你原來的想法是正確du的,第一zhi 個問題 後面的daofor語句即 for j 0 j 2 j for i 0 i 3 i 最後的輸出結果內不是三行兩列容嗎 的確是三行兩列,把這裡的i,j換一下位置就行了,第二個問題 如果你要完整的輸出的話,就按如上方法改 你現在改的那個...

c語言程式設計題,求大神幫忙,c語言程式設計題求幫忙!!

include void main int i,j,m,s 0 scanf d m if m 6 printf no else for i m i for j 1 j include include define n 10000 int main c語言程式設計題求幫忙!是初學者嗎 這樣的問題最好說...

C語言程式題目,急求解答,望高手幫忙

二 程式設計題 20分 reverse.h檔案 ifndef reverse h define reverse h 求整數m n之間 m include include using namespace std bool isprime const int p return true int reve...