答案计算机软件技术基础.docx
- 文档编号:4863906
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:12
- 大小:40.42KB
答案计算机软件技术基础.docx
《答案计算机软件技术基础.docx》由会员分享,可在线阅读,更多相关《答案计算机软件技术基础.docx(12页珍藏版)》请在冰豆网上搜索。
答案计算机软件技术基础
计算机软件技术基础
(2)
要求:
1.独立完成,作答时要写明题型、题号;
2.作答方式:
手写作答或电脑录入,使用A4格式白纸;
3.提交方式:
以下两种方式任选其一,
1)手写作答的同学可以将作业以图片形式打包压缩上传;
2)提交电子文档的同学可以将作业以word文档格式上传;
4.上传文件命名为“中心-学号-姓名-科目.rar”或“中心-学号-姓名-科目.doc”;
5.文件容量大小:
不得超过10MB。
请在以下五组题目中任选一组作答,满分100分。
第一组:
一、程序编写题(每小题25分,共100分)
(一)
在编写的程序中,要求:
1)用fun函数完成:
求n以内(不包括n)能被3整除的所有自然数之和,并把结果作为函数值返回。
2)在main函数中输入一个自然数,调用fun函数,输出fun函数返回的结果。
#include
intfun(intn)
{
intsum,k;
sum=0;
for(k=1;k if(k%3==0)sum=sum+k; returnsum; } voidmain() { intn,s; printf("输入自然数n: \n"); scanf("%d",&n); s=fun(n); printf("\nn以内(不包括n)能被3整除的所有自然数之和为%d",s); } (二) 请编写函数intfun(char*str),该函数的功能是: 判断字符串是否为回文? 若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。 回文是指顺读和倒读都是一样的字符串。 #include intfun(char*str) { inti=0,j=0; while(str[i]! ='\0') i++; i--; for(;j<=i;i--,j++) { if(str[i]! =str[j]) break; } if(j<=i) return0; else return1; } voidmain() { chara[100]; intflat=0; printf("请输入字符串: \n"); gets(a); flat=fun(a); switch(flat){ case1: printf("yes\n");break; case0: printf("no\n");break; } } (三) 设A、B是两个线性表,其表中元素递增有序,长度分别为m和n。 试写一算法分别以顺序存储和链式存储将A和B归并成一个仍按元素值递增有序的线性表C。 1.顺序存储 SeqList*Seqmerge(SeqListA,SeqListB,SeqList*C) { i=0;j=0;k=0;//i,i,k分别为顺序表A,B,C的下标 while(i { if(A.data[i] { C->data[k]=A.data[il; i++; } else { C->data[k]=B.data[j]; j++; }//B中当前元素较小 k++; } if(i==m) for(t=j;t { C->data[k]=B.data[t]; k++; }//B表长度大于A表 else for(t=i;t { C->data[k]=A.data[t]; k++; }//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->next; } } 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{ intdata; structnode*next; }node; Voidmain() { node*head,*p; head=create();/*创建单链表*/ p=find_min_node(head);/*查找数据值最小的结点*/ switch_next_node(p); } #include #include typedefstructnode { intdata; structnode*next; }node; structnode*creat(structnode*head) { structnode*p1,*p2; inti=1; p1=p2=(structnode*)malloc(sizeof(structnode)); printf("请输入值,值小于等于0结束,值存放地址为: p1_ADDR=%d\n",p1); scanf("%d",&p1->data); p1->next=NULL; while(p1->data>0) { if(head==NULL) head=p1; else p2->next=p1; p2=p1; p1=(structnode*)malloc(sizeof(structnode)); i=i+1; printf("请输入值,值小于等于0结束,值存放地址为: p%d_ADDR=%d\n",i,p2); scanf("%d",&p1->data); } free(p1); p1=NULL; p2->next=NULL; printf("链表输入结束(END)\n"); returnhead; } voidprint(structnode*head) { structnode*temp; temp=head; printf("\n\n\n链表存入的值为: \n"); while(temp! =NULL) { printf("%8d\n",temp->data); temp=temp->next; } printf("链表打印结束! ! "); } node*find_min_node(node*h) { intmin; node*p,*t; if(h==NULL) returnNULL; p=h->next; t=NULL; min=p->data; while(p! =NULL) { if(p->data { t=p; min=p->data; } p=p->next; } printf("min=%d\n",t->data); returnt; } voidswitch_next_node(node*p) { node*q; intt; q=p->next; if(q==NULL||p->data%2==0) return; t=p->data; p->data=q->data; q->data=t; } voidmain() { node*head,*p; head=NULL; head=creat(head); p=find_min_node(head); switch_next_node(p); print(head); } 第二组: 一、程序编写题(每小题25分,共100分) (一) 编程实现bubble()函数,功能是: 对12个整数进行冒泡排序(要求排成升序)。 #include #include main() {inti,j,t,a[12]={0}; for(i=0;i<12;i++)scanf("%d",&a[i]); for(i=0;i<11;i++) for(j=0;j<11-i;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 答案 计算机软件 技术 基础