资源描述:
《有趣的程序设计题目》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句#defineMax(a,b)(a/b)?a:b2、如何输出源文件的标题和目前执行行的行数intline=__LINE__;char*file=__FILE__;cout<<"filenameis"<<(file)<<",lineis"<3、两个数相乘,小数点后位数没有限制,请写一个高精度算法4、写一个病毒while(1){int*p=newint[10000000];}5、不使用额外空间,将A,B两链表的元素交*归并6、将树序列化转存
2、在数组或链表中structst{inti;shorts;charc;};sizeof(structst);7、char*p1;void*p2;intp3;charp4[10];sizeof(p1...p4)=?8、4,4,4,10二分查找快速排序双向链表的删除结点1,程序设计(可以用自然语言来描述,不编程):C/C++源代码中,检查花括弧(是"("与")","{"与"}")是否匹配,若不匹配,则输出不匹配花括弧所在的行与列。2,巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字
3、之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。3.两个有序数组的合并,写一个完整的程序4,打印一个N*N的方阵,N为每边字符的个数(3〈N〈20),要求最外层为"X",第二层为"Y",从第三层起每层依次打印数字0,1,2,3,...例子:当N=5,打印出下面的图形: XXXXX XYYYX XY0YX XYYYX XXXXX1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。//假设线性表的双向链表存储结构typedef struct DulNode{ st
4、ruct DulNode *prior; //前驱指针 ElemType data; //数据 struct DulNode *next; //后继指针}DulNode,*DuLinkList;//删除操作Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){ if(!(p=GetElemP_DuL(L,i))) //此处得到i位置的节点指针,如果有需要也得写出具体函数实现 return ERROR; e=p->d
5、ata; p->prior->next=p->next; p->next->prior=p->prior; free(p); return OK;}//插入操作Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e){ if(!(p=GetElemP_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->da
6、ta=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return OK;}2.写一个函数,将其中的t都转换成4个空格。该函数命名为convert,参数的意义为:*strDest目的字符串,*strSrc源字符串,length源字符串的长度函数实现为:char* convert(char *strDest, const char *strSrc,int length){ char * cp = strDest;
7、int i=0; while(*strSrc && i8、inknode{intdata;structlinknode*next;}node;//将一个链表逆置node*reverse(node*head){node*p,*q,*r;p=head;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next=NULL;head=p;returnhead;}2写出程序删除链表中的所有接点voiddel_all(node