c语言参考题目-编程大题.doc

c语言参考题目-编程大题.doc

ID:51225607

大小:40.00 KB

页数:8页

时间:2020-03-10

上传者:U-25935
c语言参考题目-编程大题.doc_第1页
c语言参考题目-编程大题.doc_第2页
c语言参考题目-编程大题.doc_第3页
c语言参考题目-编程大题.doc_第4页
c语言参考题目-编程大题.doc_第5页
资源描述:

《c语言参考题目-编程大题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

c语言参考题目---编程大题1.编程大题—数码管显示在电梯、家用电器中,随处可见数码管显示的应用。一般是7个发光管组成8字形的排列,可以显示0-9的数字。我们可以给这7个发光管编号,以便区分它们:0号管3号管1号管2号管6号管4号管5号管我们给出了一个用于模拟这个显示过程的程序,并提供了源代码。输入数字,可以在控制台示意这些数字的对应数码管显示的效果,亮的管显示为“@”,不亮的管显示为“.”。程序的主要用途是:决定哪个数字由哪些点亮的数码管组成。因为不能控制真的数码管,所以采用了一个字符缓冲区来模拟效果。运行ShowDigit.exe文件,可以看到最终的效果。我们给出的源代码含有若干错误或缺陷(对照ShowDigit.exe的效果),请考生予以指出并完善。1.指出错误的原因、位置,并改正。2.未完成的功能(按比率放大)需要选手独立完成。提交源代码和简要注释。参考与解答:错误点:1.输入exit无法退出程序。等号改为strcmp2.数码“1”显示的不正确,修改矩阵即可。3.倾斜的方向弄反了。改为7-i2.编程大题—点阵汉字我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。 16点阵十分常用,是把一个汉字用16x16=256个像素点来描绘。每个bit代表1个像素点,16点阵的字模需要256个像素点信息,故需32字节字节的排列与16点阵像素的对应关系如下表:第0字节第1字节第2字节第3字节..............第14字节第15字节也就是说:每1行的16个点由2个字节提供。顺序是:从上到下,从左到右。当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。每个区有94个汉字。区号和序号的编码都是从0xA1开始(为了避免和西文冲突)已知某个汉字的gb2312编码,就可以计算出它在字模文件中所在的绝对位置。我们给出了一个用于理解这个原理的程序,输入一个汉字(实际上得到的是它的GB2312编码),就可以从字模文件(HZK16.DAT)中读出字型信息。再设法取出对应位的信息,把“瓷砖”铺到屏幕上。程序的执行文件是完整的,可以动手测试它。程序的源代码是残缺的,其中最重要的向屏幕输出函数等待考生完成。1.编程大题—摩尔斯码程序描述:虽然摩尔斯发明了电报,但他缺乏相关的专门技术。他与艾尔菲德·维尔签定了一个协议,让他帮自己制造更加实用的设备。艾尔菲德·维尔构思了一个方案,通过点、划和中间的停顿,可以让每个字元和标点符号彼此独立地发送出去。他们达成一致,同意把这种标识不同符号的方案放到摩尔斯的专利中。这就是现在我们所熟知的美式摩尔斯电码,它被用来传送了世界上第一条电报。国际摩尔斯码表示数字的方案是:0:—————  1:·————  2:··———  3:···——  4:····—  5:·····  6:—····  7:——···  8:———··  9:————·每个“划线”发送一个长音,“点”发送一个短音。如果再加入一些空白规则,可以进一步把数字组合代表某个汉字。假设我们收到了长音、短音、停顿(空白)构成的电报信息,为了方便模拟,我们这里用一个文本文件a.txt记录了这些信息。观察这个文件会发现,它只由点、划、空格组成。我们规定:每个数字发送一个空格,每组数字间空3个空格。 请编写程序,把一串数字编码为摩尔斯码,并写入到b.txt中,再读入a.txt文件,模拟把摩尔斯码还原为多个数字组的过程。可以参看【原型】文件夹中的原型程序输出的效果。注意:程序应该通过控制台窗口来执行(windows开始菜单运行:cmd.exe)。考试系统注意:不同于本科组,考生文件夹中的所有内容都是开放的,不需要屏蔽。纠错参考答案:第21行:FILE*fp=fopen(fname,"");改为:FILE*fp=fopen(fname,"r");需要按读的方式打开文件第37行:intv=*p;改为:intv=*p–'0';否则会造成数组下标越界。注意:修改40行也是可以的。编程参考答案:voidDecodeMorse(char*fname){char*code[10];code[0]="-----";code[1]=".----";code[2]="..---";code[3]="...--";code[4]="....-";code[5]=".....";code[6]="-....";code[7]="--...";code[8]="---..";code[9]="----.";FILE*fp=fopen("a.txt","r");charbuf[6];intn=0;for(;;){intc=fgetc(fp);if(c==EOF)break;if(c=='.'||c=='-'){buf[n++]=(char)c; }if(c==''){if(n>0){buf[n]='';for(inti=0;i<10;i++){if(strcmp(buf,code[i])==0)printf("%c",i+'0');}n=0;}else{printf("");}}}printf(" ");fclose(fp);}1.编程大题—控制台菜单程序描述:菜单是程序中获得用户输入的有效手段。在控制台环境中菜单也能发挥重要作用。本程序的目的是要实现一个动态菜单,即:菜单的级次、内容不是固定的,而是定义在a.txt文件中。程序读入该文件,在内存中动态构建菜单项间的关系,然后运行该菜单。考生可以参看【原型】中提供的可执行文件的效果来理解程序的要求。注意:a.txt中的空白是Tab(制表符),不是空格。编程代码参考答案:for(;;){if(menu->child==NULL){printf(" 您选择了:%s ",menu->text);return;}printf("--------------------- ");MenuItem*p=menu->child;for(inti=1;p!=NULL;i++) {printf("%d.%s ",i,p->text);p=p->next;}printf("%d.上一层 ",i);printf("--------------------- ");printf("请您选择相应的数字:");charbuf[100];gets(buf);intn=atoi(buf);if(n<=0||n>i){printf(" ******选择无效!****** ");continue;}if(n==i){if(menu->parent!=NULL)menu=menu->parent;continue;}p=menu->child;for(intj=0;jnext;menu=p;}1.编程大题—扑克牌发牌程序描述:一副纸牌有52张,4种花色,每种花色13张。我们能用一个整数m就表示出所有的52种情况,规则是:m/13:=0:红心,=1:方块,=2:梅花,=3:黑桃m%13:=0:2,=1:3,=2:4....=8:10,=9:J,=10:Q,=11:K,=12:A比如:m=15就表示:方块4m=38表示:梅花A我们希望用程序模拟1副扑克牌随机抽取13张,发给某人的过程。发牌后需要排序:规则是:先按花色,再按点数。花色的大小顺序是:梅花、方块、红心、黑桃。点数的顺序是:2、3、4、….10、J、Q、K、A。然后,挑选出最大的连续牌型。规则是:连续张数多的大。张数相等的则花色大的大(此时与点数无关)。 可以参看【原型】文件夹中的原型程序输出的效果。注意:程序应该通过控制台窗口来执行(windows开始菜单运行:cmd.exe)。考试系统注意:不同于本科组,考生文件夹中的所有内容都是开放的,不需要屏蔽。纠错参考答案:第78行:staticinttype[]={0,1,2,3};为每种花色赋予的权值与题目的排序要求不符合应改为:staticinttype[]={2,1,0,3};排序的大小顺序反了,可以修改第87行if(compare(x[j],x[j+1])<0)小于号改大于号也可以修改第79行return语句总之:最终的评判标准是:有没有按照题目要求排序(与原型排序效果相同)编程参考答案:voidfind(intx[]){intmax_p=12;intmax_num=1;intp=12;intnum=1;for(inti=11;i>=0;i--){if(x[i]/13==x[i+1]/13&&x[i]%13==x[i+1]%13-1)//同花连续num++;else{if(num>max_num){max_num=num;max_p=p;}p=i;num=1;}}if(num>max_num){max_num=num; max_p=p;}for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭