2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  華為筆試算法題匯總</b></p><p>  1.通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請(qǐng)編寫一個(gè)字符串過濾程序,若字符串中出現(xiàn)多個(gè)相同的字符,將非首次出現(xiàn)的字符過濾掉。</p><p>  比如字符串“abacacde”過濾結(jié)果為“abcde”。</p><p>  要求實(shí)現(xiàn)函數(shù):void strin

2、gFilter(const char *pInputStr, long lInputLen, char *pOutputStr);</p><p>  【輸入】 pInputStr:  輸入字符串</p><p>  lInputLen:  輸入字符串長度         <

3、/p><p>  【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長; </p><p>  【注意】只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出</p><p><b>  示例 </b></p><p>  輸入:“deefd”   

4、;     輸出:“def”</p><p>  輸入:“afafafaf”     輸出:“af”</p><p>  輸入:“pppppppp”     輸出:“p”</p><p>  main函數(shù)已經(jīng)隱藏,這里保留給用戶的測試入口,在這里測

5、試你的實(shí)現(xiàn)函數(shù),可以調(diào)用printf打印輸出</p><p>  當(dāng)前你可以使用其他方法測試,只要保證最終程序能正確執(zhí)行即可,該函數(shù)實(shí)現(xiàn)可以任意修改,但是不要改變函數(shù)原型。</p><p>  一定要保證編譯運(yùn)行不受影響</p><p>  [cpp] view plaincopy</p><p>  ////////////////////

6、//////////////////////////////////////////////////////</p><p>  #include <iostream>    </p><p>  #include <cassert>    </p>&

7、lt;p>  using namespace std;    </p><p>  bool g_flag[26];    </p><p>  void stringFilter(const char *pInputStr, long

8、 lInputLen, char *pOutputStr)    </p><p><b>  {    </b></p><p>  assert(pInputStr != NULL);    &l

9、t;/p><p>  int i = 0;    </p><p>  if (pInputStr == NULL || lInputLen <= 1)    </p><p><

10、b>  {    </b></p><p>  return;    </p><p><b>  }    </b></p><p>  const char *p =

11、0;pInputStr;    </p><p>  while(*p != '\0')    </p><p><b>  {    </b></p><p>  if (g_f

12、lag[(*p - 'a')])    </p><p><b>  {    </b></p><p><b>  p++;    </b></p><p>  }e

13、lse{    </p><p>  pOutputStr[i++] = *p;    </p><p>  g_flag[*p - 'a'] = 1;    </p><p&

14、gt;<b>  p++;    </b></p><p><b>  }    </b></p><p><b>  }    </b></p><p>  pOutputStr[

15、i] = '\0';    </p><p><b>  }    </b></p><p>  int main()    </p><p><b>  { 

16、   </b></p><p>  memset(g_flag,0,sizeof(g_flag));    </p><p>  char input[] = "abacacde";    </p><

17、;p>  char *output = new char[strlen(input) + 1];    </p><p>  stringFilter(input,strlen(input),output);    </p><p>  cout

18、<<output<<endl;    </p><p>  delete output;    </p><p>  return 0;    </p><p><b>  } 

19、60;  </b></p><p><b>  2.</b></p><p>  通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請(qǐng)編寫一個(gè)字符串壓縮程序,將字符串中連續(xù)出席的重復(fù)字母進(jìn)行壓縮,并輸出壓縮后的字符串。</p><p><b>  壓縮規(guī)則:</b></p>&l

20、t;p>  1、僅壓縮連續(xù)重復(fù)出現(xiàn)的字符。比如字符串"abcbc"由于無連續(xù)重復(fù)字符,壓縮后的字符串還是"abcbc"。</p><p>  2、壓縮字段的格式為"字符重復(fù)的次數(shù)+字符"。例如:字符串"xxxyyyyyyz"壓縮后就成為"3x6yz"。</p><p><b>

21、;  要求實(shí)現(xiàn)函數(shù): </b></p><p>  void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);</p><p>  【輸入】 pInputStr:  輸入字符串</p><p>  lInputLen:  輸入字符串長度&l

22、t;/p><p>  【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;</p><p>  【注意】只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出</p><p><b>  示例 </b></p><p>  輸入:“cccddecc”   輸出:“3

23、c2de2c”</p><p>  輸入:“adef”     輸出:“adef”</p><p>  輸入:“pppppppp” 輸出:“8p”</p><p>  [cpp] view plaincopy</p><p>  /////////////////////////////////////

24、/////////////////////////////////////   </p><p>  #include <iostream>    </p><p>  #include <cassert>    </p>

25、<p>  using namespace std;    </p><p>  void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)    &l

26、t;/p><p><b>  {    </b></p><p>  const char *p = pInputStr;    </p><p>  int num = 1;  

27、  </p><p>  int i = 0;    </p><p><b>  p++;    </b></p><p>  while(*p != NULL)  

28、0; </p><p><b>  {    </b></p><p>  while(*p == *(p-1)&& *p != NULL)    </p><p><b>  {

29、    </b></p><p>  num++;    </p><p><b>  p++;    </b></p><p><b>  }    </b

30、></p><p>  if (num > 1)    </p><p><b>  {    </b></p><p>  int size = 0;   

31、60;</p><p>  int temp = num;    </p><p>  while(num)             //計(jì)算位數(shù)    

32、;</p><p><b>  {    </b></p><p>  size++;    </p><p>  num /= 10;    </p><p><b> 

33、 }    </b></p><p>  num = 1;    </p><p>  for (int j = size; j > 0; j--)    

34、;</p><p><b>  {    </b></p><p>  pOutputStr[i+j-1] = '0'+ temp%10;    </p><p>  temp /= 10; 

35、;   </p><p><b>  }    </b></p><p>  i +=size;    </p><p>  pOutputStr[i++] = *(p-1);  

36、60; </p><p><b>  p++;    </b></p><p>  }else{    </p><p>  pOutputStr[i++] = *(p-1);    </p

37、><p><b>  p++;    </b></p><p><b>  }    </b></p><p><b>  }    </b></p><p> 

38、 pOutputStr[i] = '\0';    </p><p><b>  }    </b></p><p>  int main()    </p><p><b&

39、gt;  {    </b></p><p>  char input[] = "cccddecc";    </p><p>  char *output = new char[strlen(input)&#

40、160;+ 1];    </p><p>  stringZip(input,strlen(input),output);    </p><p>  cout<<output<<endl;    </p><p&g

41、t;  return 0;    </p><p><b>  }    </b></p><p>  3.通過鍵盤輸入100以內(nèi)正整數(shù)的加、減運(yùn)算式,請(qǐng)編寫一個(gè)程序輸出運(yùn)算結(jié)果字符串。</p><p>  輸入字符串的格式為:“操作數(shù)1 運(yùn)算符 操作數(shù)2

42、”,“操作數(shù)”與“運(yùn)算符”之間以一個(gè)空格隔開。</p><p><b>  補(bǔ)充說明:</b></p><p>  1、操作數(shù)為正整數(shù),不需要考慮計(jì)算結(jié)果溢出的情況。</p><p>  2、若輸入算式格式錯(cuò)誤,輸出結(jié)果為“0”。</p><p><b>  要求實(shí)現(xiàn)函數(shù): </b><

43、;/p><p>  void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);</p><p>  【輸入】 pInputStr:  輸入字符串</p><p>  lInputLen:  輸入字符串長度     

44、    </p><p>  【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長; </p><p>  【注意】只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出</p><p><b>  示例 </b></p><p> 

45、 輸入:“4 + 7”  輸出:“11”</p><p>  輸入:“4 - 7”  輸出:“-3”</p><p>  輸入:“9 ++ 7”  輸出:“0” 注:格式錯(cuò)誤</p><p>  [cpp] view plaincopy</p><p>  ////////////////////////////

46、//////////////////////////////////////////////  </p><p>  #include <iostream>    </p><p>  using namespace std;    </p&g

47、t;<p>  void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)    </p><p><b>  {    </b></p&

48、gt;<p>  const char *input = pInputStr;    </p><p>  char *output = pOutputStr;    </p><p>  int sum =

49、 0;    </p><p>  int operator1 = 0;    </p><p>  int operator2 = 0;    </p><p>  char&

50、#160;*temp = new char[5];    </p><p>  char *ope = temp;    </p><p>  while(*input != ' ') //獲得操

51、作數(shù)1    </p><p><b>  {    </b></p><p>  sum = sum*10 + (*input++ - '0');    </p>

52、;<p><b>  }    </b></p><p>  input++;    </p><p>  operator1 = sum;    </p><p>  sum =&

53、#160;0;    </p><p>  while(*input != ' ')    </p><p><b>  {    </b></p><p>  *temp++&#

54、160;= *input++;    </p><p><b>  }    </b></p><p>  input++;    </p><p>  *temp = '\0';

55、    </p><p>  if (strlen(ope) > 1 )    </p><p><b>  {    </b></p><p>  *output++ 

56、= '0';    </p><p>  *output = '\0';    </p><p>  return;    </p><p><b>  } 

57、0;  </b></p><p>  while(*input != '\0') //獲得操作數(shù)2    </p><p><b>  {    </b></p><p>  sum

58、60;= sum*10 + (*input++ - '0');    </p><p><b>  }    </b></p><p>  operator2 = sum;  

59、0; </p><p>  sum = 0;    </p><p>  switch (*ope)    </p><p><b>  {    </b></p><

60、;p>  case '+':itoa(operator1+operator2,pOutputStr,10);    </p><p>  break;    </p><p>  case '-':itoa(operator1-operator2,pOu

61、tputStr,10);    </p><p>  break;    </p><p>  default:    </p><p>  *output++ = '0';   &

62、#160;</p><p>  *output = '\0';    </p><p>  return;    </p><p><b>  }    </b></p>&l

63、t;p><b>  }    </b></p><p>  int main()    </p><p><b>  {    </b></p><p>  char input

64、[] = "4 - 7";    </p><p>  char output[] = "    ";    </p><p>  arithmetic(inpu

65、t,strlen(input),output);    </p><p>  cout<<output<<endl;    </p><p>  return 0;    </p><p><b>  }

66、    </b></p><p>  4.輸入1--50個(gè)數(shù)字,求出最小數(shù)和最大數(shù)的和</p><p>  [cpp] view plaincopy</p><p>  //華為2014年機(jī)試題1:輸入1--50個(gè)數(shù)字,求出最小數(shù)和最大數(shù)的和    </p>&

67、lt;p>  //輸入以逗號(hào)隔開    </p><p>  #include<stdio.h>    </p><p>  #define N 50    </p><p>  void sort(

68、int a[],int n);    </p><p>  int main(void)    </p><p><b>  {        </b></p>&l

69、t;p>  char str[100];    </p><p>  int a[N]={0};    </p><p>  gets(str);      //要點(diǎn)1:動(dòng)態(tài)的輸入1--50個(gè)整數(shù),不能確定個(gè)數(shù),只能用字符串輸

70、入,然后分離出來    </p><p>  int i=0;    </p><p>  int j=0;    </p><p>  int sign=1;    </

71、p><p>  while(str[i]!='\0')    </p><p><b>  {    </b></p><p>  if(str[i]!=',')  //輸入時(shí)要在半角輸入  

72、60; </p><p><b>  {    </b></p><p>  if(str[i] == '-')    //要點(diǎn):2:有負(fù)整數(shù)的輸入    </p><p><

73、;b>  {    </b></p><p>  // i++;   //易錯(cuò)點(diǎn)1    </p><p>  sign=-1;    </p><p><b>  } 

74、   </b></p><p>  else if(str[i]!='\0') //不用else的話,負(fù)號(hào)也會(huì)減去‘0’    </p><p><b>  {    </b></p><p&

75、gt;  a[j]=a[j]*10 + str[i]-'0'; //要點(diǎn)3:輸入的可以是多位數(shù)    </p><p><b>  }    </b></p><p><b>  }    &l

76、t;/b></p><p><b>  i++;    </b></p><p>  if(str[i]==',' || str[i]=='\0')  //這個(gè)判斷是在i自加以后    </p>&

77、lt;p><b>  {    </b></p><p>  a[j]=a[j]*sign;  //易錯(cuò)點(diǎn)2    </p><p>  sign=1;   ////易錯(cuò)點(diǎn)3    </p

78、><p>  j++;    //j就是a數(shù)組的個(gè)數(shù) 范圍0到j(luò)-1    </p><p><b>  }    </b></p><p><b>  }    <

79、;/b></p><p>  sort(a,j);    </p><p>  printf("Max number + Min number = %d",a[0]+a[j-1]);    </p><p&

80、gt;  return 0;    </p><p><b>  }    </b></p><p>  void sort(int a[],int n)  //選擇排序    </p

81、><p><b>  {    </b></p><p>  int i,j;    </p><p>  int k;    </p><p>  int temp;

82、0;   </p><p>  for(i=0;i<n-1;i++)    </p><p><b>  {    </b></p><p><b>  k=i;    </

83、b></p><p>  for(j=i+1;j<n;j++)    </p><p><b>  {    </b></p><p>  if(a[k]>a[j])    </p><p

84、><b>  k=j;    </b></p><p><b>  }    </b></p><p>  if(i!=k)    </p><p><b>  {  

85、  </b></p><p>  temp = a[k];    </p><p>  a[k] = a[i];    </p><p>  a[i] = temp;  

86、60; </p><p><b>  }    </b></p><p><b>  }    </b></p><p>  for(i=0;i<n;i++)    </p>

87、<p>  printf("%-5d",a[i]);    </p><p>  puts("");    </p><p><b>  }    </b></p><p>

88、<b>  初始化順序表</b></p><p><b>  計(jì)算線性表的長度</b></p><p><b>  插入結(jié)點(diǎn)</b></p><p><b>  追加結(jié)點(diǎn)</b></p><p><b>  刪除結(jié)點(diǎn)</b></

89、p><p><b>  查找結(jié)點(diǎn)</b></p><p><b>  按照序號(hào)查找結(jié)點(diǎn)</b></p><p><b>  按照關(guān)鍵字查找結(jié)點(diǎn)</b></p><p><b>  顯示所有的結(jié)點(diǎn)</b></p><p><b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論