所属类别:开发技术
文章作者:ChenQiQing2009
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])2.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印!方法1:typedef struct val{ int date_1;struct val *next;}*p;void main(void){ char c;for(c=122;c>=97;c--){ p.date=c;p=p->next;}p.next=NULL;} }方法2:node *p = NULL;node *q = NULL;node *head = (node*)malloc(sizeof(node));head->data = ' ';head->next=NULL;node *first = (node*)malloc(sizeof(node));first->data = 'a';first->next=NULL;head->next = first;p = first;int longth = 'z' - 'b';int i=0;while ( i<=longth ){node *temp = (node*)malloc(sizeof(node));temp->data = 'b'+i;temp->next=NULL;q=temp;head->next = temp; temp->next=p;p=q;i++;}print(head);#include string.hmain(void){ char *src="hello,world";char *dest=NULL;dest=(char *)malloc(strlen(src));int len=strlen(str);char *d=dest;char *s=src[len];while(len--!=0)d++=s--;printf("%s",dest);}找出错误!!#include "string.h"#include "stdio.h"#include "malloc.h"main(void){ char *src="hello,world";char *dest=NULL;dest=(char *)malloc(sizeof(char)*(strlen(src)+1));int len=strlen(src);char *d=dest;char *s=src+len-1;while(len--!=0)*d++=*s--;*d='\0';printf("%s",dest);}1. 简述一个Linux驱动程序的主要流程与功能。2. 请列举一个软件中时间换空间或者空间换时间的例子。void swap(int a,int b){int c; c=a;a=b;b=a;}--->空优void swap(int a,int b){a=a+b;b=a-b;a=a-b;}6. 请问一下程序将输出什么结果?char *RetMenory(void){char p[] = “hellow world”;return p;}void Test(void){char *str = NULL;str = RetMemory();printf(str);}RetMenory执行完毕,p资源被回收,指向未知地址。返回地址,str的内容应是不可预测的, 打印的应该是str的地址写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789int continumax(char *outputstr, char *inputstr){char *in = inputstr, *out = outputstr, *temp, *final;int count = 0, maxlen = 0;while( *in != '\0' ){if( *in > 47 && *in < 58 ){for(temp = in; *in > 47 && *in < 58 ; in++ )count++;}elsein++;if( maxlen < count ){maxlen = count;count = 0;final = temp;}}for(int i = 0; i < maxlen; i++){*out = *final;out++;final++;}*out = '\0';return maxlen;}不用库函数,用C语言实现将一整型数字转化为字符串方法1:int getlen(char *s){int n;for(n = 0; *s != '\0'; s++)n++;return n;}void reverse(char s[]){int c,i,j;for(i = 0,j = getlen(s) - 1; i < j; i++,j--){c = s[i];s[i] = s[j];s[j] = c;}}void itoa(int n,char s[]){int i,sign;if((sign = n) < 0)n = -n;i = 0;do{/*以反序生成数字*/s[i++] = n%10 + '0';/*get next number*/}while((n /= 10) > 0);/*delete the number*/if(sign < 0)s[i++] = '-';s[i] = '\0';reverse(s);}方法2:#include using namespace std;void itochar(int num);void itochar(int num){int i = 0;int j ;char stra[10];char strb[10];while ( num ){stra[i++]=num%10+48;num=num/10;}stra[i] = '\0';for( j=0; j < i; j++){strb[j] = stra[i-j-1];}strb[j] = '\0';cout<>num;itochar(num);return 0;}前几天面试,有一题想不明白,请教大家!typedef struct { int a:2;int b:2;int c:1;}test;test t;t.a = 1;t.b = 3;t.c = 1;printf("%d",t.a);printf("%d",t.b);printf("%d",t.c);谢谢!t.a为01,输出就是1t.b为11,输出就是-1t.c为1,输出也是-13个都是有符号数int嘛。这是位扩展问题01111编译器进行符号扩展求组合数: 求n个数(1....n)中k个数的组合....如:combination(5,3)要求输出:543,542,541,532,531,521,432,431,421,321,#includeint pop(int *);int push(int );void combination(int ,int );int stack[3]={0};top=-1;int main(){int n,m;printf("Input two numbers:\n");while( (2!=scanf("%d%*c%d",&n,&m)) ){fflush(stdin);printf("Input error! Again:\n");}combination(n,m);printf("\n");}void combination(int m,int n){int temp=m;push(temp);while(1){if(1==temp){if(pop(&temp)&&stack[0]==n) //当栈底元素弹出&&为可能取的最小值,循环退出break;}else if( push(--temp)){printf("%d%d%d ",stack[0],stack[1],stack[2]);//§ä¨ì¤@?pop(&temp);}}}int push(int i){stack[++top]=i;if(top<2)return 0;elsereturn 1;}int pop(int *i){*i=stack[top--];if(top>=0)return 0;elsereturn 1;}1、用指针的方法,将字符串“ABCD1234efgh”前后对调显示#include #include #include int main(){char str[] = "ABCD1234efgh";int length = strlen(str);char * p1 = str;char * p2 = str + length - 1;while(p1 < p2){char c = *p1;*p1 = *p2;*p2 = c;++p1;--p2;}printf("str now is %s\n",str);system("pause");return 0;}2、有一分数序列:1/2,1/4,1/6,1/8……,用函数调用的方法,求此数列前20项的和#include double getValue(){double result = 0;int i = 2;while(i < 42){result += 1.0 / i;//一定要使用1.0做除数,不能用1,否则结果将自动转化成整数,即0.000000i += 2;}return result;}int main(){printf("result is %f\n", getValue());system("pause");return 0;}有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以7个数为例:{0,1,2,3,4,5,6,7} 0-->1-->2(删除)-->3-->4-->5(删除)-->6-->7-->0(删除),如此循环直到最后一个数被删除。方法1:数组#include using namespace std;#define null 1000int main(){int arr[1000];for (int i=0;i<1000;++i)arr[i]=i;int j=0;int count=0;while(count<999){while(arr[j%1000]==null)j=(++j)%1000;j=(++j)%1000;while(arr[j%1000]==null)j=(++j)%1000;j=(++j)%1000;while(arr[j%1000]==null)j=(++j)%1000;arr[j]=null;++count;}while(arr[j]==null)j=(++j)%1000;cout<using namespace std;#define null 0struct node{int data;node* next;};int main(){node* head=new node;head->data=0;head->next=null;node* p=head;for(int i=1;i<1000;i++){node* tmp=new node;tmp->data=i;tmp->next=null;head->next=tmp;head=head->next;}head->next=p;while(p!=p->next){p->next->next=p->next->next->next;p=p->next->next;}cout<data;return 0;}方法3:通用算法#include #define MAXLINE 1000 //元素个数/*MAXLINE 元素个数a[] 元素数组R[] 指针场suffix 下标index 返回最后的下标序号values 返回最后的下标对应的值start 从第几个开始K 间隔*/int find_n(int a[],int R[],int K,int& index,int& values,int s=0) {int suffix;int front_node,current_node;suffix=0;if(s==0) {current_node=0;front_node=MAXLINE-1;}else {current_node=s;front_node=s-1;}while(R[front_node]!=front_node) {printf("%d\n",a[current_node]);R[front_node]=R[current_node];if(K==1) {current_node=R[front_node];continue;}for(int i=0;i src ) {282 d = (char *)dst + len - 1;283 s = (char *)src + len - 1;284 while ( len >= 4 ) {285 *d-- = *s--;286 *d-- = *s--;287 *d-- = *s--;288 *d-- = *s--;289 len -= 4;290 }291 while ( len-- ) {292 *d-- = *s--;293 }294 } else if ( dst < src ) {295 d = (char *)dst;296 s = (char *)src;297 while ( len >= 4 ) {298 *d++ = *s++;299 *d++ = *s++;300 *d++ = *s++;301 *d++ = *s++;302 len -= 4;303 }304 while ( len-- ) {305 *d++ = *s++;306 }307 }308 return dst;309 }公司考试这种题目主要考你编写的代码是否考虑到各种情况,是否安全(不会溢出)各种情况包括:1、参数是指针,检查指针是否有效2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳出3、读写权限检查4、安全检查,是否会溢出memcpy拷贝一块内存,内存的大小你告诉它strcpy是字符串拷贝,遇到'\0'结束/* memcpy ─── 拷贝不重叠的内存块*/ void memcpy(void* pvTo, void* pvFrom, size_t size){void* pbTo = (byte*)pvTo;void* pbFrom = (byte*)pvFrom;ASSERT(pvTo != NULL && pvFrom != NULL); //检查输入指针的有效性ASSERT(pbTo>=pbFrom+size pbFrom>=pbTo+size);//检查两个指针指向的内存是否重叠while(size-->0)*pbTo++ == *pbFrom++;return(pvTo);}本文出自 51CTO.COM技术博客
相关信息· 下面真正开始讲事件的内容
· KNfoViewer -- NFO 文件查看器
· 编译Php+imap模块时出现的U8T_CANONICAL is mis..
· 几个对图形进行动态处理的dhtml代码
109924
6200
