這題著實是坑爹了。所以總結題目的意思是:各種非法輸入都可能發生,所有情況都得考慮到。故最佳方法就是用
scanf("%d.%d.%d.%d
%c",&x[0],&x[1],&x[2],&x[3],&c);
來進行判斷是否輸入合法。
然而倘若如此,若最後乙個%d處沒有輸入元素,則程式會一直等待輸入流輸入乙個數字,導致無法進行下去。而且使用此法的話當後續串沒有被讀入時,還得追加乙個字串讀入函式進行後處理,十分的麻煩
解決的方法就是先將本行輸入全部裝入str串裡頭,然後使用sscanf進行讀取,這樣首先免去了末尾對費串的後處理,而且由於sscanf讀的是str串,故在最後的%d處若沒有元素可讀會直接讀取失敗,而不會等待,因為str串的字元流是確定的,缺少數字元素就是缺少,不會繼續等待錄入。然後在最後追加乙個%c,如果後面有費串則sscanf的返回值會+1。通過判斷
scanf("%d.%d.%d.%d
%c",&x[0],&x[1],&x[2],&x[3],&c);
符合這樣格式的輸入的返回值是否嚴格==4,即可從格式上來界定此次輸入是否合法,若合法緊接著只要專心對數字範圍進行界定即可。
本題要學到的乙個重要技巧就是sscanf()函式的使用,可以方便地從串字元流中讀取,模擬scanf從輸入流中讀取。並且比後者有著不會一直傻等輸入的優點。
題目描述
我們都學過計算機網路,了解ipv4位址的點分十進位制表示法。
最低的ip位址是0.0.0.0,最高的ip位址是255.255.255.255。
輸入格式
第一行是乙個整數t,代表輸入還剩下t行
以下的t行,每行都是乙個字串(不含空白字元)。字串的長度保證不超過15,不小於1.
輸出格式
對於每個字串,輸出一行。
如果它是乙個合法的ipv4位址,輸出yes。
否則,輸出no。
輸入樣例
3 59.64.130.18
f.a.t.e
1.23.45.678
輸出樣例
yes
no no
#include
#include
#include
#define inf 0x7fffffff
#define maxsize 20
using
namespace
std;
int main()
else}}
//output
printf("%s\n",legal?"yes":"no");
}return
true;
}
北郵網研17上機題
找1 1000000000內所有可開二次根且可開三次根的數。別直接for迴圈,肯定超時。先把所有可能的答案都找出來,再做二次判斷。輸入9 81 4 8 5 7 9 2 2 5 3 5 5 9 3 5 8 3 4 3 8 5 7 9 5 1 9 輸出 1826 2040 include 在這裡插入描述...
2012北郵網研院上機題
a 列印字串 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 老師有乙個問題想考考mabo,但是mabo不會,所以想請你來幫幫忙。問題如下 給一串字串,統計其中某個字元的個數。輸入格式 首先輸入乙個整數t,表示一共有t組資料 0 t 10。接下來每行乙個字母x x為 a z 或者 ...
2010北郵複試網研上機題
轉眼間,研究生已經過去半年了,從當初的電腦小白到如今也能熟練的操作linux系統,心裡感慨也是很多的。當初耿耿於懷的是北郵複試的時候c基礎太差,導致上機題一道也沒做出來,雖然這半年我主要學習的是運維,但是也對php和c有了一定的了解,今天下午把北郵2010的上機題又做了一下,貼出 和大家共享,其實態...