Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么用C++就wa,是哪个地方两种编译器处理存在差别?代码如下,望高手支点。多谢 #include <stdio.h> #include <string.h> #include <memory.h> char strWord[1024][81]; bool isNumber[1024]; const int intSizeOfIsNumber=sizeof(isNumber); int intLen[1024]; int intWordCount; const int intUCaseToLCase='A'-'a'; bool CheckNumber(char * strInput) { if((strInput[0]<='9' && strInput[0]>='0') || strInput[0]=='-') return true; else return false; } void lcase(char * strInput,int intLen) { int i; for(i=0;i<intLen;i++) { if(strInput[i]<='Z' && strInput[i]>='A') { strInput[i]-=intUCaseToLCase; } } } void StrToInt(int intSrc,char * strDest,int intStart,int & intNewLen) { bool isNotZero=false; int i; intNewLen=0; for(i=intStart;i<intLen[intSrc];i++) { if(isNotZero==true || strWord[intSrc][i]!='0') { strDest[intNewLen++]=strWord[intSrc][i]; isNotZero=true; } } strDest[intNewLen]='\0'; } bool isSmaller(int intIndex1,int intIndex2) { char strCmp[2][81]; int intCmpLen[2]; if(isNumber[intIndex1]==true) { if(strWord[intIndex1][0]=='-' && strWord[intIndex2][0]!='-') return true; else if(strWord[intIndex1][0]!='-' && strWord[intIndex2][0]=='-') return false; else if(strWord[intIndex1][0]=='-') { StrToInt(intIndex1,strCmp[0],1,intCmpLen[0]); StrToInt(intIndex2,strCmp[1],1,intCmpLen[1]); if(intCmpLen[0]>intCmpLen[1]) return true; else if(intCmpLen[0]<intCmpLen[1]) return false; else { if(strcmp(strCmp[0],strCmp[1])>0) return true; } } else { StrToInt(intIndex1,strCmp[0],0,intCmpLen[0]); StrToInt(intIndex2,strCmp[1],0,intCmpLen[1]); if(intCmpLen[0]<intCmpLen[1]) return true; else if(intCmpLen[0]>intCmpLen[1]) return false; else { if(strcmp(strCmp[0],strCmp[1])<0) return true; } } return false; } else { strcpy(strCmp[0],strWord[intIndex1]); strcpy(strCmp[1],strWord[intIndex2]); lcase(strCmp[0],intLen[intIndex1]); lcase(strCmp[1],intLen[intIndex2]); if(strcmp(strCmp[0],strCmp[1])<0) return true; else return false; } } void Exchange(int intIndex1,int intIndex2) { char strOther[81]; int intOtherLen=intLen[intIndex1]; strcpy(strOther,strWord[intIndex1]); strcpy(strWord[intIndex1],strWord[intIndex2]); intLen[intIndex1]=intLen[intIndex2]; intLen[intIndex2]=intOtherLen; strcpy(strWord[intIndex2],strOther); } int main() { int i,j; bool isBreak=false; scanf("%s",strWord[0]); while(strWord[0][0]!='.') { memset(isNumber,false,intSizeOfIsNumber); intLen[0]=strlen(strWord[0])-1; isBreak=(strWord[0][intLen[0]]=='.'); strWord[0][intLen[0]]='\0'; isNumber[0]=CheckNumber(strWord[0]); intWordCount=1; while(isBreak==false) { scanf("%s",strWord[intWordCount]); intLen[intWordCount]=strlen(strWord[intWordCount])-1; isBreak=(strWord[intWordCount][intLen[intWordCount]]=='.'); strWord[intWordCount][intLen[intWordCount]]='\0'; isNumber[intWordCount]=CheckNumber(strWord[intWordCount++]); } for(i=1;i<intWordCount;i++) { for(j=0;j<i;j++) { if(isNumber[i]==isNumber[j] && isSmaller(i,j)==true) { Exchange(i,j); } } } for(i=0;i<intWordCount;i++) { printf("%s",strWord[i]); if(i<intWordCount-1) printf(", "); else printf(".\n"); } scanf("%s",strWord[0]); } return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator