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. windows当代理服务器-CCProx的使用

    参考 https://jingyan.baidu.com/article/0f5fb099ef3a2c6d8234ea75.html 在ubuntu下设置网络代理,选择手动方式

  2. pat1087. All Roads Lead to Rome (30)

    1087. All Roads Lead to Rome (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  3. PrintPreviewControl

    用于按文档打印时的外观显示PrintDocument对象.此控件没有按钮或其他用户界面元素,因此通常只有在希望编写自己的打印预览用户界面时才会使用PrintpreviewControl 属性 Docu ...

  4. 异步对象(XMLHttpRequest)的帮助脚本

    异步对象五部曲 这是post请求的. //1.00创建异步对象 var xhr = new XMLHttpRequest(); //2.0 xhr.open("post", url ...

  5. 为什么要使用markdown?

    markdown是什么? markdown是一种标记语言,它不是编程语言 为什么要使用markdown? markdown可以使用任何文本编辑器编写和查看 markdown编写的文件可以转化为html ...

  6. MySQL(五)

    一.视图 视图是一个虚拟表(非真实存在),其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘 ...

  7. python反爬之懒加载

    # 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现, ...

  8. Android基础Activity篇——其他隐式Intent

    1.使用隐式Intent调用浏览器 修改FirstActivity中的按钮点击事件代码. Intent intent=new Intent(Intent.ACTION_VIEW); intent.se ...

  9. 笨办法学Python(二十)

    习题 20: 函数和文件 回忆一下函数的要点,然后一边做这节练习,一边注意一下函数和文件是如何在一起协作发挥作用的. from sys import argv script, input_file = ...

  10. 使用Atom编写Makedown

    Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器. Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 作为一个Gi ...