c面试题大纲

来源:范文网 2.46W

1、给一个字符串,例如“ababc”要求返回“ab”,因为“ab”连续重复出现且最长 好长时间不编程序了,刚开始的时候编不出来,想开别人写的,可悲的是看不懂,后来自己编了一个,效率不能有其他的人的好,自己编的还是记录下来了。 #include

c面试题大纲

#include#includeint search(char *str,char * substr) { int l_str = strlen(str); int l_substr = strlen(substr); int sum = 0; if(l_str

} void main() { char str[]="ababc"; char sb[]="ab"; int sum =search(str,sb); printf("str:%s,sum:%dn",sb,sum); f(str); }

2、关于中文汉字截断

由于汉字是2个字符(这里不讨论可变字符的情形),因此,在C语言中,用一个固定长度的buffer 存放包含汉字的字符串,就有汉字被截断从而导致半个汉字的情形的出现。半个汉字的'存在,对字符串的后续处理,会带来一定的麻烦,比如在xml文档、或者 SQL语句中,如果存在半个汉字,就会导致xml解析失败,或者sql执行错误的异常。为了解决这个问题,有必要找到并删除半个汉字,或者存放的时候,即 便截断,也不产生新的半个汉字。

char str[]="中国china";

printf("%s,%dn",str,strlen(str));

//scanf("%s %s",&str,&substr);

int len = strlen(str);

int n=0;

for(int i=0;i{

if(!(str[i]&0x80))

{

break;

}

n++;

}

printf("%dn",n);

4、对序列1,1,3,5,8,13......是Fab..数列2,3,4,13...是Fab..质数数列,因为他们与自己前面的Fab数列都互质给出k,返回第k小的Fab..质数。

自己的答案:

#include

#include

#include

#include

bool f1(int n)

{

bool flag = true;

for(int i=2;i<=sqrt(n);i++)

{

if(n%i ==0)

{

flag = false;

break;

}

}

return flag;

}

int ff(int k)

{

int a = 1;

int b = 1;

int n = 1;

while(1)

{

int temp = b;

b = a+b;

a = temp;

printf("|%dn",b);

if(f1(b)) n++;

if(n==k) return b;

}

}

void main()

{

int k;

scanf("%d",&k);

int b = ff(k);

printf("%dn",b);

}

#include

#include

#include

#include

bool f1(int n)

{

bool flag = true;

for(int i=2;i<=sqrt(n);i++)

//备注:一个数如果不能被比它平方根小的所有质数整除,那么它就是质数。

//i从2开始,编程的时候,随便写了个0,就捅了娄子。

{

if(n%i ==0)

{

flag = false;

break;

}

}

return flag;

}

void ff(int k)

{

int a = 1;

int b = 1;

while(a+b<=k)

{

int temp = b;

b = a+b;

a = temp;

}

while(!f1(b))

{

printf("hen");

int temp = b;

b = a;

a = temp - b;

}

printf("%dn",b);

}

void main()

{

int k;

scanf("%d",&k);

ff(k);

}

热门标签