嵌入式軟件工程師筆試題
1、將一個字符串逆序
2、將一個鏈表逆序
3、計(jì)算一個字節(jié)里(byte)里面有多少bit被置1
4、搜索給定的字節(jié)(byte)
5、在一個字符串中找到可能的最長的子字符串
6、字符串轉(zhuǎn)換為整數(shù)
7、整數(shù)轉(zhuǎn)換為字符串
/*
* 題目:將一個字符串逆序
* 完成時間:2006.9.30深圳極訊網(wǎng)吧
* 版權(quán)歸劉志強(qiáng)所有
* 描述:寫本程序的目的是希望練一下手,希望下午去面試能成功,不希望國慶節(jié)之后再去找工作拉!
*/
#include
using namespace std;
//#define NULL ((void *)0)
char * mystrrev(char * const dest,const char * const src)
{
if (dest==NULL && src==NULL)
return NULL;
char *addr = dest;
int val_len = strlen(src);
dest[val_len] = '\0';
int i;
for (i=0; i
{
*(dest+i) = *(src+val_len-i-1);
}
return addr;
}
main()
{
char *str="asdfa";
char *str1=NULL;
str1 = (char *)malloc(20);
if (str1 == NULL)
cout<<"malloc failed";
cout<
free(str1);
str1=NULL;//杜絕野指針
}
p=head;
q=p->next;
while(q!=NULL)
{
temp=q->next;
q->next=p;
p=q;
q=temp;
}
這樣增加個輔助的指針就行樂,
嵌入式軟件工程師筆試題
。ok 通過編譯的代碼:
#include
#include
#include
typedef struct List{
int data;
struct List *next;
}List;
List *list_create(void)
{
struct List *head,*tail,*p;
int e;
head=(List *)malloc(sizeof(List));
tail=head;
printf("\nList Create,input numbers(end of 0):");
scanf("%d",&e);
while(e){
p=(List *)malloc(sizeof(List));
p->data=e;
tail->next=p;
tail=p;
scanf("%d",&e);}
tail->next=NULL;
return head;
}
List *list_reverse(List *head)
{
List *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=NULL;
head=p;
return head;
}
void main(void)
{
struct List *head,*p;
int d;
head=list_create();
printf("\n");
for(p=head->next;p;p=p->next)
printf("--%d--",p->data);
head=list_reverse(head);
printf("\n");
for(p=head;p->next;p=p->next)
printf("--%d--",p->data);
}
編寫函數(shù)數(shù)N個BYTE的數(shù)據(jù)中有多少位是1。
解:此題按步驟解:先定位到某一個BYTE數(shù)據(jù);再計(jì)算其中有多少個1。疊加得解。
#incluede
#define N 10
//定義BYTE類型別名
#ifndef BYTE
typedef unsigned char BYTE;
#endif
int comb(BYTE b[],int n)
{
int count=0;
int bi,bj;
BYTE cc=1,tt;
//歷遍到第bi個BYTE數(shù)據(jù)
for(bi=0;bi
{
//計(jì)算該BYTE的8個bit中有多少個1
tt=b[bi];
for(bj=0;bj<8;bj++)
{
//與1相與或模2結(jié)果是否是1?測試當(dāng)前bit是否為1
//if(tt%2==1)
if((tt&cc)==1)
{
count++;
}
//右移一位或除以2,效果相同
//tt=tt>>1;
tt=tt/2;
}
}
return count;
}
//測試
int main()
{
BYTE b[10]={3,3,3,11,1,1,1,1,1,1};
cout<
return 0;
}
1,
資料共享平臺
《嵌入式軟件工程師筆試題》(http://m.clearvueentertainment.com)。編寫一個 C 函數(shù),該函數(shù)在一個字符串中找到可能的最長的子字符串,且該字符串是由同一字符組成的'。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;
}
#include
#include
//
// 自定義函數(shù)MyAtoI
// 實(shí)現(xiàn)整數(shù)字符串轉(zhuǎn)換為證書輸出
// 程序不檢查字符串的正確性,請用戶在調(diào)用前檢查
//
int MyAtoI(char str[])
{
int i;
int weight = 1; // 權(quán)重
int rtn = 0; // 用作返回
for(i = strlen(str) - 1; i >= 0; i--)
{
rtn += (str[i] - '0')* weight; //
weight *= 10; // 增重
}
return rtn;
}
void main()
{
char str[32];
printf("Input a string :");
gets(str);
printf("%d\n", MyAtoI(str));
}
#include
#include
void reverse(char s[])
{ //字符串反轉(zhuǎn)
int c, i=0, j;
for(j=strlen(s)-1;i
{ c=s[i];
s[i]=s[j];
s[j]=c;
i++;
}
}
void IntegerToString(char s[],int n)
{ int i=0,sign;
if((sign=n)<0)//如果是負(fù)數(shù),先轉(zhuǎn)成正數(shù)
n=-n;
do //從個位開始變成字符,直到最高位,最后應(yīng)該反轉(zhuǎn)
{ s[i++]=n%10+'0';
}while((n=n/10)>0);
//如果是負(fù)數(shù),補(bǔ)上負(fù)號
if(sign<0)
s[i++]='-';
s[i]='\0';//字符串結(jié)束
reverse(s);
}
void main()
{ int m;
char c[100];
printf("請輸入整數(shù)m: ");
scanf("%d",&m);
IntegerToString(c,m);
printf("integer = %d string = %s\n", m, c);
}
嵌入式軟件工程師應(yīng)知道的0x10個基本問題(經(jīng)典收藏版)
C語言測試是招聘嵌入式系統(tǒng)程序員過程中必須而且有效的方法。這些年,我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為面試者和被面試者提供許多有用信息,此外,撇開面試的壓力不談,這種測試也是相當(dāng)有趣的。
從被面試者的角度來講,你能了解許多關(guān)于出題者或監(jiān)考者的情況。這個測試只是出題者為顯示其對ANSI標(biāo)準(zhǔn)細(xì)節(jié)的知識而不是技術(shù)技巧而設(shè)計(jì)嗎?這是個愚蠢的問題嗎?如要你答出某個字符的ASCII值。這些問題著重考察你的系統(tǒng)調(diào)用和內(nèi)存分配策略方面的能力嗎?這標(biāo)志著出題者也許花時間在微機(jī)上而不是在嵌入式系統(tǒng)上。如果上述任何問題的答案是"是"的話,那么我知道我得認(rèn)真考慮我是否應(yīng)該去做這份工作。
從面試者的角度來講,一個測試也許能從多方面揭示應(yīng)試者的素質(zhì):最基本的,你能了解應(yīng)試者C語言的水平。不管怎么樣,看一下這人如何回答他不會的問題也是滿有趣。應(yīng)試者是以好的直覺做出明智的選擇,還是只是瞎蒙呢?當(dāng)應(yīng)試者在某個問題上卡住時是找借口呢,還是表現(xiàn)出對問題的真正的好奇心,把這看成學(xué)習(xí)的機(jī)會呢?我發(fā)現(xiàn)這些信息與他們的測試成績一樣有用。
有了這些想法,我決定出一些真正針對嵌入式系統(tǒng)的考題,希望這些令人頭痛的考題能給正在找工作的人一點(diǎn)幫助。這些問題都是我這些年實(shí)際碰到的。其中有些題很難,但它們應(yīng)該都能給你一點(diǎn)啟迪。
這個測試適于不同水平的應(yīng)試者,大多數(shù)初級水平的應(yīng)試者的成績會很差,經(jīng)驗(yàn)豐富的程序員應(yīng)該有很好的成績。為了讓你能自己決定某些問題的偏好,每個問題沒有分配分?jǐn)?shù),如果選擇這些考題為你所用,請自行按你的意思分配分?jǐn)?shù)。
預(yù)處理器(Preprocessor)
【嵌入式軟件工程師筆試題】相關(guān)文章:
1.軟件工程師筆試題