经典c语言笔试题.docx

上传人:b****1 文档编号:417476 上传时间:2022-10-09 格式:DOCX 页数:28 大小:52.02KB
下载 相关 举报
经典c语言笔试题.docx_第1页
第1页 / 共28页
经典c语言笔试题.docx_第2页
第2页 / 共28页
经典c语言笔试题.docx_第3页
第3页 / 共28页
经典c语言笔试题.docx_第4页
第4页 / 共28页
经典c语言笔试题.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

经典c语言笔试题.docx

《经典c语言笔试题.docx》由会员分享,可在线阅读,更多相关《经典c语言笔试题.docx(28页珍藏版)》请在冰豆网上搜索。

经典c语言笔试题.docx

经典c语言笔试题

100、

有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中.

#include

#include

intmain(intargc,char*argv[])

{

 FILE*fp;

 inti,j,k,num,NUM;

 charc[50],t,ch;

 if((fp=fopen("A","r"))==NULL)

   /*canbereplacedbyopen

    *intfd=open("A",O_RDONLY|O_CREAT);*/

     {

       printf("fileAcannotbeopened\n");

       exit(0);

     }

 printf("\nAcontentsare:

\n");

 for(i=0;(ch=fgetc(fp))!

=EOF;i++)/*一个字符一个字符读*/

  {

      c[i]=ch;

      putchar(c[i]);

  }

 num=i+1;

 fclose(fp);

if((fp=fopen("B","r"))==NULL)

  {

     printf("fileBcannotbeopened\n");

     exit(0);

  }

 printf("\nBcontentsare:

\n");

for(i=0;(ch=fgetc(fp))!

=EOF;i++)

 {

    c[num+i]=ch;

    putchar(c[num+i]);

  }

fclose(fp);

NUM=num+i+1;

for(k=0;k

 {

   for(j=0;j

   {

      if(c[j]>c[j+1])

             {

         t=c[j];

         c[j]=c[j+1];

         c[j+1]=t;

               }

   }

 }

printf("\nCfileis:

\n");

fp=fopen("C","w");

for(i=0;i

{

   putc(c[i],fp);/*将字符一个个写入文件中*/

   putchar(c[i]);/*一个个输出字符*/

}

fclose(fp);

return1;

}

86.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

#include

#include

voidBubbleSort(intarr[],intn)

{

 inti,j;

 intexchange=1;//交换标志,提高算法效率;

 inttemp;

 for(i=0;i

         {

      exchange=0;//本趟排序开始前,交换标志应为假

      for(j=0;j

                        {

           if(arr[j+1]>arr[j])

                                     {

                temp=arr[j+1];

                arr[j+1]=arr[j];

                arr[j]=temp;

                exchange=1;//发生了交换,故将交换标志置为真

                                        }

                  }

      if(!

exchange)//本趟排序未发生交换,提前终止算法

       return;

         }

}

intmain(intargc,char*argv[])

 {

  intarr[5]={1,4,2,6,5};

  inti;

  BubbleSort(arr,5);

  printf("aftersort,arris:

\n");

  for(i=0;i<5;i++)

           {

      printf("%3d",arr[i]);

             }

  return1;

  }

77.写出二分查找的代码:

  Intbinary_search(int*arr,intkey,intsize)

{

    Intmid;

    Intlow=0;

Inthigh=size-1;

While(low<=high)

    {

      Mid=(low+high)/2;

      If(arr[mid]>key)

          High=mid-1;

      ElseIf(arr[mid]

          Low=mid+1;

    Else

      Returnmid;

}

  Return-1;

}

补充1:

用帅选法查找100之内的质数

#include

usingnamespacestd;

#defineN 100

intmain()

{

     /*0~100共101个数*/

  intsieve[N+1];

  inti;

   //step1:

初始化(sieve[i]=0表示不在筛中,即不是质数;1表示在筛中)

   sieve[0]=sieve[1]=0;

   for(inti=2;i<=N;i++)

                   {

           sieve[i]=1;

                    }

   //step2:

偶数(2的倍数)肯定不是质数,所以应该先筛除

   for(i=2;i<=N/2;i++)

                    {

             sieve[i*2]=0;

                     }

   intp=2;//第一个质数是2

   //step3:

从sieve中删去P的倍数

   while(p*p<=N)

               {

       p=p+1;   //选下一个p

       while(sieve[p]==0)

                             {

                    p++;

                              }

       intt=p*p;

       ints=2*p;/*质数与质数之和包含合数,但质数于合数之和必为质数,提高算法效率*/

       while(t<=N)

                             {

              sieve[t]=0; //删除

              t=t+s;

                              }

                  }

   //step4:

 输出结果

 for(i=2;i<=N;i++)

     {

     if(sieve[i]!

=0)

                       {

           cout<

                       }

      }

 return1;

}

                                 《《《《链表操作考察》》》》

87、实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。

//删除操作

StatusListDelete_DuL(DuLinkList& L,int i,ElemType& e)

{

if(!

(p=GetElemP_DuL(L,i)))

return  ERROR;//容错判断;

e=p->data;

p->prior->next=p->next;

p->next->prior=p->pror;

free(p);

p=NULL;//勿忘,否则内存泄露

returnOK;

}

//插入操作

StatusListInsert_DuL(DuLinkList&L,inti,ElemType&e)

{

if(!

(p=GetElemP_DuL(L,i)))

return  ERROR;

if(!

(s=(DuLinkList)malloc(sizeof(DuLNode))))

 return ERROR;

              /*assert((s=(DuLinkList)malloc(sizeof(DuLNode)))!

=NULL)*/

s->data=e;

s->prior=p;

p->next->prior=s;

p->next=s;

s->next=p->next->next;

return OK;}

88、把一个链表反向。

//链表头插法;

intre_Link(LinklistH)

{

      Linklistp=H->next,q;

      H->next=NULL;

      while(p!

=NULL)

      {

             q=p;

             p=p->next;

             q->next=H->next;

             H->next=q;

      }

      return0;

}

                                                     《《《《strcpy和memcpy》》》》

76.已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数strcpy。

char*stringcpy(char*Des,constchar*Src)

{

assert((Des!

=NULL)&&(Src!

=NULL));

char*address=Des;

while((*Des++=*Src++)!

='\0');

returnaddress;

}

断言assert是一个宏,该宏在<assert>中,

当使用assert时候,给他个参数,即一个判读为真的表达式。

预处理器产生

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1