常见的C语言面试编程题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常见的C语言面试编程题

(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(d<0)

{

printf("d的阶乘不存在!");

}

else if(d==0||d==1)

{

m=1;

}

else

{

m=d*factorial(d-1);

}

return m;

}

(2)从一个文件读取整数,对其进行排序,然后再将排序的结果输入到原来文件当中,这

是一个经常考的题目,即考你的文件操作,又考了排序,我在这里用的是选择排序

#include #include

int readtoarray(int *a,FILE *fp)//从文件里将整数读到数组里 {

int i=0;

if(fp==NULL)

{

exit(0);

}

while(fgetc(fp)!=EOF)

{

fscanf(fp,"%d",&a[i]);

printf("%d\n",a[i]);

i++;

}

return i;

}

void writetofile(int a[],FILE *fp,int i)//将数组写到文件里去{

int k = 0;

if(fp==NULL)

{

exit(0);

}

while(k

{

fprintf(fp,"%c%d",' ',a[k++]);

}

}

void selectionSort(int *a,int i)//选择排序 {

int m,n;

int tmp,min;

for(m=0;m

{

min=m;

for(n=m+1;n

{

if(a[n]

min=n;

}

tmp=a[m];

a[m]=a[min];

a[min]=tmp;

}

}

int main()

{

FILE* fp,* fpwrite;

int i;

int a[10];

fp=fopen("2.txt","r");

i=readtoarray(a,fp);

fclose(fp);

selectionSort(a,i);

fpwrite=fopen("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 list\n");

}

while(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 insertNode(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;

相关文档
最新文档