萌新一枚 大佬輕噴
從網上找到的代碼
如果只輸入一個數的話 for回圈里的vint[i+1]不就報錯了嗎 可是并不會 想不明白為什么
代碼如下
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vint;
int ival;
cout << "請輸入一組數字,以其他非數字字符結束:" << endl;
while (cin >> ival)
vint.push_back(ival);
if (vint.size() == 0)
{
cout << "沒有一個元素" << endl;
return -1;
}
cout << "相鄰兩項的和依次是:" << endl;
//利用decltype推斷i的型別
for (decltype (vint.size()) i = 0; i < vint.size() - 1; i += 2)
{
//求相鄰兩項的和
cout << vint[i] + vint[i + 1] << " ";
//每五行輸出五個數字
if ((i + 2) % 10 == 0)
cout << endl;
}
//如果元素是奇數個的話,單獨處理最后一個元素
if (vint.size() % 2 != 0)
cout << vint[vint.size() - 1];
system("pause");
}
uj5u.com熱心網友回復:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vint;
int ival;
cout << "請輸入一組數字,以其他非數字字符結束:" << endl;
while (cin >> ival)
vint.push_back(ival);
if (vint.size() == 0) {
cout << "沒有一個元素" << endl;
return -1;
}
cout << "相鄰兩項的和依次是:" << endl;
//利用decltype推斷i的型別
// 當只輸入一個數時,vint.size()為1,以下“i < vint.size() - 1”不滿足,for不會被執行
for (decltype (vint.size()) i = 0; i < vint.size() - 1; i += 2) {
//求相鄰兩項的和
cout << vint[i] + vint[i + 1] << " ";
//每五行輸出五個數字
if ((i + 2) % 10 == 0)
cout << endl;
}
//如果元素是奇數個的話,單獨處理最后一個元素
if (vint.size() % 2 != 0)
cout << vint[vint.size() - 1];// 當只輸入一個數時,vint.size()為1,這里輸出了vint[0]的值
system("pause");
return 0;
}
uj5u.com熱心網友回復:
for (decltype (vint.size()) i = 0; i < vint.size() - 1; i += 2)
//當輸入一個數時,vint.size()=1,這句相當于for(i=0;i<0;i+=2),不會進入回圈,執行{... }后面的陳述句了。
{
cout << vint[i] + vint[i + 1] << " "; //求相鄰兩項的和
if ((i + 2) % 10 == 0) //每五行輸出五個數字
cout << endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267906.html
標籤:新手樂園
下一篇:請問大佬在哪輸入
