c/c++面试指导---c语言基础算法总结1
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的更多相关文章
- c/c++面试总结---c语言基础算法总结2
c/c++面试总结---c语言基础算法总结2 算法是程序设计的灵魂,好的程序一定是根据合适的算法编程完成的.所有面试过程中重点在考察应聘者基础算法的掌握程度. 上一篇讲解了5中基础的算法,需要在面试之 ...
- 【自学编程】新手经常遇到的10大C语言基础算法,珍藏版源码值得收藏!
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数 ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- C语言的10大基础算法
C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...
- iOS开发——面试指导
iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...
- Java面试指导
Java面试指导 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊 ...
- python服务端工程师就业面试指导☝☝☝
python服务端工程师就业面试指导 由Python专业面试官打造的课,少之又少,专业代表着经验,代表着对考察点的通透理解,更代表着对你负责 第1章 Python工程师offer直通车(视频+教辅文档 ...
- 20165234 预备作业2 学习基础和C语言基础调查
学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...
- 20165235 学习基础和C语言基础调查
20165235 学习基础和C语言基础调查 首先第一个问题:你有什么技能比大多人(超过90%以上)更好?感觉很难回答这种问题,其实我对很多东西挺感兴趣的,如果非要拿出一种比较突出的技能的话我感觉就是象 ...
随机推荐
- Kudu的配置(官网推荐的步骤)(Configuring Apache Kudu)
不多说,直接上干货! http://kudu.apache.org/docs/configuration.html
- Kudu 常见的几个应用场景
不多说,直接上干货! Kudu 常见的几个应用场景 实时更新的应用.刚刚到达的数据就马上要被终端用户使用访问到. 时间序列相关的应用,需要同时支持: 根据海量历史数据查询. 必须非常快地返回关于单个实 ...
- pat1002. A+B for Polynomials (25)
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- js日期格式转化
如果出现日期格式: /Date(1442742059253)/ 可用下面js方法转化 function ChangeDateFormat(cellval) { var date = ne ...
- angular2-搭建环境
npm 模块将被下载安装到[全局目录]中.[全局目录]通过 npm config set prefix "目录路径" 来设置.通过 npm config get prefix 来 ...
- >>我要做特工系列 之 CSS 3_animation_向右滑出后下滑并停止
新手入门还没有正式发点啥东西,都是在装潢博客这个家了,到现在为止还是没有装修好..熟悉了这边的发布规范之后会持续在这里记录,给自己留下学习的脚印~ 这正式的第一篇随笔写个使用css3的动画效果. 总感 ...
- oracle多表查询和子查询练习
--1.列出至少有三个员工的所有部门和部门信息. SELECT D.DEPTNO, D.DNAME, D.LOC, T.COUNTS FROM DEPT D, (SELECT DEPTNO, CO ...
- 《Cron表达式详解》
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- Struts2_用ModelDriven接收参数
通过实现 ModelDriven 接口来接收请求参数,这种方法用的比较少,一般还是用前两种. 请求: <a href="user/user!add?name=xiaoer&ag ...
- java使用poi读取ppt文件
package msoffice; import java.io.File; import java.io.FileInputStream; import java.io.IOException; i ...