找工作的事情告一段落,现在把一些公司常见的笔试题型整理一下,本人主要是找嵌入式软件方面的工作,笔试的也主要是C语言、数据结构,大体上都比较基础,但是得早作准备,才会占得先机。
1:整型数求反
2:字符串求反,字符串加密,越界问题
3:字符串逆序,两端对调;字符串逆序,指针法
4:递归求n!
5:不用库函数,比较两个字符串的大小
6:求0-3000中含有9和2的全部数之和
7:质因数分解
8:判断一个数(x)是否是2的n次方
9:判断CPU的大小端
10: 字符串转成成整型数
11: 整型数转换成字符串
12: //插入法//选择法//冒泡法
13: 二分收索法
14: //编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年//12月31日23时59分59秒,则输出2005年1月1日0时0分0秒
15: //1、滤除给定字符串首尾的空格,和字符串中的TAB符和换行符
//2、滤除空格
//3、判断质数
16:文件的读写操作
fopen(“name”,”rw”),fputc(ch,fp),fgetc(fp),fclose(fp),feof(fp)
//1从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止
//2将一个磁盘文件中的信息复制到另一个磁盘文件中
//3/*fread(buffer,size,count,fp) ,fwrite(buffer,size,count,fp)*/
//4//rewind(fp1);//使位置指针重新返回文件的开头,此函数没有返回值
//5 seek(fp,位移量(long),起始点)
17: 字符串常量指针问题
18:union struct sizeof()
//-----------------------------------------------------------------
/*整型数求反*/
//-----------------------------------------------------------------
#include<stdio.h>
int main()
{
int num1 = 8765439;
int num2 = 0;
while(num1 > 0)
{
num2 = num2 * 10 + (num1 % 10);
num1 = num1/10;
}
printf("%d", num2);
return 0;
}
//-------------------------------------------------------------------
//-----------------------------------------------------------------
/*字符串求反,字符串加密,越界问题*/
//-----------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void fun1(unsigned char *p);
void fun2(unsigned char *q);
void main()
{
unsigned char str[]="abcdefg";
printf("%s\n",str);
fun1(str);
printf("%s\n",str);
fun2(str);
printf("%s\n",str);
}
void fun1(unsigned char *p)
{
while(*p !='\0')
{
if((*p=(*p * 2+10) ) >=128)
{
*p= *p / 3;
}
p++;
}
}
//字符串逆序,两端对调
void fun2(unsigned char *q)
{
char temp,i,len;
len=strlen((char * )q);
// len=7;
for(i=0;i<(len-1)/2;i++)
{
temp=q[len-1-i];
q[len-1-i]=q[i];
q[i]=temp;
}
}
//字符串逆序,指针法
void pointer_str(void)
{
char *src="hello,world";
char *dest=NULL;
int len=strlen(src);
dest=(char *)malloc((len+1)* sizeof(char));
char *d=dest;
char *s=&src[len-1];
while(len-- != 0)
{
*(d++) = *(s--);
}
*d='\0';
printf("%s\n\n",src);
printf("%s\n\n",dest);
free(dest);
}
//递归求n!
int n_jiecheng(unsigned char n)
{
if(n==1)
{
return 1;
}
else if(n>1)
{
n=n*n_jiecheng(n-1);
}
printf("n=%d\n",n);
return n;
}
//不用库函数,比较两个字符串的大小
int strcmp_z( char *src, char *dest)
{
/* while((*src != '\0') && (*src == *dest) )
{
src++;
dest++;
}
return ((*src) - (*dest) ) ? -1 : 0 ;
*/
int i;
for(i=0;src[i]==dest[i];i++)
{
if(src[i] == '\0' && dest[i] == '\0')
{
return 0;
}
}
return -1;
}
//-----------------------------------------------------
//求0-3000中含有9和2的全部数之和
//-----------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun(char *);
int fun(char *p)
{
char flag_9=0,flag_2=0;
while(*p != '\0')
{
if('9'== *p)
{
flag_9=1;
}
else if ('2'== *p)
{
flag_2=1;
}
p++;
}
if(2==(flag_9+flag_2))
{
return 1;
}
return 0;
}
int main()
{
int i,j=0;
unsigned int sum = 0;
char table[]="0123";
char *str=table;
for(i=0;i<3000;i++)
{
itoa(i,str,10);
if(fun(str))
{
sum+=i;
printf("%u,%u,%s,%u\n",j++,i,str,sum);
}
}
return 0;
}
//---------------------------------------------------------------
//-------------------------------------------------------------
//质因数分解
//--------------------------------------------------------------
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int j=0;
int IsPrime(int Num)
{
int i;
for(i=3; i<=sqrt(Num); i=i+2)
{
if (Num%i==0)
{
return 0;
}
}
return 1;
}
int resolve(int Num)
{
int i,n;
for(i=2; i<Num/2;i++)
{
if(IsPrime(i)==1 && Num%i==0)