網站首頁 編程語言 正文
在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的效果
while(cin>>a) cin輸入直到回車結束
經常遇到循環輸入,直到符合某種條件時結束輸入。
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;
}
運行結果:
原文鏈接:https://blog.csdn.net/qiqi123i/article/details/52185599
相關推薦
- 2023-04-07 C#中將dateTimePicker初始值設置為空_C#教程
- 2022-04-25 JQuery異步post上傳表單數據標準化模板_jquery
- 2022-08-25 R語言實現KMeans聚類算法實例教程_R語言
- 2022-04-28 C++實現班級成績管理系統_C 語言
- 2023-12-11 Spring利用注解自動裝配
- 2022-06-12 python實現微信小程序的多種支付方式_python
- 2023-03-29 Python-apply(lambda?x:?)的使用及說明_python
- 2022-04-17 Security前后端分離自定義登錄詳解
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支