嵌入式相关笔试题目汇总
2009-11-12 13:34
483 查看
嵌入式相关笔试题目汇总
1、将一个字符串逆序#include <iostream> 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<val_len; 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<<mystrrev(str1,str); free(str1); str1=NULL;//杜绝野指针 }
2、将一个链表逆序
#include <stdio.h> #include <ctype.h> #include <stdlib.h> 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); }
3、计算一个字节里(byte)里面有多少bit被置1
#incluede<iostream> #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数据 for(bi=0;bi<n;bi++) { //计算该BYTE的8个bit中有多少个1 tt=b[bi]; for(bj=0;bj<8;bj++) { //与1相与或模2结果是否是1?测试当前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<<comb(b,N)<<endl; return 0; }
4、搜索给定的字节(byte)
5、在一个字符串中找到可能的最长的子字符串
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; }
6、字符串转换为整数
int MyAtoI(char str[]) { int i; int weight = 1; // 权重 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)); }
7、整数转换为字符串
#include<stdio.h> #include<string.h> void reverse(char s[]) { //字符串反转 int c, i=0, j; for(j=strlen(s)-1;i<j;j--) { 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)//如果是负数,先转成正数 n=-n; do //从个位开始变成字符,直到最高位,最后应该反转 { s[i++]=n%10+'0'; }while((n=n/10)>0); //如果是负数,补上负号 if(sign<0) s[i++]='-'; s[i]='/0';//字符串结束 reverse(s); } void main() { int m; char c[100]; printf("请输入整数m: "); scanf("%d",&m); IntegerToString(c,m); printf("integer = %d string = %s/n", m, c); }
相关文章推荐
- 树相关的笔试面试题目汇总
- C/C++ linux 嵌入式相关 带答案的笔试题 汇总~~
- C/C++ linux 嵌入式相关 带答案的笔试题 (2) 汇总~~
- C/C++ linux 嵌入式相关 带答案的笔试题 汇总~~
- C/C++ 笔试、面试题目汇总1——代码相关
- C/C++ 笔试、面试题目汇总1——代码相关
- 嵌入式工程师笔试题目汇总
- 嵌入式工程师笔试题目汇总
- 嵌入式或LINUX相关研发面试题目(转)
- C/C++ 笔试、面试题目大汇总(五)
- C/C++ 笔试、面试题目大汇总(三)
- C/C++ 笔试、面试题目大汇总2
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总(1)
- 嵌入式程序员C语言笔试经典题目
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总
- C/C++ 笔试、面试题目大汇总