華爲機試題練習總結

輸入一個字符串,刪除其中所有的數字,所有大寫字母改成小寫,其他不變,並輸出。

break是直接跳出循環,continue意思是遇到數字就跳過,後面的語句不執行;

大小寫字母轉換 -‘A’+’a’ 或者 -‘a’+’A’;

輸入一個字符串,輸出其出現次數最多的數字,如果有兩個數字出現次數相同,則輸出較小的那一個

給整形數組賦0值,頻率統計數組

字符轉換成數字要 -‘0’,數字轉換成字符要 +’0’;

break保證了只輸出一個滿足要求的結果;

輸入一個字符串,統計其出現頻率最高的字符,並輸出。若存在兩個字符出現頻率相同,則輸出字典序較小的那一個。

int m;char str[i];m=str[i]字符轉換爲ASCII.直接賦值就行了。

輸入一個數字,輸出其各個位上的和

</pre><p><span style="background:yellow;">方法</span><span style="background:yellow;">1</span><span style="background:yellow;">:</span>整數拆分,不斷的除以10將餘數提取出來。</p><p align="left"><span style="color:blue;">while</span>(n!=0)<span style="background:yellow;">////////////</span><span style="background:yellow;">循環結束的標誌</span></p><p align="left">{</p><p align="left">       sum+ = n%10;</p><p align="left">       n = n/10;</p><p>}</p><p><span style="background:yellow;">方法</span><span style="background:yellow;">2</span><span style="background:yellow;">:</span>整數拆分,直接用字符串讀入,把每一位用字符形式提取出來。</p><p align="left"><span style="background:yellow;">///////////vs2008</span><span style="background:yellow;">中</span><span style="background:yellow;">int</span><span style="background:yellow;">佔</span><span style="background:yellow;">4</span><span style="background:yellow;">個字節【</span><span style="background:yellow;">sizeof(int)</span><span style="background:yellow;">】,最大值爲</span><span style="background:yellow;">4294967296</span><span style="background:yellow;">,定義字符數組長度</span><span style="background:yellow;">11</span></p><p align="left"><span style="color:blue;">for</span> (i=0;i<len;i++)</p><p align="left">       {</p><p align="left">              sum+= (str[i]-<span style="color:#A31515;">'0'</span>);<span style="background:yellow;">////////////</span><span style="background:yellow;">注意</span><span style="background:yellow;">+</span><span style="background:yellow;">和</span><span style="background:yellow;">=</span><span style="background:yellow;">中間不要有空格,否則會報錯</span></p><p> }</p><strong>輸入一個數字,將其倒序輸出,並輸出其各個位上的乘積。</strong><p></p><p align="left">將其倒序輸出,沒有特別強調是按照一個數的格式輸出,因此可以有前導0///////////vs2008中int佔4個字節,不會溢出(3999999999各位的乘積最大,不溢出)。</p><pre name="code" class="cpp"><p align="left"><span style="color:blue;">#include</span><span style="color:#A31515;"><stdio.h></span></p><p align="left"><span style="color:blue;">#include</span><span style="color:#A31515;"><string.h></span></p><p align="left"><span style="color:blue;">int</span> main()</p><p align="left">{</p><p align="left">       <span style="color:blue;">char</span>str[11];</p><p align="left">       scanf(<span style="color:#A31515;">"%s"</span>,str);</p><p align="left">       <span style="color:blue;">int</span>i,len,product=1;</p><p align="left">       len = strlen(str);</p><p align="left">       <span style="color:blue;">for</span>(i=len-1;i>=0;i--)</p><p align="left">       {</p><p align="left">              printf(<span style="color:#A31515;">"%c"</span>,str[i]);</p><p align="left">              product*= (str[i]-<span style="color:#A31515;">'0'</span>);</p><p align="left">       }</p><p align="left">       printf(<span style="color:#A31515;">" "</span>);<span style="background:yellow;">////////////////</span><span style="background:yellow;">輸出空格</span></p><p align="left">       printf(<span style="color:#A31515;">"%d"</span>,product);</p><p align="left"><span style="color:blue;">return </span>0;</p><p>}</p>


輸入10個數字,按從大到小的順序排序

排序算法:選擇排序、冒泡排序、統計排序、歸併排序、快速排序、堆排序……

冒泡排序:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底爲升序,最小值沉底爲降序。

<p align="left"><span style="color:red;">for(i=0;i<9;i++)</span><span style="background:yellow;">///////////</span><span style="background:yellow;">進行</span><span style="background:yellow;">9</span><span style="background:yellow;">次循環,實現</span><span style="background:yellow;">9</span><span style="background:yellow;">趟比較,即</span><span style="background:yellow;">n-1</span></p><p align="left"><span style="color:red;">       {</span></p><p align="left"><span style="color:red;">              for(j=0;j<9-i;j++)</span><span style="background:yellow;">///////////</span><span style="background:yellow;">每一趟中進行</span><span style="background:yellow;">9-i</span><span style="background:yellow;">次比較,即</span><span style="background:yellow;">n-1-i</span></p><p align="left">              <span style="color:red;">{</span></p><p align="left"><span style="color:red;">                     if(num[j]<num[j+1])</span></p><p align="left"><span style="color:red;">                     {</span></p><p align="left"><span style="color:red;">                            t= num[j+1];</span></p><p align="left"><span style="color:red;">                            num[j+1]= num[j];</span></p><p align="left"><span style="color:red;">                            num[j]=t;</span></p><p align="left"><span style="color:red;">                     }</span></p><p align="left"><span style="color:red;">              }</span></p><p align="left"><span style="color:red;">       }</span></p>

選擇排序:
算法1:每趟選出一個最值和無序序列的第一個數交換,n個數共選n-1趟。第i趟假設i爲最值下標,然後將最值和i+1至最後一個數比較,找出最值的下標,若最值下標不爲初設值,則將最值元素和下標爲i的元素交換。

<p align="left"><span style="color:#CB1DC3;">int k;</span></p><p align="left"><span style="color:#CB1DC3;">for(i=0;i<9;i++)</span></p><p align="left"><span style="color:#CB1DC3;">       {</span></p><p align="left"><span style="color:#CB1DC3;">              k = i;</span></p><p align="left"><span style="color:#CB1DC3;">              for(j=i+1;j<10;j++)</span></p><p align="left"><span style="color:#CB1DC3;">              {</span></p><p align="left"><span style="color:#CB1DC3;">                     if(num[j]<num[k])</span></p><p align="left"><span style="color:#CB1DC3;">                     {</span></p><p align="left"><span style="color:#CB1DC3;">                            k= j;</span></p><p align="left"><span style="color:#CB1DC3;">                     }</span></p><p align="left"><span style="color:#CB1DC3;">              }</span></p><p align="left"><span style="color:#CB1DC3;">              if(k!=i)</span></p><p align="left"><span style="color:#CB1DC3;">              {</span></p><p align="left"><span style="color:#CB1DC3;">                     t= num[k];</span></p><p align="left"><span style="color:#CB1DC3;">                     num[k]= num[i];</span></p><p align="left"><span style="color:#CB1DC3;">                     num[i]= t;</span></p><p align="left"><span style="color:#CB1DC3;">              }</span></p><p align="left"><span style="color:#CB1DC3;">       }</span></p>

算法2:首先比較a[1]與a[2]的值,若a[1]大於a[2]則交換兩者的值,否則不變。再比較a[1]與a[3]的值,若a[1]大於a[3]則交換兩者的值,否則不變。再比較a[1]與a[4],依此類推,最後比較a[1]與a[n]的值。這樣處理一輪後,a[1]的值一定是這組數據中最小的。再將a[2]與a[3]~a[n]以相同方法比較一輪,則a[2]的值一定是a[2]~a[n]中最小的。再將a[3]與a[4]~a[n]以相同方法比較一輪,依此類推。

for(i=0;i<9;i++)
	{
		for(j=i+1;j<10;j++)
		{
			if (num[j]<num[i])
			{
				t = num[i];
				num[i] = num[j];
				num[j] = t;
			}
		}
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章