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. BaseAdapter,SimpleAdapter,CursorAdapter的用法

    简单好用的Adapter---ArrayAdapter ArrayAdapter是BaseAdapter的派生类,在BaseAdapter的基础上,添加了一项重大的功能:可以直接使用泛型构造. 我们先 ...

  2. Oozie安装部署

    不多说,直接上干货! 首先,大家先去看我这篇博客.对于Oozie的安装有一个全新的认识. Oozie安装的说明 我这里呢,本篇博文定位于手动来安装Oozie,同时避免Apache版本的繁琐编译安装,直 ...

  3. Hash表的原理

    哈希的概念:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩 ...

  4. Powershell(2)

    powershell(2) 帮助系统(显示出来的参数语法要比Unix中help复杂) save-help -destinationpath c:\help update-help -force -so ...

  5. HDU 2121——Ice_cream’s world II——————【最小树形图、不定根】

    Ice_cream’s world II Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  6. C#本期本周的算法

    C#根据当前时间获取,本周,本月,本季度等时间段 DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays( - Conve ...

  7. 内存分配详解 malloc, new, HeapAlloc, VirtualAlloc,GlobalAlloc

    很多地方都会使用内存,内存使用过程中操作不当就容易崩溃,无法运行程序,上网Google学习一下,了解整理下他们之间的区别以及使用 ,获益匪浅 0x01 各自的定义和理解 (1)先看GlobalAllo ...

  8. python面试题——数据库和缓存(46题)

    1.列举常见的关系型数据库和非关系型都有那些? 2.MySQL常见数据库引擎及比较? 3.简述数据三大范式? 4.什么是事务?MySQL如何支持事务? 5.简述数据库设计中一对多和多对多的应用场景? ...

  9. canvas制作倒计时炫丽效果

    <!DOCTYPE html> <head> <title>canvas倒计时</title> <style> .canvas{ displ ...

  10. jQueryMobile(三)

    五].jQueryMobile工具栏 头部.尾部的定位:data-position='inline' 默认data-position='fixed' 固定在头部/尾部data-fullscreen=' ...