一.題目:
在命令列輸入如下命令:
xcopy /s c:\ d:\,
各個引數如下:
引數1:命令字xcopy
引數2:字串/s
引數3:字串c:\
引數4: 字串d:\
請編寫乙個引數解析程式,實現將命令列各個引數解析出來。
解析規則:
1.引數分隔符為空格
2.對於用「」包含起來的引數,如果中間有空格,不能解析為多個引數。比如在命令列輸入xcopy /s 「c:\program files」 「d:\」時,引數仍然是4個,第3個引數應該是字串c:\program files,而不是c:\program,注意輸出引數時,需要將「」去掉,引號不存在巢狀情況。
3.引數不定長
4.輸入由用例保證,不會出現不符合要求的輸入
測試樣例:
輸入:xcopy /s c:\ d:\
輸出:4
xcopy
/sc:\
d:\解題思路
先遍歷一遍,把要分隔的引數個數統計出來,然後對每乙個字元進行判斷,如果它不是空格也不是雙引號就輸出,如果是空格但前面有雙引號則輸出,遇到後面的雙引號和空格則換行。
**
#include
#include
using
namespace std;
intmain()
while
(s[i]
!='"');
}}cout<1
true
;用來判斷是哪乙個雙引號(是前還是後)
for(int i =
0;isize()
;i++
)else
if(s[i]
==' '
&&!flag)如果遇到了在雙引號中的空格要輸出
cout<;else
if(s[i]
=='"'
&&!flag)如果是第二個雙引號,恢復flag的值,並換行
else
if(s[i]
==' '
)如果是雙引號外的空格換行
cout
}
二.題目
小易來到了一條石板路前,每塊石板上從1挨著編號為:1、2、3…
這條石板路要根據特殊的規則才能前進:對於小易當前所在的編號為k的 石板,小易單次只能往前跳k的乙個約數(不含1和k)步,即跳到k+x(x為k的乙個非1和本身的約數)的位置。 小易當前處在編號為n的石板,他想跳到編號恰好為m的石板去,小易想知道最少需要跳躍幾次可以到達。
例如:n = 4,m = 24:
4->6->8->12->18->24
於是小易最少需要跳躍5次,就可以從4號石板跳到24號石板
輸入描述:
輸入為一行,有兩個整數n,m,以空格隔開。 (4 ≤ n ≤ 100000) (n ≤ m ≤ 100000)
輸出描述:
輸出小易最少需要跳躍的步數,如果不能到達輸出-1
測試樣例:
輸入: 4 24
輸出: 5
解題思路:
將1 - m個石板看做乙個結果陣列step,每個step[i]儲存著從起點到這一步最小的步
數,其中0為不能到達。
從起點開始對step進行遍歷,先求i的所有約數(即從step[i]能走的步數),然後更新那幾個能到達的位置的最小步數。如果不能到達則更新為此時位置的最小步數 + 1,如果是能到達的就更新為min(已記錄的最小步數,此處的最小步數 + 1)),遍歷一遍後得到結果
**:
#include
#include
#include
using
namespace std;
void
getcountcd
(int n,vector<
int>
&v)求此時n的所有公約數,記錄在陣列中}}
intjump
(int n,
int m)}if
(step[m]==0
)return-1
;else
return step[m]-1
;}intmain()
選擇練習 part3
1.程序排程時,下列程序狀態的變化過程哪一項是不可能發生的?a 阻塞掛起 阻塞 b 就緒掛起 就緒 c 就緒掛起 阻塞掛起 d 阻塞掛起 就緒掛起 解析 下圖是程序狀態的變化過程,程序是不會從就緒掛起到阻塞掛起的 所以本題選c 2.在系統記憶體中設定磁碟緩衝區的主要目的是 a 減少磁碟 i o 次數...
關於除錯 part 3
歡迎喜歡交流和熱心的iphone開發朋友加入qq群參與討論 186739796,驗證碼 csdn。常見錯誤收集貼 方法名錯誤 product edit scheme,在environment varibles中 新增 nszombieenabled yes 最後結果 關於出現殭屍訊號sigbat或者...
Gentoo安裝筆記(part3
此安裝筆記是按照gentoo中文手冊上實際操作記下來的,使用的是宿主機ubuntu9.04 virtualbox3.04,在virtualbox3.04中按預設屬性建立了乙個gentoo虛擬機器。使用gentoo minimal映像檔案安裝。6.開始安裝gentoo 1 選擇乙個合適的映象站點 mi...