欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    全国软件专业人才设计与开发大赛题目样例_—_c语言_副部分答案.doc

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

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

    全国软件专业人才设计与开发大赛题目样例_—_c语言_副部分答案.doc

    全国软件专业人才设计与开发大赛题目样例 c语言1. 单项选择样例l int k = x>y? (x>z?x:z) : (y>z?y:z) 语句的目的是:(A) 求 x, y, z 最大值(B) 求 x, y, z 最小值(C) 求 x, y, z 中间值(D) 求 x, y, z 平均值l 定义:char p20; 那么,&p, p, &p0 的区别是:(A) &p, &p0 不能作为左值变量,而p可以。(B) 它们所表达的数值不同。(C) p在栈中,而p0在堆中(D) 没有区别2. 多项选择样例l 如何让一个函数返回大量的数据?(A) 使用公开的静态空间(B) 定义大量的形参(C) 让被调函数申请空间并返回该指针,主调函数用后负责释放该空间。(D) 让主调函数申请空间并传入该指针,被调函数用后负责释放空间。(E) 让主调函数传入指向指针的指针。3. 程序填空题样例l 如果只提供加减乘除的根本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,那么问题解决。否那么用结果与所猜的数字的平均值再去试除.假设待开方的数字为 double a;double t = a / 2 ;double t2;for(;)t2 = a / t;if(fabs(t-t2)<0.001) break;t = _;4. 编程题样例高职在电梯、家用电器中,随处可见数码管显示的应用。一般是7个发光管组成8字形的排列,可以显示0-9的数字。我们可以给这7个发光管编号,以便区分它们:0 号管3 号管1号管2号管6 号管4号管5号管我们给出了一个用于模拟这个显示过程的程序,并提供了源代码。输入数字,可以在控制台示意这些数字的对应数码管显示的效果,亮的管显示为“, 不亮的管显示为“.。程序的主要用途是:决定哪个数字由哪些点亮的数码管组成。因为不能控制真的数码管,所以采用了一个字符缓冲区来模拟效果。运行ShowDigit.exe文件,可以看到最终的效果。我们给出的源代码含有假设干错误或缺陷对照ShowDigit.exe的效果,请考生予以指出并完善。1. 指出错误的原因、位置,并改正。2. 未完成的功能按比率放大需要选手独立完成。提交源代码和简要注释。l 参考与解答:本文附件:3. 提供了可运行的exe程序4. 提供了包含假设干错误或缺陷的源程序5. 提供了全部源程序不给考生/ ShowDigit.cpp : Defines the entry point for the console application./#include "stdafx.h"#include "stdlib.h"#include "conio.h"#include "string.h"/*这是每个数字对应的数码管号的矩阵例如第一行表示数字0所对应的数码管的标号为0 1 2 3 5 6 7也就是说只有3号数码管是暗的,其它的数码管都是点亮的再如:数字8所对应的所有数码管都是亮的。数码管的标号是按照从上到下,从左到右的顺序进行的,以下示意图: 00001 21 2 33334 54 5 6666*/static int MX107 = 1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1;/*这是用于模拟显示效果的缓冲因为无法驱动真正的数码管,我们把要驱动的数码管所在的位置“描绘到缓冲区中每个缓冲区只能描绘1个数字,缓冲区“像素数为:7x4比方,3号数码管在缓冲区中的描绘为:.再比方,5号管描述为:.注意,不同数码管所占据的模拟位置稍有重叠,这并不影响效果。*/static char BUF174;static char BUF274;static char BUF374;void init_buf(char p4)for(int i=0; i<7; i+)for(int j=0; j<4; j+)pij = '.'void write_one_to_buf(char buf4, int n)int i;switch(n)case 0:for(i=0; i<4; i+) buf0i = ''break;case 1:for(i=0; i<4; i+) bufi0 = ''break;case 2:for(i=0; i<4; i+) bufi3 = ''break;case 3:for(i=0; i<4; i+) buf3i = ''break;case 4:for(i=0; i<4; i+) bufi+30 = ''break;case 5:for(i=0; i<4; i+) bufi+33 = ''break;case 6:for(i=0; i<4; i+) buf6i = ''break;void show_buf()printf("n");for(int i=0; i<7; i+)for(int j=0; j<4; j+)printf( "%c", BUF1ij);printf(" ");for(j=0; j<4; j+)printf( "%c", BUF2ij);printf(" ");for(j=0; j<4; j+)printf( "%c", BUF3ij);printf("n");/ lk: 水平放大系数, hk: 垂直放大系数void show_buf_big(int lk, int hk)/ 限制参数的幅度if(lk<1) lk = 1;if(lk>5) lk = 5;if(hk<1) hk = 1;if(hk>5) hk = 5;printf("n");for(int i=0; i<7; i+)for(int m=0; m<hk; m+)for(int j=0; j<4; j+)for(int k=0; k<lk; k+)printf( "%c", BUF1ij);printf(" ");for( j=0; j<4; j+)for(int k=0; k<lk; k+)printf( "%c", BUF2ij);printf(" ");for( j=0; j<4; j+)for(int k=0; k<lk; k+)printf( "%c", BUF3ij);printf("n");void show_buf_lean()printf("n");for(int i=0; i<7; i+)for(int k=7; k>i; k-)printf(" ");for(int j=0; j<4; j+)printf( "%c", BUF1ij);printf(" ");for(j=0; j<4; j+)printf( "%c", BUF2ij);printf(" ");for(j=0; j<4; j+)printf( "%c", BUF3ij);printf("n");void write_to_buf(char buf74, int digit)/ 某个数字由那些根数码管组成?for(int i=0; i<7; i+)if(MXdigiti = 1)write_one_to_buf(buf, i);int main(int argc, char* argv)for(;)printf("请输入要显示的3位整数100-999, 输入exit退出: ");char buf100;gets(buf);if(strcmp(buf,"exit")=0) break;int n = atoi(buf);if(n<100 | n>999)printf("输入的数字无效!重新输入.n");continue;/ 分解为:千位、百位、个位int a = n / 100; int b = n / 10 % 10;int c = n % 10;init_buf(BUF1);init_buf(BUF2);init_buf(BUF3);/在实际应用中,只要知道了需要显示哪些数码管,就可以直接控制它们,/在此处,我们通过刷新到一个用于输出的缓冲区来模拟这个过程:/不亮的位置,我们用“.来表示,点亮的位置,我们用“来表示write_to_buf(BUF1, a); write_to_buf(BUF2, b);write_to_buf(BUF3, c);show_buf(); / 显示模拟缓冲区中的内容printf("按任意键继续.");getch();show_buf_lean(); / 倾斜显示printf("按任意键继续.");getch();show_buf_big(2,3); / 水平放大2倍,垂直放大3倍printf("按任意键继续.");getch();show_buf_big(5,1); / 水平放大5倍,垂直放大1倍垂直不放大return 0;5. 编程题样例本科我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。16点阵十分常用,是把一个汉字用16 x 16 = 256个像素点来描绘。每个bit代表1个像素点,16点阵的字模需要256个像素点信息,故需32字节字节的排列与16点阵像素的对应关系如下表: 第0字节 第1字节 第2字节 第3字节 . . 第14字节 第15字节也就是说:每1行的16个点由2个字节提供。顺序是:从上到下,从左到右。当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规那么,其中GB2312的编码规那么是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。每个区有94个汉字。区号和序号的编码都是从 0xA1开始为了防止和西文冲突某个汉字的gb2312编码,就可以计算出它在字模文件中所在的绝对位置。我们给出了一个用于理解这个原理的程序,输入一个汉字实际上得到的是它的GB2312编码,就可以从字模文件(HZK16.DAT)中读出字型信息。再设法取出对应位的信息,把“瓷砖铺到屏幕上。程序的执行文件是完整的,可以动手测试它。程序的源代码是残缺的,其中最重要的向屏幕输出函数等待考生完成。1. 请首先写出编码的大体思路500字以内2. 完成编码 不能超过100行

    注意事项

    本文(全国软件专业人才设计与开发大赛题目样例_—_c语言_副部分答案.doc)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开