您好,登錄后才能下訂單哦!
本篇內容主要講解“在while中使用cin>>a為條件要注意哪些事項”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“在while中使用cin>>a為條件要注意哪些事項”吧!
用一個題目來解釋
本題為統計輸入多少個連續數字
#include<iostream> using namespace std; int main() { int currVal = 0 , val = 0; if(cin >> currVal) { int cnt=1;//統計次數 while(cin >> val) { if(currVal == val) { cnt++; } else{ cout << currVal <<" occurs "<<cnt<<" times "<<endl; currVal = val; cnt=1;//重新計算另一個 } } //while循環結束 cout << currVal <<" occurs "<<cnt<<" times "<<endl;//打印最后一個數 }//if循環結束 return 0; }
有一個要注意的地方,以前不理解在while里面用cin >> val是什么意思,用這個當條件的話,通過檢測其流的狀態來判斷結束;
(1)若流是有效的,即流未遇到錯誤,那么檢測成功;
(2)若遇到文件結束符,或遇到一個無效的輸入時(例如本題輸入的值不是一個整數),istream對象的狀態會變為無效,條件就為假;
不同的操作系統有不同的約定,在windows系統中,輸入文件結束符的方法是先按Ctrl+Z,然后再按Enter;在UNIX系統中,包括Mac OS X系統中,文件結束輸入為Ctrl+D;
1.這個直接按enter,最后一個4顯然沒有輸入進去,程序讀不到最后一個數,程序一直保持輸入的狀態;
2.這個是正確實例,上面的Z是按了ctrl的效果
經常遇到循環輸入,直到符合某種條件時結束輸入。
cin>>s是有返回值的,只要s滿足類型條件,就會return true,一直執行下去,而cin會忽略空格或者enter,因此,enter后不會結束循環。只能ctrl+Z。
通過get()判斷下一個輸入是不是回車就行。
while(cin>>a){ ... if(cin.get()=='\n') break; }
#include <bits/stdc++.h> using namespace std; int b[10]; int main() { int i=0,a; while(cin>>a){ b[i++]=a; if(cin.get()=='\n') break; } for(i=0;i<10;i++) cout<<b[i]<<" "; }
#include <bits/stdc++.h> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; int main() { ListNode* head1 = new ListNode(NULL); ListNode* head = new ListNode(NULL); head1 = head; int a; while (cin >> a) { ListNode* tmp = new ListNode(a); head->next = tmp; head = tmp; if (cin.get() == '\n') break; } while (head1->next != NULL) { cout << head1->next->val<<endl; head1 = head1->next; } system("pause"); return 0; }
運行結果:
到此,相信大家對“在while中使用cin>>a為條件要注意哪些事項”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。