c/c++面试指导---c语言基础算法总结1

2023-06-15,,

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语言基础算法总结1.doc》

下载本文的Word格式文档,以方便收藏与打印。