我們在做一些oj平臺上的題目時經常碰見這幾個字“多組輸入”,如果你不了解這幾個字的含義,就會出現一種我的代碼明明正確,但oj平臺就是顯示“答案錯誤”,這種就需要我們用上while(scanf("%d%d",&x,&y)!=EOF)了
在學會使用while(scanf("%d%d",&x,&y)!=EOF)前,我們需要先了解scanf函數的返回值。
scanf的返回值就是“所輸入的數據與格式字符串中匹配次數.”
對于scanf("%d",&x);
如果你輸入一個數字,則匹配成功,返回1;
如果你輸入一個字符或其他,則匹配失敗,返回0;
如果你輸入^Z(就是鍵盤的ctrl+z),則輸入錯誤返回-1。
那么scanf("%d%d",&x,&y) 則同理,不同輸出會返回 2 1 0 -1。
或許有小伙伴會問,這和EOF有啥關系呢?
EOF是End Of File(文件結束)的縮寫,在c語言庫中有這樣一行代碼:
#define EOF -1
EOF被定義為-1這個常量。
下面回到while(scanf("%d%d",&x,&y)!=EOF)
當你加上這個時,只要你不輸入^Z scanf的返回值就>=0? 不等于-1 條件為真,一直循環(huán)下去,
只有你輸入^Z,條件為假,終止循環(huán)。
這就是我們所說的多組輸入。
當然了,如果有的小伙伴還是不理解的話,可以直接套用,以一個簡單代碼為例:
#includeint main()
{
int a = 0, b = 0,sum=0;
scanf("%d%d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
非常簡單的一個代碼,就是求兩個數的和。
但如果題目要求多組輸入的話,這樣的代碼會顯示答案錯誤的。
#includeint main()
{
int a = 0, b = 0,sum=0;
while (scanf("%d%d", &a, &b) != EOF)
{
sum = a + b;
printf("%d\n", sum);
}
return 0;
}
我們只需把原來的代碼放在while (scanf("%d%d", &a, &b) != EOF){ ......}中就可以啦!
希望能幫助到大家~
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
網頁標題:(while(scanf(“%d“,&n)!=EOF))的用法-創(chuàng)新互聯
分享路徑:http://www.rwnh.cn/article0/djppoo.html
成都網站建設公司_創(chuàng)新互聯,為您提供手機網站建設、全網營銷推廣、微信小程序、面包屑導航、定制開發(fā)、虛擬主機
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯