第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

C語言入門 5-14 綜合練習(xí)問題

C語言入門 5-14 綜合練習(xí)問題

C
sakura_monster 2016-01-24 01:09:41
#include?<stdio.h> int?m(int?h,int?l) { ????float?w; ????if(l<=3){ ????????w=14; ????????return?w; ????} ????else ????{ ????????if(h>=23||h<=6) ????????{ ????????????if(l<=1) ????????????{ ????????????????return?1.2; ????????????} ????????????else ????????????{ ????????????????w=1.2*?m(h,l-1); ????????????????return?w; ????????????} ????????} ????????w=w*2.3*?9+?14; ????????return?w; ????} ????return?w; } int?main() { ????printf("%f\n",m(21,12)); ????printf("%f",m(9,12)); ????return?0; }為什么輸出為0.000000 0.000000 該如何改動代碼 得出非零值 或是 該問題的正確結(jié)果
查看完整描述

1 回答

已采納
?
MadMarical

TA貢獻(xiàn)79條經(jīng)驗 獲得超122個贊

你好。你的問題是w沒有在判斷語句外初始化,導(dǎo)致你很可能使用了未初始化變量。這種編碼習(xí)慣不好。如m(21,22)其中l(wèi)>3所以落入else語句中,h并不屬于<6或者>23的區(qū)間中,所以沒有進(jìn)入if分支而是直接使用w = w*2.3*9+14??纱藭rw并沒有被初始化,所以導(dǎo)致輸出結(jié)果為0.000 也有可能會輸出很多亂碼。

查看完整回答
2 反對 回復(fù) 2016-01-24
  • sakura_monster
    sakura_monster
    謝謝 大概弄清楚了 還有一個問題 我把int m(int h,int l)改成float m(int h,int l) 輸出值變?yōu)榱?4.000000 14.000000 同樣是沒有進(jìn)入if分支 直接使用w = w*2.3*9+14 為什么改變了函數(shù)類型 輸出結(jié)果會不同呢
  • MadMarical
    MadMarical
    你好。使用int 和 float 函數(shù)的編譯過程是不同的,因為沒有初始化,結(jié)果也是不確定的。因為int是整型數(shù)據(jù),編譯器使用處理整型數(shù)據(jù)的方法來處理解釋它代表的意思,float是浮點數(shù),編譯器使用科學(xué)技術(shù)法來解釋它代表的意思。所以使用int型函數(shù)時,你的float m時 w被解釋成了連串無法理解的數(shù),而使用int m時 w被強制類型轉(zhuǎn)換為0,導(dǎo)致輸出結(jié)果為14.000000。
  • 1 回答
  • 0 關(guān)注
  • 1090 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號