#include <iostream> #include <fstream>using namespace std;int lt[1001]={0},rt[1001]={0};int visit(int p){if (p==0) return 0;int a=visit(lt[p]);int b=visit(rt[p]);if (a>b) return a+1;if (b>a) return b+1;}int main(){ifstream cin("in.txt");ofstream cout("out.txt");int n,cn,d1,d2,i;cin>>n;for (i=1;i<n;i++){cin>>cn>>d1>>d2;lt[cn]=d1;rt[cn]=d2;}cout<<visit(1);cin.close();cout.close();}在visit函數內部加入輸出語句后,發現那個值根本沒有輸出……函數沒有被調用,但是輸出了16389這個值,為什么我再強調一次,在函數第一行寫了輸出還是不行。附測試數據如下:107 8 05 0 69 0 06 0 73 4 02 5 08 0 94 0 01 2 3 剛才又去試了一下,刪除了文件語句,直接手動輸入,發現函數內部的東西還是打印出來了……為什么兩種方式會不同? 謝謝你這么熱心……不過能不能不要匿名,百度Hi聊要好一點……發現好像輸入輸出文件的作用域只在于主函數——現在附帶問題出現了,怎么在調用的函數里面也使用文件輸出? 媽的,太詭異了,我把程序改成這樣,然后把文件從c盤拷到d盤,就沒問題了,而且答案正確!#include <iostream> using namespace std;int lt[1001]={0},rt[1001]={0};int visit(int p){if (p==0) return 0;int a=visit(lt[p]);int b=visit(rt[p]);return (a>b?a:b)+1;}int main(){int n,cn,d1,d2,i;cin>>n;for (i=1;i<n;i++){cin>>cn>>d1>>d2;lt[cn]=d1;rt[cn]=d2;}n=visit(1);cout<<n;cin>>n;}到底是怎么回事!
2 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
ifstream cin("in.txt");
ofstream cout("out.txt");
cin.close();
cout.close();
沒有讀取文件的話上面的可以刪掉。
函數被調用了,你可以在函數內部加一句:cout<<"ok"<<endl;當你看到ok的時候就知道,函數調用了。
之所以顯示一個隨機的數字是因為,函數里所有的返回值都是有條件語句控制的,但是又都不滿足,因此,并沒有返回應有的值。
- 2 回答
- 0 關注
- 534 瀏覽
添加回答
舉報
0/150
提交
取消