我需要用無限回圈加載向量并列印它。輸入 0 時加載結束。
輸出:
Enter numbers: 1 3 1 4 2 1 3 1 4 2 1 3 0
1 3 1 4 2 1 3 1 4 2 1 3
代碼:
#include <iostream>
#include <vector>
int main()
{
std::vector<double>vektor;
double a;
for(;;)
{
std::cout << "Enter numbers: ";
std::cin>>a;
if(a!=0)vektor.push_back(a);
if(a==0)break;
}
for(double a:vektor)
std::cout << a << " ";
return 0;
}
我得到這個輸出:
Enter numbers: 1 3 1 4 2 1 3 1 4 2 1 3 0
Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: Enter numbers: 1 3 1 4 2 1 3 1 4 2 1 3
你能解釋一下為什么有這么多重復的字串“輸入數字:”嗎?如果我一個一個地加載數字,我不會得到任何重復,但我需要像示例輸出一樣將它們全部加載到一行中。我怎么能修改這個代碼來做到這一點?
uj5u.com熱心網友回復:
你能解釋一下為什么有這么多重復的字串“輸入數字:”嗎?
因為您Enter numbers在讀取新數字之前在每次回圈迭代中輸出。只需將該陳述句移到回圈上方即可。
此外,您的回圈可以簡化。每次>>呼叫后,您都忽略了流的錯誤狀態。
嘗試這個:
#include <iostream>
#include <vector>
int main()
{
std::vector<double>vektor;
double a;
std::cout << "Enter numbers: ";
while(std::cin >> a && a != 0)
{
vektor.push_back(a);
}
for(double a: vektor)
std::cout << a << " ";
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/441474.html
