北郵OJ 101 IP位址 12網研上機C

2021-07-29 03:26:22 字數 1357 閱讀 9249

這題著實是坑爹了。所以總結題目的意思是:各種非法輸入都可能發生,所有情況都得考慮到。故最佳方法就是用

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的上機題又做了一下,貼出 和大家共享,其實態...