zoukankan      html  css  js  c++  java
  • 华为机试题练习总结

    输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出。

    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;
    			}
    		}
    	}
    



  • 相关阅读:
    2. Django每日一码 之as_view() 源码
    gdb
    Mex文件在VS2010中调试方法
    intel ipp6.0安装过程
    C++开源库大全
    Win7下搭建Go语言开发环境
    for_each使用方法详解
    使用VS2012编译和使用C++ STL(STLport)
    django css
    google mock C++单元测试框架
  • 原文地址:https://www.cnblogs.com/didi520/p/4165497.html
Copyright © 2011-2022 走看看