亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么函數沒有被調用?該怎么操作呢?

為什么函數沒有被調用?該怎么操作呢?

倚天杖 2021-10-20 19:15:00
#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的時候就知道,函數調用了。
之所以顯示一個隨機的數字是因為,函數里所有的返回值都是有條件語句控制的,但是又都不滿足,因此,并沒有返回應有的值。



查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 534 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號