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

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

兩個(gè)cin.get(); 和return i;(加粗部分)是什么作用?懇請(qǐng)回答,必采納

兩個(gè)cin.get(); 和return i;(加粗部分)是什么作用?懇請(qǐng)回答,必采納

C++
xungeer29 2017-10-11 16:12:49
#include <iostream>const int Max = 5;int fill_array(double ar[], int limit);void show_array(const double ar[], int n);? // don't change datavoid revalue(double r, double ar[], int n);int main(){using namespace std;double properties[Max];int size = fill_array(properties, Max);show_array(properties, size);if (size > 0){cout << "Enter revaluation factor: ";double factor;while (!(cin >> factor))??? // bad input{cin.clear();while (cin.get() != '\n')continue;cout << "Bad input;Please enter a number: ";}revalue(factor, properties, size);show_array(properties, size);}cout << "Done.\n";cin.get(); cin.get(); return 0;}int fill_array(double ar[], int limit){using namespace std;double temp;int i;for (i = 0; i < limit; i++){cout << "Enter value #" << (i + 1) << ": ";cin >> temp;if (!cin)??? // bad input{cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; input process terminated.\n";break;}else if (temp < 0)???? // signal to terminate break;ar[i] = temp;}return i;}// the following function can use, but not alter, // the array whose address is arvoid show_array(const double ar[], int n){using namespace std;for (int i = 0; i < n; i++){cout << "Property #" << (i + 1) << ": $";cout << ar[i] << endl; } }// multiplies each element of ar[] by rvoid revalue(double r, double ar[], int n){for (int i = 0; i < n; i++)ar[i] *= r;}
查看完整描述

2 回答

已采納
?
onemoo

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

看?fill_array 函數(shù)的邏輯。在 return i 前的那個(gè) for 循環(huán)就是試圖向數(shù)組的 [0, limit) 范圍輸入數(shù)據(jù)。i 作為每一次輸入的數(shù)組位置下標(biāo),那么最終 i 就標(biāo)志著一共輸入了多少個(gè)數(shù)字,顯然這個(gè)函數(shù)打算返回這個(gè)值。

為什么要返回這個(gè)值?? 這個(gè)函數(shù)意圖輸入 limit 個(gè)數(shù),但是如果中途出錯(cuò)退出則實(shí)際沒(méi)有輸入 limit 個(gè)數(shù)字,所以返回 i 是為了告訴調(diào)用者這個(gè)函數(shù)最終輸入了多少個(gè)數(shù)。


至于那兩個(gè)?cin.get();。 這個(gè) get() 會(huì)從輸入流中讀一個(gè)字符,但這個(gè)代碼又沒(méi)有用到這個(gè)字符——這樣的代碼一般有兩個(gè)目的:要么就是為了拿走(或者說(shuō)消耗掉)輸入流中的下一個(gè)字符;要么就是為了等用戶按個(gè)鍵。 我猜這里的兩個(gè) get 正是這兩個(gè)目的:

之前的代碼讀取輸入之后會(huì)在輸入流中留下?lián)Q行符,如果每次都成功讀取則中間的換行符是會(huì)被忽略掉的,而中途如果出錯(cuò)可能導(dǎo)致這個(gè)換行符被意外留下,所以第一個(gè) get 就是為了消耗掉它。

而第二個(gè) get 純粹是為了等用戶按鍵。不然這個(gè)程序直接就結(jié)束了——用戶會(huì)看到程序一閃就執(zhí)行完了,來(lái)不及看到它輸出的東西(尤其在Windows下cmd窗口中運(yùn)行時(shí),執(zhí)行完連cmd都退出了,你什么都看不到)。 所以通常用?cin.get(); 來(lái)等待用戶隨便按個(gè)鍵再退出。

查看完整回答
1 反對(duì) 回復(fù) 2017-10-11
?
onemoo

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

我想再提示下,別嫌我煩哈。

下次發(fā)代碼時(shí)最好用格式化工具格式化一下,比如:

int?fill_array(double?ar[],?int?limit)
{
????using?namespace?std;
????double?temp;
????int?i;
????for?(i?=?0;?i?<?limit;?i++)
????{
????????cout?<<?"Enter?value?#"?<<?(i?+?1)?<<?":?";
????????cin?>>?temp;
????????if?(!cin)????//?bad?input
????????{
????????????cin.clear();
????????????while?(cin.get()?!=?'\n')
????????????continue;
????????????cout?<<?"Bad?input;?input?process?terminated.\n";
????????????break;
????????}?else?if?(temp?<?0)?????//?signal?to?terminate?break;
????????????ar[i]?=?temp;
????}
????return?i;
}

這樣合理縮進(jìn)看代碼更容易,也方便用行號(hào)來(lái)指出代碼位置。

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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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