欢迎来到天天文库
浏览记录
ID:12668853
大小:91.50 KB
页数:10页
时间:2018-07-18
《答案[计算机软件技术基础(2)]》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机软件技术基础(2)要求:1.独立完成,作答时要写明题型、题号;2.作答方式:手写作答或电脑录入,使用A4格式白纸;3.提交方式:以下两种方式任选其一,1)手写作答的同学可以将作业以图片形式打包压缩上传;2)提交电子文档的同学可以将作业以word文档格式上传;4.上传文件命名为“中心-学号-姓名-科目.rar”或“中心-学号-姓名-科目.doc”;5.文件容量大小:不得超过10MB。请在以下五组题目中任选一组作答,满分100分。第一组:一、程序编写题(每小题25分,共100分)(一)在编写的程序中,要求:1)用fu
2、n函数完成:求n以内(不包括n)能被3整除的所有自然数之和,并把结果作为函数值返回。2)在main函数中输入一个自然数,调用fun函数,输出fun函数返回的结果。#includeintfun(intn){intsum,k;sum=0;for(k=1;k3、自然数之和为%d",s);}(一)请编写函数intfun(char*str),该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。#includeintfun(char*str){inti=0,j=0;while(str[i]!=' ')i++;i--;for(;j<=i;i--,j++){if(str[i]!=str[j])break;}if(j<=i)return0;elsereturn1;}voidmai4、n(){chara[100];intflat=0;printf("请输入字符串:");gets(a);flat=fun(a);switch(flat){case1:printf("yes");break;case0:printf("no");break;}}(一)设A、B是两个线性表,其表中元素递增有序,长度分别为m和n。试写一算法分别以顺序存储和链式存储将A和B归并成一个仍按元素值递增有序的线性表C。1.顺序存储SeqList*Seqmerge(SeqListA,SeqListB,SeqList*C){i5、=0;j=0;k=0;//i,i,k分别为顺序表A,B,C的下标while(idata[k]=A.data[il;i++;}else{C->data[k]=B.data[j];j++;}//B中当前元素较小k++;}if(i==m)for(t=j;tdata[k]=B.data[t];k++;}//B表长度大于A表elsefor(t=i;tdata[k]=A.data[t];k++;}6、//A表长度大于B表C->length=m+n;returnC;}2.链式存储voidMergeList_L(Listlink&La,Listlink&Lb,Listlink&Lc){Listlink*pa,*pb,*pc;pa=La->next;pb=Lb->next;Lc=pc=La;//用La的头结点作为Lc的头结点while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->ne7、xt;}}pc->next=pa?pa:pb;free(Lb);}(一)设有一个带头结点的单链表,表中各数据元素为无序的正整数,编写下列2个函数。(1)node*find_min_node(node*h):找出头指针h指向的单链表中数据值最小的结点,打印该结点的数据值,并返回该结点指针;(2)voidswitch_next_node(node*p):若指针p指向的结点数据值为奇数,则将该结点与其直接后继结点的数值交换,若指针p指向的结点无后继结点或数据值为偶数,则不做任何操作;Typedefstructnode{int8、data;structnode*next;}node;Voidmain(){node*head,*p;head=create();/*创建单链表*/p=find_min_node(head);/*查找数据值最小的结点*/switch_next_node(p);}#include#include
3、自然数之和为%d",s);}(一)请编写函数intfun(char*str),该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。#includeintfun(char*str){inti=0,j=0;while(str[i]!=' ')i++;i--;for(;j<=i;i--,j++){if(str[i]!=str[j])break;}if(j<=i)return0;elsereturn1;}voidmai
4、n(){chara[100];intflat=0;printf("请输入字符串:");gets(a);flat=fun(a);switch(flat){case1:printf("yes");break;case0:printf("no");break;}}(一)设A、B是两个线性表,其表中元素递增有序,长度分别为m和n。试写一算法分别以顺序存储和链式存储将A和B归并成一个仍按元素值递增有序的线性表C。1.顺序存储SeqList*Seqmerge(SeqListA,SeqListB,SeqList*C){i
5、=0;j=0;k=0;//i,i,k分别为顺序表A,B,C的下标while(idata[k]=A.data[il;i++;}else{C->data[k]=B.data[j];j++;}//B中当前元素较小k++;}if(i==m)for(t=j;tdata[k]=B.data[t];k++;}//B表长度大于A表elsefor(t=i;tdata[k]=A.data[t];k++;}
6、//A表长度大于B表C->length=m+n;returnC;}2.链式存储voidMergeList_L(Listlink&La,Listlink&Lb,Listlink&Lc){Listlink*pa,*pb,*pc;pa=La->next;pb=Lb->next;Lc=pc=La;//用La的头结点作为Lc的头结点while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->ne
7、xt;}}pc->next=pa?pa:pb;free(Lb);}(一)设有一个带头结点的单链表,表中各数据元素为无序的正整数,编写下列2个函数。(1)node*find_min_node(node*h):找出头指针h指向的单链表中数据值最小的结点,打印该结点的数据值,并返回该结点指针;(2)voidswitch_next_node(node*p):若指针p指向的结点数据值为奇数,则将该结点与其直接后继结点的数值交换,若指针p指向的结点无后继结点或数据值为偶数,则不做任何操作;Typedefstructnode{int
8、data;structnode*next;}node;Voidmain(){node*head,*p;head=create();/*创建单链表*/p=find_min_node(head);/*查找数据值最小的结点*/switch_next_node(p);}#include#include
此文档下载收益归作者所有