【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;
輸入:“afafafaf” 輸出:“af”
輸入:“pppppppp” 輸出:“p”
1、僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc"。
2、壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"xxxyyyyyyz"壓縮後就成為"3x6yz"。
【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;
輸入:“adef” 輸出:“adef”
輸入:“pppppppp” 輸出:“8p”
2、若輸入算式格式錯誤,輸出結果為“0”。
【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;
輸入:“4 - 7” 輸出:“-3”
輸入:“9 ++ 7” 輸出:“0” 註:格式錯誤
//////////////////////////////////////////////////////////////////////////華為第三題 20:29 - 20:40 #include <iostream> using namespace std; void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) { const char *input = pInputStr; char *output = pOutputStr; int sum = 0; int operator1 = 0; int operator2 = 0; char *temp = new char[5]; char *ope = temp; while(*input != ' ') //獲得運算元1 { sum = sum*10 + (*input++ - '0'); } input++; operator1 = sum; sum = 0; while(*input != ' ') { *temp++ = *input++; } input++; *temp = '\0'; if (strlen(ope) > 1 ) { *output++ = '0'; *output = '\0'; return; } while(*input != '\0') //獲得運算元2 { sum = sum*10 + (*input++ - '0'); } operator2 = sum; sum = 0; switch (*ope) { case '+':itoa(operator1+operator2,pOutputStr,10); break; case '-':itoa(operator1-operator2,pOutputStr,10); break; default: *output++ = '0'; *output = '\0'; return; } } int main() { char input[] = "4 - 7"; char output[] = " "; arithmetic(input,strlen(input),output); cout<<output<<endl; return 0; }
//華為2014年機試題1:輸入1--50個數字,求出最小數和最大數的和 //輸入以逗號隔開 #include<stdio.h> #define N 50 void sort(int a[],int n); int main(void) { char str[100]; int a[N]={0}; gets(str); //要點1:動態輸入1--50個整數,不能確定個數,只能用字串輸入,然後分離出來 int i=0; int j=0; int sign=1; while(str[i]!='\0') { if(str[i]!=',') //輸入時要在半形輸入 { if(str[i] == '-') //要點:2:有負整數的輸入 { // i++; //易錯點1 sign=-1; } else if(str[i]!='\0') //不用else的話,負號也會減去‘0’ { a[j]=a[j]*10 + str[i]-'0'; //要點3:輸入的可以是多位元 } } i++; if(str[i]==',' || str[i]=='\0') //這個判斷是在i自加以後 { a[j]=a[j]*sign; //易錯點2 sign=1; ////易錯點3 j++; //j就是a數組的個數 範圍0到j-1 } } sort(a,j); printf("Max number + Min number = %d",a[0]+a[j-1]); return 0; } void sort(int a[],int n) //選擇排序 { int i,j; int k; int temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[k]>a[j]) k=j; } if(i!=k) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i=0;i<n;i++) printf("%-5d",a[i]); puts(""); }