【补充】字符串解析
字符串解析函數(shù), 輸入一本書的名字的話,對一個單詞進行解析,
剛好在HDU上做到一題,和這個差不多。。這里的解析為的是做圖書檢索系統(tǒng)。 //剛好可以看看這一題 //http://acm.hdu.edu.cn/showproblem.php?pid=1106
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28756 Accepted Submission(s): 7972Problem Description 輸入一行數(shù)字,如果我們把這行數(shù)字中的‘5’都看成空格,那么就得到一行用空格分割的若干非負整數(shù)(可能有些整數(shù)以‘0’開頭,這些頭部的‘0’應(yīng)該被忽略掉,除非這個整數(shù)就是由若干個‘0’組成的,這時這個整數(shù)就是0)。你的任務(wù)是:對這些分割得到的整數(shù),依從小到大的順序排序輸出。Input 輸入包含多組測試用例,每組輸入數(shù)據(jù)只有一行數(shù)字(數(shù)字之間沒有空格),這行數(shù)字的長度不大于1000。 輸入數(shù)據(jù)保證:分割得到的非負整數(shù)不會大于100000000;輸入數(shù)據(jù)不可能全由‘5’組成。Output 對于每個測試用例,輸出分割得到的整數(shù)排序的結(jié)果,相鄰的兩個整數(shù)之間用一個空格分開,每組輸出占一行。Sample Input0051231232050775Sample Output0 77 12312320 #include<iostream> #include<string.h> #include<algorithm> using namespace std;int main() {char a[1100];int b[1100];int temp;int i,j;memset(a,0,sizeof(a));memset(b,0,sizeof(b));while(scanf("%s",a)!=EOF){j = 0;for(i=0;i<strlen(a);){while(a[i]=='5'){i++;}while(a[i]=='0'&&a[i+1]=='0'){i++; }temp = 0;if(i==strlen(a)||a[i]=='\0')break;while(a[i]!='5'&&a[i]!='\0'){temp = temp*10 + a[i]-'0';i++;}b[j++] = temp; }sort(b,b+j);for(i=0;i<j-1;i++){printf("%d ",b[i]);}printf("%d\n",b[j-1]);}return 0; } View Code
#include<iostream>using namespace std;void StringOpertor(char* szTemp); char szBuffer[30] = {0}; //只是用來測試用的int main() {char szTemp[30] = {0};gets(szTemp);cout<<szTemp<<endl;StringOpertor(szTemp);cout<<szBuffer<<endl; //測試結(jié)果return 0; }void StringOpertor(char* szTemp) //字符串解析 {char *p = szTemp;char *q = szTemp;// char szBuffer[30] = {0};int i = 0;while(*p!='\0'){while(*p!=' ' && *p!='\0'){p++;}while(*q!=*p){szBuffer[i++] = *q++;}szBuffer[i] = '\0';p++;q++;} }
/* C++ premier plus C++ premier plus C++premierplus Press any key to continue*/
剛好在HDU上做到一題,和這個差不多。。這里的解析為的是做圖書檢索系統(tǒng)。 //剛好可以看看這一題 //http://acm.hdu.edu.cn/showproblem.php?pid=1106
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28756 Accepted Submission(s): 7972Problem Description 輸入一行數(shù)字,如果我們把這行數(shù)字中的‘5’都看成空格,那么就得到一行用空格分割的若干非負整數(shù)(可能有些整數(shù)以‘0’開頭,這些頭部的‘0’應(yīng)該被忽略掉,除非這個整數(shù)就是由若干個‘0’組成的,這時這個整數(shù)就是0)。你的任務(wù)是:對這些分割得到的整數(shù),依從小到大的順序排序輸出。Input 輸入包含多組測試用例,每組輸入數(shù)據(jù)只有一行數(shù)字(數(shù)字之間沒有空格),這行數(shù)字的長度不大于1000。 輸入數(shù)據(jù)保證:分割得到的非負整數(shù)不會大于100000000;輸入數(shù)據(jù)不可能全由‘5’組成。Output 對于每個測試用例,輸出分割得到的整數(shù)排序的結(jié)果,相鄰的兩個整數(shù)之間用一個空格分開,每組輸出占一行。Sample Input0051231232050775Sample Output0 77 12312320 #include<iostream> #include<string.h> #include<algorithm> using namespace std;int main() {char a[1100];int b[1100];int temp;int i,j;memset(a,0,sizeof(a));memset(b,0,sizeof(b));while(scanf("%s",a)!=EOF){j = 0;for(i=0;i<strlen(a);){while(a[i]=='5'){i++;}while(a[i]=='0'&&a[i+1]=='0'){i++; }temp = 0;if(i==strlen(a)||a[i]=='\0')break;while(a[i]!='5'&&a[i]!='\0'){temp = temp*10 + a[i]-'0';i++;}b[j++] = temp; }sort(b,b+j);for(i=0;i<j-1;i++){printf("%d ",b[i]);}printf("%d\n",b[j-1]);}return 0; } View Code
?
#include<iostream>using namespace std;void StringOpertor(char* szTemp); char szBuffer[30] = {0}; //只是用來測試用的int main() {char szTemp[30] = {0};gets(szTemp);cout<<szTemp<<endl;StringOpertor(szTemp);cout<<szBuffer<<endl; //測試結(jié)果return 0; }void StringOpertor(char* szTemp) //字符串解析 {char *p = szTemp;char *q = szTemp;// char szBuffer[30] = {0};int i = 0;while(*p!='\0'){while(*p!=' ' && *p!='\0'){p++;}while(*q!=*p){szBuffer[i++] = *q++;}szBuffer[i] = '\0';p++;q++;} }
/* C++ premier plus C++ premier plus C++premierplus Press any key to continue*/
?
??
轉(zhuǎn)載于:https://www.cnblogs.com/Lee-geeker/p/3402963.html
總結(jié)
- 上一篇: WebPart的Web部件页部署时发生错
- 下一篇: 用css自定义滚动条样式