c语言基础算法总结 1 

初学者学习任何一门编程语言都必须要明确,重点是学习编程方法和编程思路,不是学习语法规则,语法规则是为编程实现提供服务和支持。所以只要认真的掌握了c语言编程方法,在学习其它的语言时注重其语法规则,则能比较快速的掌握。企业在招聘的程序员主要考察是其编程能力,是否掌握一般的编程方法或者思维,是否具备开发项目的能力。根据企业面试题目的要求对c语言中的常用算法进行了总结,希望能帮助大家顺利的通过企业的面试。

基础的算法共计涉及到十几种,下面分别给予说明。
1、求和值和平均值。
在多个数据中求和值或者平均值,是开发多数软件都会用到的一种基础算法。对集合(c语言中数组、链表;python中序列)中的多个数据进行运算。基本方式是用循环来实现:
初始化
while(没有遍历完成)
{
data依次获取集合中每一个元素
sum = sum + data
}
sum中存放所有元素的和值
avg = sum / 集合元素个数 求出平均值
2、统计查询
对集合中的数据进行查询或者统计,则是一项最为常用的操作,其基本实现方法是通过循环依次遍历集合中所有元素,通过对比查询和统计。其基本编程模型:
初始化
while(没有遍历完成)
{
依次获取每一个元素
比较统计
}
面试题举例1(东华软件招聘c/c++程序员面试题目):
数组a[N]中有N-1个元素分别存放1---N-1(顺序不定),还有一个存放的是1--N-1中的某一个数,编写函数得到这个唯一重复的数
分析:属于典型的统计查找,用第0个元素依次和所有元素进行比较,找到返回;找不到,则继续用第1个元素依次和其后的所有元素进行比较,找到返回;找不到则继续用第2个元素,...
熟练掌握了统计查询的方法,则比较容易解决此问题
3、求最值(最大值和最小值)
对集合中的数据进行统计求其中的最大值或者最小值,也是软件开发过程中的一项常用操作,其基本实现方法:获取集合中第一个元素,依次和其余的元素进行比较,如果小于某个值,则获取该值,循环结构后求出最大值,求最小值则正好相反。
其基本编程模型:
data = 集合中第一个数据
while(没有遍历完)
{
依次获取每一个元素
if(data < 某一个元素)
data = 某一个元素
}
data中存放的是最大值

面试题举例2(上海新利集团笔试题):编写一个函数,找出一个给定的字符串中出现次数最多的字符并返回该字符。
分析:将统计算法和求最大值算法结合起来,重点是考察求最值的方法,应聘者首先必须要熟悉这两种算法,才能解决此问题。
解决问题基本思路是:依次统计每一个字符的个数,再和上一次统计的数字进行比较,保留个数最多的字符,循环到最后一个字符。
给出参考模型:
while(str[i] != '\0')
{
从i+1开始统计str[i]的个数
和上一次的统计结果比较记录字符str[i]
i = i + 1
}
4、整数的分解和组合。
通信过程中在某些情况需要将一个整数分解后一位一位进行传输,接受方则需要将接受到的每一位数字重新组合成一个整数。如何分解和组合也是软件开发中的一种常用的基础算法。基本实现方法:将整数取10的余数,获取个位数,接下来将整数和10相除,其结果在取10的余数,获取十位数,依次循环,获取每个位上的数字,直到该整数等于0为止。组合:采用是对数据乘以10加每一位的数字。
模型:
data = 整数
while(data > 0)
{
bit = data % 10
bit依次获取每一位上的数据
data = data / 10
}

面试题举例3(蓝岸电子笔试题):编写一个函数,将一个整数的各个位数字求和并返回。
分析:将求和算法和整数分解的算法结合起来,应聘者必须要熟悉这两种算法,则该问题很容易解决
参考模型:
sum = 0
data = 整数
while(data > 0)
{
bit = data % 10;
sum = sum + bit
data = data / 10
}
sum中存放的是各个位上数字的和
5、将整数转换成对应的字符串,或者将数字字符串转换成对应的整数。
外部设备和cpu通信过程中,需要数值型和字符串之间的转换,需要用到此算法,特别是在应聘嵌入式方面的工作时则多数企业会考察该算法。
将一个整数转成对应的字符串模型
data = 整数
定义一个存放字符串数组 str
while(data > 0)
{
bit = data % 10
str[i] = bit + '0'
i = i + 1
data = data / 10
}
在将str中的字符串逆序
将一个数字字符串转换成一个整型数据

str中数字字符串转成整型数据存入data
while(str[i] != '\0')
{
bit = str[i] - '0'
data = data * 10 + bit
i = i + 1
}

未完待续

c/c++面试指导---c语言基础算法总结1的更多相关文章

  1. c/c++面试总结---c语言基础算法总结2

    c/c++面试总结---c语言基础算法总结2 算法是程序设计的灵魂,好的程序一定是根据合适的算法编程完成的.所有面试过程中重点在考察应聘者基础算法的掌握程度. 上一篇讲解了5中基础的算法,需要在面试之 ...

  2. 【自学编程】新手经常遇到的10大C语言基础算法,珍藏版源码值得收藏!

    算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数 ...

  3. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  4. C语言的10大基础算法

    C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...

  5. iOS开发——面试指导

    iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...

  6. Java面试指导

    Java面试指导   想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊 ...

  7. python服务端工程师就业面试指导☝☝☝

    python服务端工程师就业面试指导 由Python专业面试官打造的课,少之又少,专业代表着经验,代表着对考察点的通透理解,更代表着对你负责 第1章 Python工程师offer直通车(视频+教辅文档 ...

  8. 20165234 预备作业2 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...

  9. 20165235 学习基础和C语言基础调查

    20165235 学习基础和C语言基础调查 首先第一个问题:你有什么技能比大多人(超过90%以上)更好?感觉很难回答这种问题,其实我对很多东西挺感兴趣的,如果非要拿出一种比较突出的技能的话我感觉就是象 ...

随机推荐

  1. (转)Python中的split()函数的用法

    Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...

  2. [一点一滴.NET]进程和线程的区别

    进程是“执行中的程序”,是一个动态的概念.我们使用IDE编写的程序是静态的,静态程序经过编译形成EXE文件,运行起来之后就形成了一个进程.进程不仅仅是程序的代码,还包含了程序运行时的活动信息,通常由程 ...

  3. 相同datatable合并

  4. mysql 使用 unix 方式显示日期和时间

    1.UNIX中文为时间戳.该方式显示从1970年1月1日开始经过的秒数. 2.函数 UNIX_TIMESTAMP() 返回时间戳格式的时间, FROM_UNIXTIME() 将时间戳格式的时间转换为普 ...

  5. Mincost

    The cost of taking a taxi in Hangzhou is not a constant for each kilometer you travel: the first 4 k ...

  6. sqlserver门户设置

    ------ insert by wandz 20180918 门户模板表 start ------set identity_insert oa_portal_template on;begin de ...

  7. The twentieth day

    Knowledge is power 知识就是力量 You're unique,nothing can replace you.你举世无双,无人可以替代.

  8. [原创]Debian9 安装配置MariaDB

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  9. Azure 1 月新公布

    Azure 1 月新发布:Microsoft Power BI Embedded 公共预览和计算机视觉 API 标准版的更新以及 Azure IoT 网关 SDK 和中心设备管理新功能正式发布以及关于 ...

  10. Google面试准备

    本人小弱,面试过了Google的HC,虽然team match还没完成,到最后还有变数.但对自己这段时间的努力,也算一个交代了. 最初是一年半前Google的HR联系到我,然后第一次在电面就挂了.经过 ...