欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

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

    • 资源ID:429826       资源大小:39.75KB        全文页数:27页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    A级难度试题:(最高难度:A档-只需完成一题即可,随机挑选,满分100分)1.编程实现单链表的创建、查询、插入、删除等操作,每次操作以后都要输出单链表,要求在创建单链表的节点时,以输入-1表示结束,所有操作都要求函数实现。#include<stdio.h>typedefstructnode(intdata;structnode*next;NODE;概念结点数据类型constintLEN=SiZeof(NoDE);普通建议用const常量,而不要用define概念符号常量voidPrint(NODE*h)输出链表的内容(NODE*q;q=h->next;while(q!=NULL)/i:=O;while(i<h->data)(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则表示创建结束:。;while(l)(scanf("%d"z8ix);if(x=-l)break;Insert(x,p);插入新的结点Print(p);returnp;NODE*Find(int×lNODE*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删除不成功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->data<x)(pre=p;p=p->next;)pre->next=q;q->next=p;)NODE*Create()(int×NODE*head=(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表示男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;i<n;i+)(scanf("%s%s%s%f%c"zstui.stnozstui.name,stui.addresszstui.height,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。PenCStUdenttxt<a");以追加形式打开文件if(fp=NULL)(printf(wcantopenfile!");exit(l);/includestdlib.h就可以利用exit函数)for(i=0;i<n;i+)(fprintf(fpz"%s%s%s%f%cn",stui.stnozstui.name,stui.address,stui.height,stui.sex);)fclose(fp);)voidmain()(Input(s,10);sort(sz10);Output(s,10);名、性别、号码、城市等)信息存入到文件中,别离提供3种查询方式:通过姓名查,通过城市查在这个城市的所有老友,通过号码查人,这3种查询都要求用函数实现。(注意输入数据的时候至少保证有2个以上老友在同一个城市的情况发生2次)本题的关键是要能查出在同一城市的多个老友,所以查询时,必然要挨个数据去比较,而不是查到就结束,数据输入和保留参考上题即可5、假设一个班上有48个同窗,让系统随机地产生48个同窗的姓名、性别、年龄、身高等信息。输出48个同窗的原始信息,每行8个,分6行输出。然后将数据从头按照性别和身高排序,女生从低到高排在前面,男生从低到高排在后面,然后再将排序以后的结果输出他们的信息,女生在前,男生砺。【特殊要求:(1)必需是全数排序完了以后再进行输出,不能是女生排完后输出女生的,男生排完后输出男生的;(2)排序通过函数挪用实现;(3)输出通过函数挪用实现;(4)要求随机产生的姓名在3个至8个字符之间长度的随机的26个英文字符组成,年龄在18-20之间,身高在160-190公分之间。(5)随机函数的备忘利用示例:#indude<stdlib.h>*include<stdio.h>*include<time.h>voidmain()inti;srand(unsigned)time(NULL);格当前时间设成通机函数的种子,每次产生的数都不一样/*输出10个醺机收/for(i=0;i<10;i+)printf("%dn",rand);可能的运行结果:6929802621987B级难度试题(:B档一需完成系统随机S诞出来的2道题,满分90分)1、将一个正整数分解质因数。(例如:输入90,打印出90=2*3*3*5。)用自概念函数实现。每一个合数都可以写成几个质数相乘的形式。其中每一个质数都是这个合数的因数,叫做这个合数的分解质因数#include<stdio.h>inta20;intfjzys(intk)inti=2,j=0;for(;i<=k;i+)当因数i<=k时,实现继续寻觅质因数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之内的所有完数。用自概念函数实现。#include<stdio.h>voidmain()(intm,i,s;printf(10000之内的完数有: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%dt"ls);)3、编程实现:任意给定一什进制的整数,将其转换成二进制,按位将其寄存到数组中,然后输出,要求数制转换通过自概念函数来实现。#include<stdio.h>intchange(intx,inta)(intn=-l;while(×!=0)(n+;an=x%2;×=×2;)returnn;)voidmain()(intx,a20,i,n;PrintfC请输入一个十进制数:n);scanf(',%d,×);n=change(x,a);Printf("转化为二进制数以后结果为:n)for(i=n;i>=0;i-)printf("%ld"zai);printf("n);4、从键盘输入某班10个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成(要求用结构体类型来表示绩并输出,若未找到,给出相应提示。要求通过自概念函数实现查找功能。学生的信息-学号和成绩)#include<stdio.h>#include<string.h>structStudent(charnumber20;intscore;);intlength(char*a)(inti=0;while(ai!='0')(i+;)returni;)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;i<10;+i)(PrintfC请输入学号和成绩n-);scanf("%s%d,z&stui.number,&stui.score);)charsnumber20;Printf("请输入要查找的学号:");scanf("%s,snumber);for(i=0;i<10;+i)if(equal2(snumber,stui.number)=1)(Printfe学生s的成绩是:dn",snumberzstui.score);break;)if(i>=10)(PrintfC没有学号为s的学生!,zsnumber);)5、编程实现:输入10名职工的姓名及计算机水平考试的成绩,输出合格人数和合格的职工信息。要求:职工信息的输入和输出别离通过自概念函数来实现,职工信息要求概念成结构体类型。#include<stdio.h>#include<stdlib.h>typedefstruct(charname20;floatscore;!datatype;voidinput(datatypework);voidprint(datatypework);datatypework10;input(work);print(work);)voidinput(datatypework)(inti;PrintfC请输入10名职工的姓名和成绩:n");for(i=0;i<10;i+)scanf("%s%f,worki.name,iworki.score);)voidprint(datatypework)(intiznum=0;PrintfCI合格的同窗有:n);for(i=0;i<10;i+)(if(worki.score>60)(printf(%s",worki.name);num+;printf("n);Printf("合格人数为d人”,num);)6、编程实现:任意输入一组不多于10个的升序罗列的若干个整数,任意输入不多于5个的整数(-1作为输入结束标志),将其插入到该序列中,使其仍然有序。要求:通过自概念函数实现将一个整数插入到一个有序序列中,使其仍然有序。#include<stdio.h>voidins(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("%d"z8ix);while(x!=-l)ins(a,&m,x);scanf("%d"×);)Printf("插入后结果为:nn);for(i=0;i<=m;i+)printf(%5dai);)voidins(inta,int*nzintx)(inti=*n;while(ai>x&&i>=0)(ai+l=ai;i-;)ai+l=x;(*n)+;)7、将一个十六进制整数转换为十进制整数。要求通过自概念函数实现。#include<stdio.h>#defineMAX1000voidmain()inthtoi(chars);intc,i,flag,flagl;chartMAX;i=0;flag=O;flagl=l;PrimfC请输入一个十六进制数:)while(c=getchar()!='O'&&i<MAX&&flagl)(if(c>=,0'c<=,9,c>=,a,8tc<=,f,c>='A,8iac<=,F')(flag=l;ti+=c;)elseif(flag)(ti=,0,;Printfc转化为十进制数为d',htoi(t);printf("n还要继续吗?(输入N或者n终止)c=getchar();if(c='N'c=,n,)flagl=O;else(flag=O;i=0;printf("n请输入一个十六进制数:");)inthtoi(chars)(inti,n;n=0;for(i=0;si!='0'i+)(if(si>=,0,848isi<=,9,)n=n*16+si-,0,;if(si>="a,si<=,f,)n=n*16+si-'a,+10;if(si>='A,8isi<=,F,)n=n*16+si-,A,+10;)returnn;)8、将一个字符串的辅音字符复制到另一个字符串中。要求源字符串从键盘输入。复制功能要通过自概念函数实习。#include<stdio.h>voidmain()(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!='E'848isi!='i,848isi!=T8i8isi!='o'8isi!='O'&&si!=U&&si!='U')(cj=si;j+;)cj=,O,;)9、键盘随机输入10个整数到数组中,最大的与第一个元素互换,最小的与最后一个元素互换,输出数组。要求这3个动作都要用自概念函数实现。#include<stdio.h>voidinput(int*num);voidexchange(int*num);voidoutput(int*num);intnum10;input(num);e×change(num);output(num);)voidinput(int*num)(inti;Printf(”请输入十个整数:n");for(i=0;i<10;i+)scanf("%d",&numi);)voidoutput(int*num)(int*p;Printfe处置后结果为:n");for(p=num;p<num+10;p+)printf("%d"p);printf("nn);)int*max,*min,temp,*p;max=min=num;for(p=num+l;p<num+10;p+)(if(*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的人退出圈子,问最后留下的是原来第几号的那位。*include<stdio.h>voidmain()(inti,krm,n,num500r*p;Printf(,潮:');scanf('%dwn);p=num;for(i=0;i<n;i+)(*(p+D=i+l;)i=O;k=O;m=O;while(m<n-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个月起每一个月都生一对兔子,这对小兔子长到第三个月后每一个月又生一对兔子,假设兔子都不死,问每一个月的兔子总数为多少?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个小时,闭卷机试!】

    注意事项

    本文(漓江学堂程序设计与问题求解期末考试参考程序.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开