当前位置:首页 » 编程语言 » 面试考算法可以用c语言吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

面试考算法可以用c语言吗

发布时间: 2023-04-24 11:28:56

① 一道c语言面试题,请帮忙思考一下,给出对应的算法,谢谢

{
struct {
char key[12];
char value[32];
}list1[7]={{"",""毕含铅磨},{},};
string str="您好,你的卡号末四位[var1]在[var2]日[var3]时[var4]分[var5]消费了手激笑[var6]元,本次你消费了[var6]元将获取相应积分。[var7]";
string temp=str;
string::size_type t;
for(int i=0;i<6;++i){
t=temp.find_first_of(list1[i].key);
temp=str.substr(0,t);
temp+=list1[i].value;
temp+=str.substr(t+strlen(list1[i].key),str.size());
str=temp;
}
}
这是C++思路 C就把string的相关操作自己写下

② 经典C语言面试算法题

经典C语言面试算法题

1.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)

功能:

在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回

9,outputstr所指的值为123456789。

#include

#include

#include

int FindMax_NumStr(char *outputstr,char *inputstr)

{

char *in = inputstr,*out = outputstr,*temp;

char *final;

int count = 0;

int maxlen = 0;

int i;

while(*in!='')

{

if(*in > 47 && *in < 58)

{

for(temp = in;*in> 47 && *in <58;in++)

count++;

}

else

in++;

if(maxlen < count)

{

maxlen = count;

count = 0;

final = temp;

}

}

for(i =0;i

{

*out = *final;

out++;

final++;

}

*out = '';

return maxlen;

}

void main(void)

{

char input[]="abc123def123456eec123456789dd";

char output[50] = {0};

int maxlen;

maxlen = FindMax_NumStr(output,input);

printf("the str %s ",output);

printf("the maxlen is %d ",maxlen);

}

2.求1000!的未尾有几个0;

求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的'数的个数n3,能被625整除的数的个数n4.1000!末尾的零的个数=n1+n2+n3+n4;

只要是末尾是5的数它乘以一个偶数就会出现一个0,而末尾是0的数乘以任何数也都会出现0

而末尾是0的如果是一个0肯定能被5整除,两个0肯定能被25整数,以此类推3个0就能被5的三次方整除,也就是125

1000!就是1-1000数的相乘,能被5整除的所有数分别乘以一个偶数就会出现这些个的0,而例如100,既能被5整除,也能被25整除,所以就是两个0

1000,既能被5,25,也能被125整除,所以算三个0

例如是10!=1*2*3*4*5*6*7*8*9*10,里面有两个数能被5整除,就是10和5,而

5随便乘以一个偶数就出现一个0,而10乘以其它数也会出现一个0,所以10!会有两个0

#include

#define NUM 1000

int find5(int num)

{

int ret = 0;

while(num%5==0)

{

num/=5;

ret++;

}

return ret;

}

int main(void)

{

int result = 0;

int i;

for(i=5;i<=NUM;i+=5)

result +=find5(i);

printf("the total zero number is %d ",result);

return 0;

}

3。编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。

char * search(char *cpSource, char ch)

{

char *cpTemp=NULL, *cpDest=NULL;

int iTemp, iCount=0;

while(*cpSource)

{

if(*cpSource == ch)

{

iTemp = 0;

cpTemp = cpSource;

while(*cpSource == ch)

++iTemp, ++cpSource;

if(iTemp > iCount)

iCount = iTemp, cpDest = cpTemp;

if(!*cpSource)

break;

}

++cpSource;

}

return cpDest;

}

;

③ c语言不能用来描述算法对吗

不对,可以描述算法
2 讲 算法及用C语言描述算法 ; 通过介绍算法的性质、组成要素和举例,引入流程图和N-S图来描述算法。进一步,用C语句来实现算法。 ;算 法;2 简单算法举例;算法表示如下:S1:2000→yearS2:若year不能被4整除,则输出year不是闰年,转S6S3:year能被4整除,不能被100整除,则输出year是闰年,转S6S4: year能被100整除,又能被400整除,则输出year是闰年;否则输出不是闰年。然后转S6S5:输出year不是闰年S6:year+1→yearS7:若year≤2500,转S2;否则算法停止。注意:有的问题对判断的先后次序无关;但有的问题不能任意颠倒判断的先后顺序。;例2.4 求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1) ×signS5:term=sign ×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4;否则算法结束。;例2.5 判断一个大于等于3的正整数是否为素数。素数:只能被1和其本身整除的数。S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:若r=0,不是素数,算法结束;否则执行S5S5:i+1→iS6:若i≤n-1,返回S3;否则是素数,结束。实际上只需判断n能否被2~ 之间的整数整除即可。所以S6可改为:S6:若i≤ ,返回S3;否则是素数,结束。;3. 算法的组成要素 操作。如算术运算、逻辑运算、关系运算、函数运算等。 控制结构。用于控制组成算法的各操作的执行顺序。结构化程序设计中,顺序、选择和循环3种基本结构能组成任何结构的算法。;2)选择结构(又称选取结构、分支结构);3)循环结构(又称重复结构) 分为当型循环结构和直到型循环结构。;;5. 伪代码与逐步细化的程序设计方法 伪代码(pseudo code):介于自然语言与计算机语言之间的文字符号算法描述工具。一般步骤为:1) 自顶向下,将问题描述为几个子问题或子功能,不要试图一下子就触及问题解法的细节。2) 在子问题一级描述算法。;用C语句描述算法;例. 3个数中取大数—逐步细化法设计程序; ③写主函数的条件已经成熟 ;④仍按逐步细化的方法设计max3()的算法。设三个参数为x,y,z。 S2.1:从x, y中取出大数送m S2.2:从m,z中取出大数送m S2.3:??回m给主调函数进一步细化得: S2.1:if (x>y) m=x; else m=y; S2.2:if (m>z) m=m; else m=z; S2.3:return(m);;⑤很容易用C语言写出函数max3()。;[例2.20]:用C语言表示求5!的算法 ;[例2.21]:用C语言表示求下列级数的算法 ;结构化程序设计方法

④ 只会c语言可以应聘算法工程师吗

不可以的,就算会java,c++多种语言也未必能当算法工陪拆程师的,算法芦蔽枣工程师侧重算法,你必须要算法并磨够好才可以的。算法工程师不好当阿。

⑤ 北航计算机复试只能用C语言吗,不能用C++吗

C/C++的意思一般是纯C语言或C++都行,只要是题目没有硬性要求采用对象、盯庆稿类的相关概念,二者差坦没凯孝有实质区别。

⑥ 写算法题为什么大多用C语言而不用java

首先c语言的效率比较高,执行起来比较快
其次算法有不少需要对浮点的数据做定点的截断,这个用c语言比较通用。同时代码量相对来说不大。
另外不少算法在芯片上面去实现,很多芯片验证环境同时支持c语言的参考模型。