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

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

ID:51225607

大小:40.00 KB

页数:8页

时间:2020-03-10

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

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

1、c语言参考题目---编程大题1.编程大题—数码管显示在电梯、家用电器中,随处可见数码管显示的应用。一般是7个发光管组成8字形的排列,可以显示0-9的数字。我们可以给这7个发光管编号,以便区分它们:0号管3号管1号管2号管6号管4号管5号管我们给出了一个用于模拟这个显示过程的程序,并提供了源代码。输入数字,可以在控制台示意这些数字的对应数码管显示的效果,亮的管显示为“@”,不亮的管显示为“.”。程序的主要用途是:决定哪个数字由哪些点亮的数码管组成。因为不能控制真的数码管,所以采用了一个字符缓冲区来模拟效果。运行

2、ShowDigit.exe文件,可以看到最终的效果。我们给出的源代码含有若干错误或缺陷(对照ShowDigit.exe的效果),请考生予以指出并完善。1.指出错误的原因、位置,并改正。2.未完成的功能(按比率放大)需要选手独立完成。提交源代码和简要注释。参考与解答:错误点:1.输入exit无法退出程序。等号改为strcmp2.数码“1”显示的不正确,修改矩阵即可。3.倾斜的方向弄反了。改为7-i2.编程大题—点阵汉字我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方

3、式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。16点阵十分常用,是把一个汉字用16x16=256个像素点来描绘。每个bit代表1个像素点,16点阵的字模需要256个像素点信息,故需32字节字节的排列与16点阵像素的对应关系如下表:第0字节第1字节第2字节第3字节..............第14字节第15字节也就是说:每1行的16个点由2个字节提供。顺序是:从上到下,从左到右。当我们需要

4、记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。每个区有94个汉字。区号和序号的编码都是从0xA1开始(为了避免和西文冲突)已知某个汉字的gb2312编码,就可以计算出它在字模文件中所在的绝对位置。我们给出了一个用于理解这个原理的程序,输入一个汉字(实际上得到的是它的GB2312编码),就可以从字模文件(HZK16.DAT)中读出字型信息。再设法取出对应位的信息,把“

5、瓷砖”铺到屏幕上。程序的执行文件是完整的,可以动手测试它。程序的源代码是残缺的,其中最重要的向屏幕输出函数等待考生完成。1.编程大题—摩尔斯码程序描述:虽然摩尔斯发明了电报,但他缺乏相关的专门技术。他与艾尔菲德·维尔签定了一个协议,让他帮自己制造更加实用的设备。艾尔菲德·维尔构思了一个方案,通过点、划和中间的停顿,可以让每个字元和标点符号彼此独立地发送出去。他们达成一致,同意把这种标识不同符号的方案放到摩尔斯的专利中。这就是现在我们所熟知的美式摩尔斯电码,它被用来传送了世界上第一条电报。国际摩尔斯码表示数字的

6、方案是:0:—————  1:·————  2:··———  3:···——  4:····—  5:·····  6:—····  7:——···  8:———··  9:————·每个“划线”发送一个长音,“点”发送一个短音。如果再加入一些空白规则,可以进一步把数字组合代表某个汉字。假设我们收到了长音、短音、停顿(空白)构成的电报信息,为了方便模拟,我们这里用一个文本文件a.txt记录了这些信息。观察这个文件会发现,它只由点、划、空格组成。我们规定:每个数字发送一个空格,每组数字间空3个空格。请编写程序,

7、把一串数字编码为摩尔斯码,并写入到b.txt中,再读入a.txt文件,模拟把摩尔斯码还原为多个数字组的过程。可以参看【原型】文件夹中的原型程序输出的效果。注意:程序应该通过控制台窗口来执行(windows开始菜单运行:cmd.exe)。考试系统注意:不同于本科组,考生文件夹中的所有内容都是开放的,不需要屏蔽。纠错参考答案:第21行:FILE*fp=fopen(fname,"");改为:FILE*fp=fopen(fname,"r");需要按读的方式打开文件第37行:intv=*p;改为:intv=*p–'0'

8、;否则会造成数组下标越界。注意:修改40行也是可以的。编程参考答案:voidDecodeMorse(char*fname){char*code[10];code[0]="-----";code[1]=".----";code[2]="..---";code[3]="...--";code[4]="....-";code[5]=".....";code[6]="-....";code[7]="--..

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

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

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