1、经典c语言笔试题100、有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中.#include#includeint main(int argc,char* argv) FILE* fp; int i,j,k,num,NUM; char c50,t,ch;if(fp=fopen(A,r)=NULL) /*can be replaced by open * int fd=open(A,O_RDONLY|O_CREAT);*/ printf(fileA cannot be openedn); exit(0); printf(nA content
2、s are:n);for(i=0;(ch=fgetc(fp)!=EOF;i+)/*一个字符一个字符读*/ ci=ch; putchar(ci); num=i+1;fclose(fp);if(fp=fopen(B,r)=NULL) printf(fileB cannot be openedn); exit(0); printf(nB contents are :n);for(i=0;(ch=fgetc(fp)!=EOF;i+) cnum+i=ch; putchar(cnum+i); fclose(fp);NUM=num+i+1;for(k=0;kNUM-1;k+)/*冒泡排序*/ for(j=0
3、;jcj+1) t=cj; cj=cj+1; cj+1=t; printf(nC fileis:n);fp=fopen(C,w);for(i=0;iNUM;i+) putc(ci,fp);/*将字符一个个写入文件中*/ putchar(ci);/*一个个输出字符*/fclose(fp);return 1; 86.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)#include#includevoid BubbleSort(int arr, int n) int i,j; int exchange = 1;/交换标志,
4、提高算法效率; int temp; for(i=0;in-1;i+) exchange=0;/本趟排序开始前,交换标志应为假 for(j=0;j arrj) temp=arrj+1; arrj+1=arrj; arrj=temp; exchange=1; /发生了交换,故将交换标志置为真 if(!exchange) /本趟排序未发生交换,提前终止算法 return; int main(int argc,char* argv) int arr5=1,4,2,6,5; int i; BubbleSort(arr, 5); printf(after sort,arr is :n); for(i=0;
5、i5;i+) printf(%3d,arri); return 1; 77.写出二分查找的代码:Int binary_search(int* arr,int key,int size) Intmid; Intlow=0;Int high=size-1;While(lowkey) High=mid-1; ElseIf(arrmidkey) Low=mid+1; Else Return mid;Return -1;补充1:用帅选法查找100之内的质数#include using namespace std;#define N 100int main() /*0100共101个数*/ int sie
6、veN + 1; int i; /step 1:初始化(sievei = 0 表示不在筛中,即不是质数;1表示在筛中) sieve0=sieve1=0; for(int i = 2; i = N; i+) sievei = 1; /step 2:偶数(2的倍数)肯定不是质数,所以应该先筛除 for(i = 2; i = N / 2; i+) sievei * 2 = 0; int p = 2; /第一个质数是2 /step 3:从sieve中删去P的倍数 while(p * p = N) p = p + 1; /选下一个p while(sievep = 0) p+; int t = p * p
7、; int s = 2 * p;/*质数与质数之和包含合数,但质数于合数之和必为质数,提高算法效率*/ while(t = N) sievet = 0; /删除 t = t + s; /step 4:输出结果for(i = 2; i = N; i+) if(sievei != 0) coutidata;p-prior-next=p-next;p-next-prior=p-pror;free(p);p=NULL;/勿忘,否则内存泄露return OK;/插入操作StatusListInsert_DuL(DuLinkList&L,inti,ElemType&e)if(!(p=GetElemP_Du
8、L(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(Linklist H) Linklist p=H-next,q; H-next=NULL; while(p!=NULL) q=p; p
9、=p-next;q-next=H-next; H-next=q; return 0; strcpy 和memcpy 76.已知strcpy函数的原型是char *strcpy(char*strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C+/C 的字符串库函数,请编写函数strcpy。char* stringcpy(char* Des,const char* Src)assert(Des!=NULL) & (Src!=NULL);char* address=Des;while(*Des+=*Src+)!=0);return address;断言assert是一个宏,该宏在assert中,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1