#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函數(shù)內(nèi)部加入輸出語(yǔ)句后,發(fā)現(xiàn)那個(gè)值根本沒有輸出……函數(shù)沒有被調(diào)用,但是輸出了16389這個(gè)值,為什么我再?gòu)?qiáng)調(diào)一次,在函數(shù)第一行寫了輸出還是不行。附測(cè)試數(shù)據(jù)如下:107 8 05 0 69 0 06 0 73 4 02 5 08 0 94 0 01 2 3 剛才又去試了一下,刪除了文件語(yǔ)句,直接手動(dòng)輸入,發(fā)現(xiàn)函數(shù)內(nèi)部的東西還是打印出來(lái)了……為什么兩種方式會(huì)不同? 謝謝你這么熱心……不過(guò)能不能不要匿名,百度Hi聊要好一點(diǎn)……發(fā)現(xiàn)好像輸入輸出文件的作用域只在于主函數(shù)——現(xiàn)在附帶問題出現(xiàn)了,怎么在調(diào)用的函數(shù)里面也使用文件輸出? 媽的,太詭異了,我把程序改成這樣,然后把文件從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貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
ifstream cin("in.txt");
ofstream cout("out.txt");
cin.close();
cout.close();
沒有讀取文件的話上面的可以刪掉。
函數(shù)被調(diào)用了,你可以在函數(shù)內(nèi)部加一句:cout<<"ok"<<endl;當(dāng)你看到ok的時(shí)候就知道,函數(shù)調(diào)用了。
之所以顯示一個(gè)隨機(jī)的數(shù)字是因?yàn)?,函?shù)里所有的返回值都是有條件語(yǔ)句控制的,但是又都不滿足,因此,并沒有返回應(yīng)有的值。
添加回答
舉報(bào)
0/150
提交
取消