计算机三数据库上机题库
2022年计算机等级考试三级数据库技术试题及答案

一、选择题(每小题1分,共60分)二、下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
三、四、(1)计算机软件分为系统软件和应用软件两大类,其中处于系统软件核心地位的是五、A)操作系统B)编译程序六、C)数据库管理系统D)网络通信软件七、八、(2)通常一台计算机系统的存储介质包括Cache、内存、磁带和硬盘,其中访问速度最慢的是九、A)CacheB)磁带C)硬盘D)内存十、十一、(3)下列关于计算机系统工作原理的叙述中,哪一条是正确的?十二、A)中央处理器直接对存储器中的数据进行处理十三、B)运算器完成解释和执行指令的工作十四、C)中央处理器可以从输入设备中得到控制指令十五、D)程序和数据均存放在存储器中十六、十七、(4)下列关于异步传输模式ATM技术的叙述中,哪一条是不正确的?十八、A)ATM技术可以满足用户对数据传输的服务质量的要求十九、B)ATM是B-ISDN选择的数据传输技术二十、C)ATM技术的实时性好,但灵活性不够二十一、D)采用ATM技术可满足网络中突发性的通信量二十二、二十三、(5)信息认证是信息安全的一个重要方面,下列哪一项不属于实施信息认证的方法?二十四、A)身份识别B)密钥管理C)数字签名D)消息认证二十五、二十六、(6)电子邮件软件向邮件服务器发送邮件时使用的协议是二十七、A)SMTPB)POP3C)IMAPD)MIME二十八、二十九、(7)以下关于数据的逻辑结构的叙述中,哪一条是不正确的?三十、A)数据的逻辑结构是数据间关系的描述三十一、B)数据的逻辑结构不仅反映数据间的逻辑关系,而且反映其在计算机中的存储方式三十二、C)数据的逻辑结构分为线性结构和非线性结构三十三、D)树形结构是典型的非线性结构三十四、三十五、(8)以下关于广义表的叙述中,哪一条是正确的?三十六、A)广义表是0个或多个单元素或子表组成的有限序列三十七、B)广义表至少有一个元素是子表三十八、C)广义表不可以是自身的子表三十九、D)广义表不能为空表四十、四十一、(9)在包含1000个元素的线性表中实现如下各运算,哪一个所需的执行时间最短?四十二、A)线性表按顺序方式存储,查找关键码值为666的结点四十三、B)线性表按链接方式存储,查找关键码值为666的结点四十四、C)线性表按顺序方式存储,查找线性表中第900个结点四十五、D)线性表按链接方式存储,查找线性表中第900个结点四十六、四十七、(10)在包含1000个元素的线性表中实现如下各运算,哪一个所需的执行时间最长?四十八、A)线性表按顺序方式存储,在线性表的第100个结点后面插入一个新结点四十九、B)线性表按链接方式存储,在线性表的第100个结点后面插入一个新结点五十、C)线性表按顺序方式存储,删除线性表的第900个结点五十一、D)线性表按链接方式存储,删除指针P所指向的结点五十二、五十三、第(11)-(13)题基于下图所示的二叉树:五十四、五十五、(11)该二叉树对应的树林包括几棵树?五十六、A)1B)2C)3D)4五十七、五十八、(12)如果用llink-rlink法存储该二叉树,则各结点的指针域中共包含多少个空指针?五十九、A)6B)8C)10D)12六十、六十一、(13)如果将该二叉树存储为对称序线索二叉树,则结点H的左线索指向哪一个结点?六十二、A)结点AB)结点CC)结点ED)结点G六十三、六十四、(14)对n个记录的文件进行归并排序,所需要的辅助存储空间为六十五、A)O(1)B)O(n)C)O(log2n)D)O(n2)六十六、六十七、(15)以下关于B树运算的叙述中,哪一条是正确的?六十八、A)若插入过程中根结点发生分裂,则B树的高度加1六十九、B)每当进行插入运算,就在B树的最下面一层增加一个新结点七十、C)若要删除的关键码出现在根结点中,则不能真正删除,只能做标记七十一、D)删除可能引起B树结点个数减少,但不会造成B 树高度减小七十二、七十三、(16)批处理操作系统的主要缺点是七十四、A)系统吞吐量小B)用户不能直接控制其作业的执行七十五、C)不具备并发性D)系统资源利用率不高七十六、七十七、(17)一个进程执行V操作意味着七十八、A)该进程从等待队列进入就绪队列七十九、B)该进程从磁盘调入内存八十、C)可能有另一个进程从等待队列进入就绪队列八十一、D)可能有另一个进程从磁盘调入内存八十二、八十三、(18)设计作业调度算法时,不需要考虑下列哪一个因素?八十四、A)友好的用户界面B)均衡使用资源八十五、C)公平性D)吞吐量大八十六、八十七、(19)进程切换时,系统把即将运行进程的页表的起始地址存放在八十八、A)内存中B)快表中C)寄存器中D)磁盘中八十九、九十、(20)内存与磁盘之间交换信息的最小单位是九十一、A)记录B)数据项C)块D)文件九十二、九十三、(21)在文件系统中,文件的逻辑块与存储介质上物理块存放顺序一致的物理结构是九十四、A)顺序结构B)链接结构C)索引结构D)B树结构九十五、九十六、(22)假设磁盘上的物理块大小为512字节,一个逻辑记录长度为80个字符。
全国计算机等级考试上机考试题库三级数据库技术5

第5套 真考题库试题一、单选题((1)~(20)每题1分,(21)~(30)每题2分,共40分)(1)在数据库系统中,下列映像关系用于提供数据与应用程序间的物理独立性的是()。
A)外模式/模式B)模式/内模式C)外模式/内模式D)逻辑模式/内模式(2)关于数据库视图,下列说法正确的是()。
A)视图一定能提高数据的操作性能B)定义视图的语句可以是任何数据操作语句C)视图可以提供一定程度的数据独立性D)视图的数据一般是物理存储的(3)许多大中型企业出于多种原因建立了数据仓库,以下()不是建立数据仓库的合理理由。
A)将企业的各种应用系统集中在一起B)充分利用企业信息系统生成的各种数据C)解决企业业务应用和数据分析应用的性能冲突D)以面向主题、集成的方式合理的组织数据(4)关于数据库应用系统的设计,有下列说法:Ⅰ.数据库应用系统设计需要考虑数据组织与存储、数据访问与处理、应用设计等几个方面Ⅱ.数据库概念设计阶段,采用自上而下的ER设计时,首先设计局部ER图,然后合并各局部ER图得到全局ER图Ⅲ.在数据库逻辑设计阶段,将关系模式转换为具体DBMS平台支持的关系表Ⅳ.在数据库物理设计阶段,一般需要设计视图和关系模式的完整性约束上述说法正确的是()。
A)Ⅰ、Ⅲ和ⅣB)ⅠC)Ⅱ和ⅢD)Ⅱ和Ⅳ(5)关于数据库应用系统的需求分析工作,下列说法正确的是()。
A)通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明。
B)在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图。
C)数据需求分析的主要工作是要辨识出数据处理中的数据处理流程D)数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标(6)根据数据库应用系统生命周期模型,完成数据库关系模式设计的阶段是()。
A)需求分析B)概念设计C)逻辑设计D)物理设计(7)在SELECT语句中,以下有关ORDER BY子句的叙述中不正确的是()。
全国计算机等级考试上机考试题库三级数据库技术2

第2套 真考题库试题一、单选题((1)~(20)每题1分,(21)~(30)每题2分,共40分)1.下列关于概念数据模型的说法,错误的是()。
A)概念数据模型并不依赖于具体的计算机系统和数据库管理系统B)概念数据模型便于用户理解,是数据库设计人员与用户交流的工具,主要用于数据库设计C)概念数据模型不仅描述了数据的属性特征,而且描述了数据应满足的完整性约束条件D)概念数据模型是现实世界到信息世界的第一层抽象,强调语义表达功能2.在数据库应用系统生命周期中,系统设计完成后就进入到系统实现与部署阶段。
下列关于数据库应用系统实现与部署阶段工作的说法,错误的是()。
A)此阶段会根据数据库逻辑结构和物理结构设计方案以及项目选择的数据库管理系统,编写相关脚本生成数据库结构B)此阶段会将用户原有数据按照新的数据结构导入到新系统中C)此阶段会进行应用系统编码和编码测试,编码测试可以使用白盒测试方法也可以使用黑盒测试方法D)此阶段如果发现系统的功能、性能不满足用户需求,应尽快进行系统升级工作3.存储管理器是数据库管理系统非常重要的组成部分。
下列关于存储管理器的说法,错误的是()。
A)存储管理器负责检查用户是否具有数据访问权限B)为了提高数据访问效率,存储管理器会将部分内存用于数据缓冲,同时使用一定的算法对内存缓冲区中的数据块进行置换C)存储管理器会为编译好的查询语句生成执行计划,并根据执行计划访问相关数据D)存储管理器以事务方式管理用户对数据的访问,以确保数据库并发访问的正确性4.下列叙述中不属于三层B/S结构数据库应用系统特点和操作特征的是()。
A)客户端使用浏览器,浏览器与Web应用服务器之间的通信使用超文本传输协议(HTTP)B)数据库服务器接受应用服务器提出的数据操作请求,对数据库进行相应的操作,并将操作结果返回给应用服务器C)这种结构使客户端和服务器能在不同的系统间通信,但对客户机配置要求较高,且应用软件维护代价也较大D)这种结构不受时空限制,使用者可以在全球任何地方,任何时间请求数据库应用系统提供的各种数据服务5.实体联系模型简称ER模型,是数据库设计常用的一种建模方法。
全国计算机等级考试上机考试题库三级数据库技术3

第3套真考题库试题一、单选题((1)~(20)每题1分,(21)~(30)每题2分,共40分)1.设有关系模式R(A,B,C,D),其函数依赖集为F={A->D,B->D,C->D}。
如果将R分解为R1(A,B,C)和R2(C,D),则该分解是()。
A)同时保持函数依赖和无损连接的分解B)保持函数依赖但不保持无损连接的分解C)保持无损连接但不保持函数依赖的分解D)既不保持函数依赖也不保持无损连接的分解2.下面关于模式分解的说法,错误的是()。
A)分解并不总能提高查询效率B)分解通常使得涉及属性少的查询执行效率更高C)分解通常使得简单的更新事务执行效率更高D)分解总是能降低存储空间的要求,因为它能消除冗余数据3.设有关系表:职工(职工号,姓名,领导职工号),其中职工号是主码,领导职工号是外码。
当前表中没有任何数据。
现在依次向该表中插入如下数据(1)(e1,Tom,e2)(2)(e3,Jerry,null)(3)(null,Foo,null)(4)(e2,Fake,e2)(5)(e1,Ghost,e3)(6)(e4,Who,e1)则最终该表中有()行数据。
A)2B)3C)4D)54.数据库物理设计阶段是根据数据库逻辑设计的结果设计合适的数据库物理结构。
下列关于数据库物理设计的说法,错误的是()。
A)物理设计着眼于数据库底层的物理存储与存取,与操作系统和硬件环境及数据库管理系统密切相关B)物理设计时需要合理安排不同的存储介质,索引文件一般存储在高速磁盘中,日志文件可以考虑存储在磁带中C)物理设计过程中需要考虑设置合理的数据库管理系统参数和操作系统相关参数D)物理设计过程中需要考虑RAID级别、操作系统的文件管理机制、数据库管理系统支持的索引类型5.三层浏览器/服务器架构是现在比较流行的应用系统架构。
下列关于此架构的说法,错误的是()。
A)表示层使用Web浏览器实现,位于客户端,一般无需安装其他程序B)数据层位于数据库服务器,由DBMS完成数据存储和数据存取等数据管理功能C)此架构将人机交互、应用业务逻辑和数据管理三类功能分离,提高了可维护性D)与二层的客户/服务器架构相比,此架构在交互性、运行速度方面优势明显6.设有下列关于数据库分析、设计与实现的工作:Ⅰ.用概念数据模型表示数据对象的特征及其相互间的关联关系Ⅱ.进行数据库的备份与恢复等日常维护Ⅲ.在ER图的基础上确定数据库关系模式Ⅳ.调整数据库逻辑模式,确定文件组织与存取方式,评估物理模式Ⅴ.考虑分析DBAS运行过程中备份数据库策略,如备份时间点和备份周期Ⅵ.事务和应用程序的编码及测试上述工作中,属于DBAS系统设计阶段工作的是()。
全国计算机等级考试上机考试题库三级数据库技术9

第9套新增真考试题一、单选题((1)~(20)每题1分,(21)~(30)每题2分,共40分)1.下列不属于数据库应用系统物理设计阶段活动的是()。
A)数据库物理结构设计B)数据库事务详细设计C)应用程序详细设计D)数据库备份与恢复设计2.在一个ER图中,包含三个实体集,两个二元一对多联系,两个二元多对多联系,则将该ER图转化为关系模型后,得到的关系模式个数是()。
A)4个B)5个C)6个D)7个3.DFD建模方法由四种基本元素组成,其中用来描述数据的提供者或使用者的是()。
A)数据流B)处理C)数据存储D)外部项4.从功能角度数据库应用系统可以划分为四个层次,其中负责与DBMS交互以获取应用系统所需数据的是()。
A)表示层B)业务逻辑层C)数据访问层D)数据持久层5.现有商品表(商品号,商品名,商品价格,商品描述),销售表(顾客号,商品号,销售数量,销售日期)。
关于性能优化有以下做法:Ⅰ.因为很少用到商品描述属性,可以将其单独存储Ⅱ.因为经常按照商品名查询商品的销售数量,可以在销售表中添加商品名属性Ⅲ.因为经常执行商品表和销售表之间的连接操作,可以将它们组织成聚集文件Ⅳ.因为经常按照商品号对销售表执行分组操作,可以将销售表组织成散列文件以上做法中,正确的是()。
A)仅Ⅰ和Ⅱ和ⅢB)仅Ⅰ、Ⅱ和ⅣC)仅Ⅱ、Ⅲ和ⅣD)全部都是6.已知有关系:学生(学号,姓名,年龄),对该关系有如下查询操作:SELECT学号FROM学生WHERE姓名LIKE′张%′AND年龄!=15为了加快该查询的执行效率,应该()。
A)在学号列上建索引B)在姓名列上建索引C)在年龄列上建索引D)在学号和年龄列上建索引7.已知有关系R(A,B,C),其中A是主码,现有如下创建索引的SQL 语句:CREATE CLUSTERED INDEX idx1 ONR(B)则下列说法中正确的是()。
A)idx1既是聚集索引,也是主索引B)idx1是聚集索引,但不是主索引C)idx1是主索引,但不是聚集索引D)idx1既不是聚集索引,也不是主索引8.在完成数据库的物理设计之后,就进入数据库系统的实施阶段。
全国计算机三级《数据库技术》练习题及答案

全国计算机三级《数据库技术》练习题及答案1.以下属于非容器类控件的是(b)A.FormbelC.pageD.Container2.不可以作为文本框控件数据的是(d)A.数值型字段B.内存变量C.字符型字段D.备注型字段3.视图设计器中比查询设计器中多出的选项卡是(d)A.字段B.排序依据C.联接D.更新条件4.在"添加表和视图"窗口,"其他"按钮的作用是让用户选择(c)A.数据库表B.视图C.不属数据库的表D.查询5.视图不能单独存在,它必须依赖于(b)A.视图B.数据库C.数据表D.查询6.默认查询的输出形式是(d)A.数据表B.图形C.报表D.浏览7.实现多查询的数据可以是(c)A.远程视图B.数据库C.数据表D.本地视图8.有关@…SAY…GET…语句中的校验子句表达正确的选项是(c)A.RANGE子句是非强制校验,如果输入的数据超过或等于给定上、下限,那么提示出错B.VALID子句是强制校验,如果输入的数据使条件表达式为真或数值表达式的值不等于零,那么报警并提示出错C.RANGE非强制校验,只有当的变量发生了变化,并按了回车键才予以校验,在给定的初值超过上限或下限时,如果是用光标键移出当前区,那么不会提示无效。
D.VALID强制校验,在初值使条件表达式为假或使数值表达式为零时,只要按下回车键,就实施校验,并提示正确的数据范围9.下面语句()的格式是正确的。
BA.@10,10,20,20CLEARB.@10,10C.@10.10,D.CLEARFROM10,10TO20,2010.有关自定义函数的表达,正确的选项是(c)A.自定义函数的调用与标准函数不一样,要用DO命令B.自定义函数的最后完毕语句可以是RETURN或RETRYC.自定义函数的RETURN语句必须送返一个值,这个值作为函数返回值D.调用时,自定义函数名后的括号中一定写上形式参数11.下面有关命令SETDEVICETOPRINTER的表达正确的选项是(c)A.该命令的功能是开关打印设备B.该命令的功能是将打印机联机C.该命令的功能是设置@…SAY命令的输出定向为打印机D.该命令的功能是设置"?"或"??"命令的输出定向为打印机12.有关SCAN循环构造,表达正确的选项是(b)A.SCAN循环构造中的LOOP语句,可将程序流程直接指向循环开始语句SCAN,首先判断EOF()函数的真假B.在使用SCAN循环构造时,必须翻开某一个数据库C.SCAN循环构造的循环体中必须写有SKIP语句D.SCAN循构造,如果省略了子句、FOR和WHILE条件子句,那么直接退出循环13.有关FOR循环构造,表达正确的选项是(c)A.对于FOR循环构造,循环的次数是的B.FOR循环构造中,可以使用EXIT语句,但不能使用LOOP语句C.FOR循环构造中,不能人为地修改循环控制变量,否那么会导致循环次数出错D.FOR循环构造中,可以使用LOOP语句,但不能使用EXIT语句14.有关@…SAY…GET…语句中的功能符和格式符的使用正确的选项是(d)A.PICTURE指定的功能符是位对位进展格式控制,即一对一格式化,功能符使用时不用字符定界符B.FUNCTION子句指定的格式符能控制所有位的格式,即整体格式化,格式符使用时要用字符定界符C.FUNCTION子句既可以使用格式符也可以使用功能符,格式符前面必须加符号@二者之间用空格分开D.PICTURE子句既可以使用格式符也可以使用功能符,功能符前面必须加符号@。
全国计算机等级三级数据库上机题库100题

{
temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
}
for(i=0;i<10;i++) /*将排序后的前10个数存入数组bb中*/
bb[i]=aa[i];
}
7. 函数ReadDat( )的功能是实现从文件IN7.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD( ),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT7.DAT中。
/*如果4位数各位上的数字均是奇数*/
{
b[cnt]=a[i]; /*将满足条件的数存入数组b中*/
cnt++; /*统计满足条件的数的个数*/
}
}
for(i=0;i<cnt-1;i++) /*将数组b中的数按从大到小的顺序排列*/
for(j=i+1;j<cnt;j++)
{
a4=a[i]/1000; /*求4位数的千位数字*/
a3=a[i]%1000/100; /*求4位数的百位数字*/
a2=a[i] %100/10; /*求4位数的十位数字*/
a1=a[i] %10; /*求4位数的个位数字*/
if(a4%2!=0 && a3%2!=0 && a2%2!=0 && a1%2!=0)
【答案】
void jsVal()
计算机三级数据库技术题库文档

计算机三级数据库技术题库文档English Answer:1. What is a database?A database is a collection of organized data stored ina computer system. It is designed to provide efficient access to data for various applications and users.中文回答,数据库是一个计算机系统中存储和组织数据的集合。
它的目的在于为各种应用程序和用户提供对数据的有效访问。
2. What are the different types of databases?There are several types of databases, including:Relational databases: Store data in tables with rowsand columns.NoSQL databases: Store data in non-tabular formats forflexibility and scalability.Object-oriented databases: Store data as objects, allowing for complex data modeling.中文回答:数据库有不同的类型,包括:关系型数据库,以表格的形式存储数据,表格包含行和列。
非关系型数据库,以非表格格式存储数据,以提高灵活性和可扩展性。
面向对象数据库,以对象的形式存储数据,允许对复杂数据建模。
3. What is the structure of a database?A database is typically organized into three main components:Tables: Store data in a structured format.Fields: Represent individual pieces of data within a table.Records: Collections of related fields that form a complete row in a table.中文回答:数据库通常由三个主要组件组成:表格,以结构化的格式存储数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.调用函数rwdata(),从IN.dat文件中读取10组数据(m和k值),并嵌套调用primenum函数分别得出array[]数组。
请编写函数primenum(int m,int k,int array[]),该函数的功能是:将紧靠m的k个素数存入数组array并在屏幕上显示。
最后把结果输出到文件OUT.dat中。
例如,若输入3 9,则应输出5 7 11 13 17 19 23 29 31。
注意:部分程序已经给出。
请勿改动主函数main()和输出数据函数rwdata()的内容。
#include <conio.h>#include <stdio.h>void rwdata();void primenum(int m, int k, int array[]){}main(){ int m, n, array[1000];printf("\nPlease enter two integers:");scanf("%d%d", &m, &n);primenum(m, n, array);for (m=0; m<n; m++)printf("%d ", array[m]);printf("\n");rwdata();}void rwdata(){ int m, n, array[1000], i;FILE *readfile, *writefile;readfile = fopen("in.dat", "r");writefile = fopen("out.dat", "w");for (i=0; i<10; i++){ fscanf(readfile, "%d %d", &m, &n);primenum(m, n, array);for (m=0; m<n; m++)fprintf(writefile, "%d ", array[m]);fprintf(writefile, "\n");}fclose(readfile);fclose(writefile);}【知识点播】素数的定义:如果一个数的正因子只有1和这个数本身,那么这个数就是素数。
【题目分析】分析题目可知,题中需要解决的问题就是Primenum函数的功能问题(rwdata 函数功能题中已经给出),而Primenum函数的功能是求在指定数m之后的k个素数,因此本题的关键在于如何判断一个数是素数,之后就可以通过一个for循环来求得在m之后的k 个素数了。
【解题思路】根据素数的定义,本题采用的算法是:首先定义一个变量Value,并把m之后的数逐个赋值给该变量;然后用2~value/2数除value,如果value能被2~value/2之中的任何一个整数整除,则value不是素数,结束循环;如果value不能被2~value/2之间的任一整数整除,则退出循环,然后判断循环变量i是否大于value/2,如果大于,则value 是素数,并将value值赋给array[n],然后n++;再判断n是否大于等于k,如果大于等于k,就完成了程序要求的功能,退出循环,否则value加1,根据以上算法继续进行。
【答案】void primenum(int m, int k, int array[]){ int value = m+1;int half, n = 0, i;while(1){ half = value/2;for (i=2; i<=half; i++)if (value%i == 0)break;if (i > half){ array[n] = value;n++;}if (n >= k)break;value++;}}【容错分析】判断一个数m(大于1)是否素数的简单的算法:枚举2到m/2之间的整数,看能否被m整除,如果能整除,就不是素数,否则是素数。
2.在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。
函数RData()读取这200个数存放到数组original中。
请编写函数numAscend(),其功能是:要求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。
最后调用函数WData(),把结果result 输出到文件OUT.dat中。
例如,处理前:6012 5099 9012 7025 8088处理后:9012 6012 7025 8088 5099注意:部分程序已给出。
请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
#include <stdio.h>#include <string.h>#include <conio.h>int original[200], result[10];void numascend(){}void RData(){ FILE *in;int i;in = fopen("IN.dat", "r");for (i=0; i<200; i++)fscanf(in, "%d,", &original[i]);fclose(in);}void WData(){ FILE *out;int i;out = fopen("OUT.dat", "w");for (i=0; i<10; i++){ printf(" %d", result[i]);fprintf(out, "%d\n", result[i]);}fclose(out);}void main(){ RData();numascend();WData();}【题目分析】首先我们来看看题中要求我们解决的问题有哪些。
①按original数组中各元素数字的后3位数的大小进行升序排列,如果数值相等,则按原先的数值进行降序排列;②取出排序后的original数组中的前10个数依次存入result数组中。
【解题思路】根据上面的分析,编写程序有以下几个步骤:第1步:首先分解出数组中两个元素的后三位,这里采用在两次循环中求出正整数original[i]和original[j]对1000的余数的方法;第2步:然后比较两个数余数的大小,如果正整数original[i]和original[j]对1000的余数不相同,则按照升序进行排序,如果相同,则比较original[i]和original[j]的大小,按照降序进行排序;第3步:利用一个for循环语句把original数组中的前10个数输出给result数组。
【答案】void numascend(){ int i, j, data;for (i=0; i<199; i++)for (j=i+1; j<200; j++){ if (original[i]%1000 > original[j]%1000){ data = original[i];original[i] = original[j];original[j] = data;}else if (original[i]%1000 == original[j]%1000){ if (original[i] < original[j]){ data = original[i];original[i] = original[j];original[j] = data;}}}for (i=0; i<10; i++)result[i] = original[i];}容错分析:数组original[i]中两个数的位置交换要借助中间变量data。
3.已知文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。
其中:金额=单价×数量。
函数RData()读取这100个销售记录并存入结构数组sell中。
请编写函数DescSort(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell 中,最后调用函数WData(),把结果输出到文件OUT.dat中。
注意:部分程序已给出。
请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
#include <stdio.h>#include <string.h>#include <conio.h>#include <stdlib.h>#define MAX 100typedef struct{ char code[5]; /* 产品代码 */char name[11]; /* 产品名称 */int uprice; /* 单价 */int amount; /* 数量 */long sum; /* 金额 */} PRO;PRO sell[MAX];void RData();void WData();void DescSort(){}void main(){ memset(sell, 0, sizeof(sell));RData();DescSort();WData();}void RData(){ FILE *fp;char str[80], ch[11];int i;fp = fopen("IN.dat", "r");for (i=0; i<100; i++){ fgets(str, 80, fp);memcpy(sell[i].code, str, 4);memcpy(sell[i].name, str+4, 10);memcpy(ch, str+14, 4);ch[4] = 0;sell[i].uprice = atoi(ch);memcpy(ch, str+18, 5);ch[5] = 0;sell[i].amount = atoi(ch);sell[i].sum = (long)sell[i].uprice * sell[i].amount;}fclose(fp);}void WData(void){ FILE *fp;int i;fp = fopen("OUT.dat", "w");for (i=0; i<100; i++){ printf("%s %s %4d %5d %5d\n",sell[i].code, sell[i].name, sell[i].uprice, sell[i].amount, sell[i].sum);fprintf(fp, "%s %s %4d %5d %5d\n",sell[i].code, sell[i].name, sell[i].uprice, sell[i].amount, sell[i].sum);}fclose(fp);}【题目分析】首先我们来看看题中要求我们解决的问题有哪些。