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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

調(diào)用函數(shù)實(shí)現(xiàn)輸入成績(jī)求平均,有幾行代碼看不懂,求指教

調(diào)用函數(shù)實(shí)現(xiàn)輸入成績(jī)求平均,有幾行代碼看不懂,求指教

C C++
xungeer29 2017-10-18 10:38:34
#include<iostream> using?namespace?std; const?int?max?=?10; int?grade_in(double?grade[],int?limit); void?show(const?double?grade[],int?n); double?grade_av(const?double?grade[],int?n); int?main() { ?double?scores[max]; ?int?size=grade_in(scores,max); ?show(scores,size); ?if?(size?>?0) ?{ ??cout?<<?"Average?Grade?=?" ???<<?grade_av(scores,?size)?<<?endl; ?} ?return?0; } int?grade_in(double?grade[],int?limit) { ?double?temp; ?int?i?=?0; ?cout?<<?"Enter?your?grade(enter?a?negetive?to?end)"?<<?endl; ?for?(i?=?0;?i?<?limit;?i++) ?{ ??cout?<<?"Enter?your?grade?#"?<<?i?+?1?<<?"?:?"?<<?endl; ??cin?>>?temp; ??if?(!cin)???????????????????// ??{??????????????????????????// ???cin.clear();??????????????//這幾句的作用是什么?刪掉對(duì)程序運(yùn)行結(jié)果沒(méi)有影響 ???while?(cin.get()?!=?'\n')// ????continue;???????????????// ???cout?<<?"Bad?input;enter?a?number:?"; ???break; ??} ??if?(temp?<?0) ???break; ??grade[i]?=?temp; ?} ?return?i; } void?show(const?double?grade[],?int?n) { ?for?(int?i?=?0;?i?<?n;?i++) ?{ ??cout?<<?"Score?#"?<<?i?+?1?<<?"?:?"?<<?grade[i]?<<?endl; ?} } double?grade_av(const?double?grade[],?int?n) { ?double?sum=0; ?int?i?=?0; ?for?(i?=?0;?i?<?n;?i++) ?{ ??sum?+=?grade[i]; ?} ?double?av; ?av?=?sum?/?n; ?return?av; }
查看完整描述

1 回答

?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

我覺(jué)得這幾行代碼有問(wèn)題。

不過(guò),我先說(shuō)下關(guān)于 cin 的東西吧:

你輸入的內(nèi)容都在輸入流中。cin >> 會(huì)讀取輸入流中的內(nèi)容并存入后面的變量中,當(dāng)然是按照變量的類(lèi)型來(lái)格式化輸入流中的內(nèi)容。那么如果類(lèi)型不匹配呢???

比如你這里?cin?>>?temp 需要存入浮點(diǎn)類(lèi)型的 tmp,可你輸入的不是數(shù)字,這會(huì)怎么樣?

這會(huì)發(fā)生錯(cuò)誤,cin 會(huì)在內(nèi)部記錄錯(cuò)誤狀態(tài)。一旦出錯(cuò)就無(wú)法再使用 cin 來(lái)讀取輸入了。錯(cuò)誤狀態(tài)可以通過(guò)調(diào)用 cin.clear() 來(lái)清除。? 而且?cin 的狀態(tài)默認(rèn)可以作條件判斷用。

if?(!cin) 這里就是判斷 cin 是否出錯(cuò)。cin 錯(cuò)誤時(shí)相當(dāng)于 false,所以當(dāng) cin 出錯(cuò)時(shí)會(huì)執(zhí)行 if 中語(yǔ)句。

還有一點(diǎn)要說(shuō),當(dāng)讀取輸入時(shí)出錯(cuò),那些不正確的輸入會(huì)原封不動(dòng)地留在輸入流中

還用 cin >> tmp 舉例。如果你輸入 123回車(chē),那沒(méi)問(wèn)題,123?被 cin 從輸入流中讀取走了(并存入123.0到tmp)。 可如果你輸入 ab回車(chē),這就出錯(cuò)了! 但是 'a' 'b' '\n' 卻會(huì)原封不動(dòng)流在輸入流中


那么一般處理輸入出錯(cuò)可以這樣:

先清除掉 cin 的錯(cuò)誤狀態(tài),保證可繼續(xù)使用 cin 讀取:調(diào)用 cin.clear() 即可。

再處理掉輸入流中留下的不正確的輸入:這個(gè)代碼里用循環(huán)調(diào)用 cin.get() 的方式來(lái)讀取走它們。 解釋一下,cin.get() 可以讀取走輸入流中的任意字符,并且返回讀到的值。所以循環(huán)用 get() 來(lái)讀...直到'\n' 就可以清掉輸入流中上次回車(chē)之前的內(nèi)容。


那么這幾行代碼應(yīng)該就是處理輸入出錯(cuò)的情形的。如果你輸入沒(méi)出錯(cuò),就不會(huì)執(zhí)行這個(gè) if,所以你沒(méi)看到對(duì)結(jié)果有影響。

但是!之所以說(shuō)“應(yīng)該”是因?yàn)槲矣X(jué)得它邏輯上有問(wèn)題!?

你可以對(duì)照我上面說(shuō)的錯(cuò)誤處理方式,看看這幾行代碼是不是無(wú)法實(shí)現(xiàn)這個(gè)目的?

查看完整回答
反對(duì) 回復(fù) 2017-10-20
  • 1 回答
  • 0 關(guān)注
  • 1382 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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