漓江学堂程序设计与问题求解期末考试参考程序.docx

上传人:夺命阿水 文档编号:429826 上传时间:2023-06-13 格式:DOCX 页数:27 大小:39.75KB
返回 下载 相关 举报
漓江学堂程序设计与问题求解期末考试参考程序.docx_第1页
第1页 / 共27页
漓江学堂程序设计与问题求解期末考试参考程序.docx_第2页
第2页 / 共27页
漓江学堂程序设计与问题求解期末考试参考程序.docx_第3页
第3页 / 共27页
漓江学堂程序设计与问题求解期末考试参考程序.docx_第4页
第4页 / 共27页
漓江学堂程序设计与问题求解期末考试参考程序.docx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《漓江学堂程序设计与问题求解期末考试参考程序.docx》由会员分享,可在线阅读,更多相关《漓江学堂程序设计与问题求解期末考试参考程序.docx(27页珍藏版)》请在课桌文档上搜索。

1、A级难度试题:(最高难度:A档-只需完成一题即可,随机挑选,满分100分)1.编程实现单链表的创建、查询、插入、删除等操作,每次操作以后都要输出单链表,要求在创建单链表的节点时,以输入-1表示结束,所有操作都要求函数实现。#includetypedefstructnode(intdata;structnode*next;NODE;概念结点数据类型constintLEN=SiZeof(NoDE);普通建议用const常量,而不要用define概念符号常量voidPrint(NODE*h)输出链表的内容(NODE*q;q=h-next;while(q!=NULL)/i:=O;while(idata

2、)(Printf(本结点地址x;数据:%d,下一个结点地址%xnRq-data,q-next);q=q-next;voidInsert(intx,NODE*h)将数据X插入表头为h的链表中NODE*p=(NODE*)malloc(LEN);p-data=x;p-next=h-next;h-next=p;Print(h);NODE*Create(intn)创建有n个结点的链表,注意最后生成的结点的数据是与输入顺序相反的(intX;NODE*q;NODE*p=(NODE*)malloc(LEN);p-next=0;p-data=n;链表表头寄存链表中有多少个结点Primf(请输入整数若输入-1则表

3、示创建结束:。;while(l)(scanf(%dz8ix);if(x=-l)break;Insert(x,p);插入新的结点Print(p);returnp;NODE*Find(intlNODE*h)在表头为h的链表中查找x是不是存在(NODE*p;p=h-next;while(p!=NULL)(if(p-data=x)return1;p=p-next;)return0;)voidDel(intxzNODE*h)删除值为x的结点(NODE*p/pre;pre=h;p=h-next;while(p!=NULL&p-data!=x)pre=p;p=p-next;if(p=NULL)PrintfC

4、删除不成功Ielsepre-next=p-next;free(p);)2、编程创建有序单链表,要求从键盘随机输入若干整数,将它们依照从小到大的Jl砺链接起来,输入以-1表示结束,输入时的数不能是有序的,创建和输出链表的操作都要求函数实现。voidSortedInsertOntx,NODE*h)将数据有序插入,形成有序的链表(NODE*pre,*p;NODE*q=(NODE*)malloc(LEN);q-data=x;pre=h;p=h-next;while(p!=NULL&p-datanext;)pre-next=q;q-next=p;)NODE*Create()(int;NODE*head=

5、(NODE*)malloc(LEN);head-next=0;head-data=0;doscanf(%d);if(!=-l)Sortedlnsert(x,head);whilex!=-l);returnhead;)voidmain()(NODEhead=CreateO;Print();/print函数用上面一题的即可,数据结构概念也是)名、性别、身高、地址等信息存入到该文件,然后将学生依照身高从高到低的顺序进行排序,并将排序以后的结果换行后保留到文件原始信息的后面。typedefstructstudentcharstno20rname20zsexzaddress50;/ffiF表示女,M表示

6、男floatheight;STU;STUs10;用于保留学生的数据voidsort(STUsfintn)对有n个学生的数据进行排序,具有通用性()voidInput(STUs,intn)输入n个学生的信息,同时保留到数组和文件中(inti;FILE*fp=fopen(studem.txtTw);/以写的;丁开if(fp=NULL)(printf(cantopenfile!);exit(l);/includestdlib.h就可以利用exit函数)for(i=0;in;i+)(scanf(%s%s%s%f%czstui.stnozstui.name,stui.addresszstui.heigh

7、t,8istui.sex);fprintf(fpz,%s%s%s%f%cnstui.stno,stui.name,stui.address,stui.height,stui.sex);)fclose(fp);)voidOutput(STUsJntn)(inti;FILE*fp=f。PenCStUdenttxta);以追加形式打开文件if(fp=NULL)(printf(wcantopenfile!);exit(l);/includestdlib.h就可以利用exit函数)for(i=0;in;i+)(fprintf(fpz%s%s%s%f%cn,stui.stnozstui.name,stui

8、.address,stui.height,stui.sex);)fclose(fp);)voidmain()(Input(s,10);sort(sz10);Output(s,10);名、性别、号码、城市等)信息存入到文件中,别离提供3种查询方式:通过姓名查,通过城市查在这个城市的所有老友,通过号码查人,这3种查询都要求用函数实现。(注意输入数据的时候至少保证有2个以上老友在同一个城市的情况发生2次)本题的关键是要能查出在同一城市的多个老友,所以查询时,必然要挨个数据去比较,而不是查到就结束,数据输入和保留参考上题即可5、假设一个班上有48个同窗,让系统随机地产生48个同窗的姓名、性别、年龄、身

9、高等信息。输出48个同窗的原始信息,每行8个,分6行输出。然后将数据从头按照性别和身高排序,女生从低到高排在前面,男生从低到高排在后面,然后再将排序以后的结果输出他们的信息,女生在前,男生砺。【特殊要求:(1)必需是全数排序完了以后再进行输出,不能是女生排完后输出女生的,男生排完后输出男生的;(2)排序通过函数挪用实现;(3)输出通过函数挪用实现;(4)要求随机产生的姓名在3个至8个字符之间长度的随机的26个英文字符组成,年龄在18-20之间,身高在160-190公分之间。(5)随机函数的备忘利用示例:#indude*include*includevoidmain()inti;srand(un

10、signed)time(NULL);格当前时间设成通机函数的种子,每次产生的数都不一样/*输出10个醺机收/for(i=0;i10;i+)printf(%dn,rand);可能的运行结果:6929802621987B级难度试题(:B档一需完成系统随机S诞出来的2道题,满分90分)1、将一个正整数分解质因数。(例如:输入90,打印出90=2*3*3*5。)用自概念函数实现。每一个合数都可以写成几个质数相乘的形式。其中每一个质数都是这个合数的因数,叫做这个合数的分解质因数#includeinta20;intfjzys(intk)inti=2,j=0;for(;i=k;i+)当因数i=k时,实现继续

11、寻觅质因数for(;k%i=0;j+)当k整除当前因数,实现该循环,每次循环下标j自加1k=i;使k=kiaj=i;存入因数returnj;voidmain()intm,b,j;Printf(请输入一个整数nk=);scanf(%d,&m);j=fjzys(m);for(b=0;b(j-l);b+)printf(%d,ab);printf(*);)printf(%dn,aj-l);输出最后一个质因数)2、若是恰好等于它的因子之和,这例就称为“完数。例如6=1+2+3.编程输出IOoOO之内的所有完数。用自概念函数实现。#includevoidmain()(intm,i,s;printf(100

12、00之内的完数有:n);for(m=l;m=10000;m+)(s=0;初始化因子之和s为0for(i=l;ivm;i+)寻觅在1到m之间,有多少m的因子if(m%i=0)/尾是m能整除i,贝h为m的因子s=s+i;将因子累加if(s=m)printf(n%dtls);)3、编程实现:任意给定一什进制的整数,将其转换成二进制,按位将其寄存到数组中,然后输出,要求数制转换通过自概念函数来实现。#includeintchange(intx,inta)(intn=-l;while(!=0)(n+;an=x%2;=2;)returnn;)voidmain()(intx,a20,i,n;PrintfC请

13、输入一个十进制数:n);scanf(,%d,);n=change(x,a);Printf(转化为二进制数以后结果为:n)for(i=n;i=0;i-)printf(%ldzai);printf(n);4、从键盘输入某班10个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成(要求用结构体类型来表示绩并输出,若未找到,给出相应提示。要求通过自概念函数实现查找功能。学生的信息-学号和成绩)#include#includestructStudent(charnumber20;intscore;);intlength(char*a)(inti=0;while(ai!=0)(i+;)ret

14、urni;)intequal2(char*a,char*b)intlength(char*a);intIena,Ienbzi;Iena=length(a);Ienb=length(b);if(Iena!=lenb)returnO;for(i=0;ai!=0;i+)(if(ai!=bi)returnO;)return1;)voidmain()(structStudentstu20;intequal2(char*a,char*b);inti;for(i=0;i10;+i)(PrintfC请输入学号和成绩n-);scanf(%s%d,z&stui.number,&stui.score);)chars

15、number20;Printf(请输入要查找的学号:);scanf(%s,snumber);for(i=0;i=10)(PrintfC没有学号为s的学生!,zsnumber);)5、编程实现:输入10名职工的姓名及计算机水平考试的成绩,输出合格人数和合格的职工信息。要求:职工信息的输入和输出别离通过自概念函数来实现,职工信息要求概念成结构体类型。#include#includetypedefstruct(charname20;floatscore;!datatype;voidinput(datatypework);voidprint(datatypework);datatypework10;i

16、nput(work);print(work);)voidinput(datatypework)(inti;PrintfC请输入10名职工的姓名和成绩:n);for(i=0;i10;i+)scanf(%s%f,worki.name,iworki.score);)voidprint(datatypework)(intiznum=0;PrintfCI合格的同窗有:n);for(i=0;i60)(printf(%s,worki.name);num+;printf(n);Printf(合格人数为d人”,num);)6、编程实现:任意输入一组不多于10个的升序罗列的若干个整数,任意输入不多于5个的整数(-

17、1作为输入结束标志),将其插入到该序列中,使其仍然有序。要求:通过自概念函数实现将一个整数插入到一个有序序列中,使其仍然有序。#includevoidins(inta,int*njntx);voidmain()(inta30zx,rJ;m=-l;PrintfC请输入一组不多于10个的升序罗列的若干个整数(-1作为输入结束标志)n)scanf(%d);while(x!=-l)(m+;am=x;SCanfe%d,&x);)Printf(请输入一组不多于5个的升序罗列的若干个整数(-1作为输入结束标志)n);scanf(%dz8ix);while(x!=-l)ins(a,&m,x);scanf(%d

18、);)Printf(插入后结果为:nn);for(i=0;ix&i=0)(ai+l=ai;i-;)ai+l=x;(*n)+;)7、将一个十六进制整数转换为十进制整数。要求通过自概念函数实现。#include#defineMAX1000voidmain()inthtoi(chars);intc,i,flag,flagl;chartMAX;i=0;flag=O;flagl=l;PrimfC请输入一个十六进制数:)while(c=getchar()!=O&i=,0c=,a,8tc=A,8iac=,0,848isi=a,si=A,8isi=,F,)n=n*16+si-,A,+10;)returnn;)

19、8、将一个字符串的辅音字符复制到另一个字符串中。要求源字符串从键盘输入。复制功能要通过自概念函数实习。#includevoidmain()(voidcpy(char,char);PrimfC请输入一段字符串:);gets(str);cpy(strzc);Printfel其中的辅音字符为:%sn,c);)voidcpy(chars,charc)(intij;for(i=0j=0;si!=0;i+)(if(si!=a,i84si!=A,itsi!=e,8itsi!=E848isi!=i,848isi!=T8i8isi!=o8isi!=O&si!=U&si!=U)(cj=si;j+;)cj=,O,;

20、)9、键盘随机输入10个整数到数组中,最大的与第一个元素互换,最小的与最后一个元素互换,输出数组。要求这3个动作都要用自概念函数实现。#includevoidinput(int*num);voidexchange(int*num);voidoutput(int*num);intnum10;input(num);echange(num);output(num);)voidinput(int*num)(inti;Printf(”请输入十个整数:n);for(i=0;i10;i+)scanf(%d,&numi);)voidoutput(int*num)(int*p;Printfe处置后结果为:n);

21、for(p=num;pnum+10;p+)printf(%dp);printf(nn);)int*max,*min,temp,*p;max=min=num;for(p=num+l;p*max)max=p;elseif(*p*min)min=p;)temp=numO;num0=*max;*max=temp;if(max=num)max=mi;(temp=num9;num9=*min;*min=temp;)10、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。*includevoidmain()(inti,krm,n,num50

22、0r*p;Printf(,潮:);scanf(%dwn);p=num;for(i=0;in;i+)(*(p+D=i+l;)i=O;k=O;m=O;while(mn-l)(if(*(p+i)l=O)k+;if(k=3)(*(p+i)=O;k=0;m+;i+;if(i=n)i=O;while(*p=0)p+;PrintfC最后留下来的是原来第d个人.,*P);C级难度试题(:C档一需完成系统IB机S诞出来的2道题,满分80分)1、写一个判断素数的函数来供主函数挪用,在主函数里肯定101-200之间有多少个素数,并输出(1)有多少个素数;(2)所有素数。2、有一对兔子,从诞生后第3个月起每一个月都生

23、一对兔子,这对小兔子长到第三个月后每一个月又生一对兔子,假设兔子都不死,问每一个月的兔子总数为多少?3、输入某年某月某日,判断这r是这一年的第几天?4、有一、二、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(要求输出(1)多少个不重复的3位数;(2)输出所有的不重复的3位数)5、输入两个正整数m和n,求其最大公约数和最小公倍数。(要求有求最大公约数和最小公倍数的两个函数来供主函数挪用实现)6、输入一行字符,别离统计出其中英文大写字母、小写字母、数字和其它字符的个数。7、求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。(例如2+22+222+2222+22222此时,最后的加项是n个a,例子里的a和n别离是2和5.a和n有键盘输入,输出S的值)。8、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上月将剩下的桃子吃掉一半,又多吃了以后天天早上都吃了前已剩下的一半零一。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。9、递归求出fabonacci数列的第10项的值。10、在主函数里面输入一个字符串,在自概念函数里求出该串的长度(不能用Strlen函数)。【说明:难度学生在考试的时颗出来,考试时间都相同,初步定为3个小时,闭卷机试!】

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号