常见的C语言面试编程题

上传人:ni****g 文档编号:557506076 上传时间:2024-02-15 格式:DOC 页数:15 大小:71KB
返回 下载 相关 举报
常见的C语言面试编程题_第1页
第1页 / 共15页
常见的C语言面试编程题_第2页
第2页 / 共15页
常见的C语言面试编程题_第3页
第3页 / 共15页
常见的C语言面试编程题_第4页
第4页 / 共15页
常见的C语言面试编程题_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《常见的C语言面试编程题》由会员分享,可在线阅读,更多相关《常见的C语言面试编程题(15页珍藏版)》请在金锄头文库上搜索。

1、(1) 求n的阶乘,这是一个比较简单的题目,有很多方法,但用递归方法是最简单的了:#include #include int main() long factorial(long n); long n; scanf(%ld,&n); printf(%ld,factorial(n); return 0;long factorial(long d)/求阶乘 long m; if(d0) printf(d的阶乘不存在!); else if(d=0|d=1) m=1; else m=d*factorial(d-1); return m;(2)从一个文件读取整数,对其进行排序,然后再将排序的结果输入到原

2、来文件当中,这是一个经常考的题目,即考你的文件操作,又考了排序,我在这里用的是选择排序#include #include int readtoarray(int *a,FILE *fp)/从文件里将整数读到数组里 int i=0; if(fp=NULL) exit(0); while(fgetc(fp)!=EOF) fscanf(fp,%d,&ai); printf(%dn,ai); i+; return i;void writetofile(int a,FILE *fp,int i)/将数组写到文件里去 int k = 0; if(fp=NULL) exit(0); while(ki) fp

3、rintf(fp,%c%d, ,ak+); void selectionSort(int *a,int i)/选择排序 int m,n; int tmp,min; for(m=0;m i-1;m+) min=m; for(n=m+1;n i;n+) if(anamin) min=n; tmp=am; am=amin; amin=tmp; int main() FILE* fp,* fpwrite; int i; int a10; fp=fopen(2.txt,r); i=readtoarray(a,fp); fclose(fp); selectionSort(a,i); fpwrite=fop

4、en(2.txt,w); writetofile(a, fpwrite,i); fclose(fpwrite); return 0;1,单向链表的插入,删除,逆序操作#include #include typedef struct Node int key; struct Node* next;* node;node newNode(int k) node n=(node)malloc(sizeof(node); n-key=k; n-next=NULL; return n;void printlist(node n) if(!n) printf(n is NULL listn); while

5、(n) printf(%d,n-key); printf( ); n=n-next; printf(n);node newList() int k; node head=(node)malloc(sizeof(node); scanf(%d,&k); if(k=0) head=NULL; return head; else node n=newNode(k); head=n; while(k) scanf(%d,&k); if(k!=0) node n1=newNode(k); n-next=n1; n=n-next; n-next=NULL; return head; node insert

6、Node(node n,int p,int k) node n1=newNode(k); node head=(node)malloc(sizeof(node); head=n; if(head=NULL) n1-next=head; return n1; else if(p=1) n1-next=head; head=n1; return head; else int i=2; while(i!=p&(n-next) n=n-next; i+; if(n-next=NULL) printf(the p cant be foundn); return head; else n1-next=n-

7、next; n-next=n1; return head; node deleteNode(node n,int k) node n1=(node)malloc(sizeof(node); node head=(node)malloc(sizeof(node); head=n; if(head=NULL) printf(list is NULLn); return head; else if(head-key=k) head=head-next; return head; while(n-key!=k&n-next) n1=n; n=n-next; if(n=NULL) printf(cant

8、 find the same value as k in this listn); return head; else n1-next=n-next; n=NULL; return head; node reverse(node n) node n110; node head=(node)malloc(sizeof(node); node n2=(node)malloc(sizeof(node); head=n; if(head=NULL) return head; else int i=0; while(head!=NULL) n2=head; head=head-next; n2-next

9、=NULL; n1i=n2; i+; head=n1i-1; for(int j=i-1;j0;j-) n1j-next=n1j-1; return head; int main() node n=newList(); printlist(n); /插入操作 int k,p; scanf(%d,%d,&p,&k); node nn=insertNode(n,p,k); printlist(nn); /删除操作 int q; scanf(%d,&q); node nd=deleteNode(nn,q); printlist(nd); /链表的倒置操作 node m=reverse(n); pri

10、ntlist(m); return 0;2,双向链表的插入删除操作#include #include typedef struct Node int key; struct Node* pre; struct Node* next;* node;node newNode(int i) node n=(node)malloc(sizeof(node); n-key=i; n-pre=NULL; n-next=NULL; return n;node newduplinklist() int i; scanf(%d,&i); node n; if(i=0) n=NULL; return n; n=n

11、ewNode(i); node head=n; int k=1; while(k!=0) scanf(%d,&k); if(k!=0) node n1=newNode(k); n-next=n1; n1-pre=n; n=n1; n-next=head; head-pre=n; return head;int sizeduplinklist(node n) if(n=NULL) return 0; node head=n; int i=1; while(head-next!=n) head=head-next; i+; return i;void print(node n) if(n=NULL) printf(此时链表为空!); else printf(输出链表:n); for(int i=0;ikey); n=n-next; printf(n); node insertNode(node n) int p,k; printf(插入位置p:n); scanf(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号