




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最新全国计算机等级考试三级(C语言)上机考试试题总结 第一种: 产品销售记录问题: /* 已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。 其中: 金额=单价*数量计算得出。函数ReadDat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ), 其功能要求: 按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell中。最后main( )函 数调用函数WriteDat()把结果输出到文件OUT1.DAT中。 注意: 部分源程序存放在PROG1.C中。 #define MAX 100 typedef struct char dm5 ; /* 产品代码 */ char mc11 ; /* 产品名称 */ int dj ; /* 单价 */ int sl ; /* 数量 */ long je ; /* 金额 */ PRO ; 函数解析:/if(selli.jesellj.je)|(selli.je=sellj.je)&(strcmp(selli.dm, sellj.dm)0)是此题的精华所在理解它 就理解了这道题的编程道理 首先selli.jesellj.je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否 相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。 这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达, 此方法是按照题意一部一部来分析的,是比较保守的编程方法。 void SortDat() int i,j; PRO swap; for(i=0; i MAX-1; i+) for(j=i+1; j sellj.je) swap=selli; selli=sellj; sellj=swap; else if(selli.je=sellj.je)&(strcmp(selli.dm,sellj.dm)0) swap=selli; selli=sellj; sellj=swap; 100个产品销售记录排序其余9题说明 1) in.dat 内容完全相同。 2) 程序也基本雷同,仅排序的要求不一样。 3) 考生应熟悉 strcmp() 函数,否则有的题相当不好处理。 试题变化 : 排序要求: 按金额从小到大进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句: if(selli.jesellj.je)|( (selli.je=sellj.je) & (strcmp(selli.dm, sellj.dm) 0) 排序要求: 按金额从大到小进行排列, 若金额相等, 则按产品代码从小到大 进行排列 相应语句: if(selli.je 0) 排序要求: 按金额从大到小进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句: if(selli.je sellj.je)|(selli.je=sellj.je)&(strcmp(selli.dm,sellj.dm)0)|(strcmp(selli.mc,sellj.mc)=0)&(selli.jesellj.je) 排序要求: 按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大 到小进行排列 if(strcmp(selli.mc, sellj.mc)0 | (strcmp(selli.mc, sellj.mc)=0)&(selli.je sellj.je) 排序要求: 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小 到大进行排列 if(strcmp(selli.mc, sellj.mc) sellj.je) 排序要求: 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大 到小进行排列 if(strcmp(selli.mc, sellj.mc) 0)| (strcmp(selli.mc, sellj.mc)=0)&(selli.je 0)|(strcmp(selli.dm,sellj.dm)=0)&(selli.jesellj.je第二类习题 300个四位数问题: 300个四位数问题(此类共10题) 本类10题中,五题产生数组B,并对B按一定要求排序; 其余五题是求平均值。我把它们分成两组五题来讨论。 以下为产生数组B之题一: 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数大于零的个数cnt, 再把所有满足此条件的四位数依次 存入数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。 最后main( )函数调用写函数writeDat()把数组b中的数输出到文 件OUT.DAT。 例如: 1239, 9-1-2-30, 则该数满足条件存入数组b中, 且个数cnt=cnt+1。 8129, 9-8-1-20, 则该数不满足条件忽略。 程序中已定义数组: a300, b300, 已定义变量: cnt #include int a300, b300, cnt=0 ; jsvalue() /*/ int i,j,g,s,b,q,t; for(i=0; i 0) bcnt+=ai; for(i=0; i cnt-1; i+) for(j=i+1; j cnt; j+) if(bi bj) t=bi; bi=bj; bj=t; /*/ 相似题 求出所有这些四位数是素数的个数cnt, 再把所有满足此 条件的四位数依次存入数组b中, 然后对数组b的四位数按从小到 大的顺序进行排序。 jsvalue() int i,j,t; for(i=0; i 300; i+) for(j=2;j if(ai%j=0) break; if(j=ai) bcnt+=ai; for(i=0; i cnt-1; i+) /*排序*/ for(j=i+1; j cnt; j+) if(bi 0) bcnt+=ai; 要求: 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再把所有满足此条件的四位数依次存入 数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。 if(q+b)=(s+g) bcnt+=ai; 类型题三:300个数满足条件的求平均值求满足条件的数的个数、平均值及不满足条件的数的平均 值等,此类也是五题。本处仅给出一个全题,其余题只给出不同 之处。 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出千位数上的数减百位数上的数减十位数上的数减个位 数上的数大于零的个数cnt, 再求出所有满足此条件的四位数平 均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。最后 main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到 OUT.DAT文件。 例如: 9123, 9-1-2-30, 则该数满足条件计算平均值pjz1, 且个数cnt=cnt+1。 9812, 9-8-1-20, 则该数不满足条件计算平均值pjz2。 程序中已定义数组: a300, 已定义变量: cnt,pjz1,pjz2 int a300, cnt=0 ; double pjz1=0.0, pjz2=0.0 ; jsvalue() /*/ int i,g,s,b,q; for(i=0; i 0) cnt+; pjz1+=ai; else pjz2+=ai; if(cnt) pjz1/=cnt; if(cnt300) pjz2/=300-cnt; /*/ 之二 要求: 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。 if(q+b)=(g+s) cnt+; pjz1+=ai; else pjz2+=ai; 之三 要求: 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数小于零的个数cnt, 再求出所有满足此条件的四位数平 均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。 if(g-q-b-s0) cnt+; pjz1+=ai; else pjz2+=ai; 之四 要求: 求出所有这些四位数是素数的个数cnt, 再求出所有满足 此条件的四位数平均z值pjz1, 以及所有不满足此条件的四位数平 均值pjz2。 jsvalue() /*/ int i,j,t; for(i=0; i 300; i+) for(j=2;j if(ai%j=0) pjz2+=ai; break; if(j=ai) cnt+; pjz1+=ai; if(cnt) pjz1/=cnt; if(cntcd, ab必须是偶数且能被5整除, cd必须是奇数,同 时两个新数的十位数字均不为零,则将满足此条件的四位数按从 大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的 个数cnt。 程序中已定义数组: a200, b200, 已定义变量: cnt #include #define MAX 200 int aMAX, bMAX, cnt = 0 ; void jsVal() /*/ int i,j,k,A,B,C,D; for(i=0; i 10*C+D) bcnt+=ai; for(i=0; i cnt-1; i+) k=i; for(j=i+1; j cnt; j+) if(bk =10且ab-cd=0且ab-cd=10且两个数均是奇数, 同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。 类型题五 已知在文件IN.DAT中存有若干个(个数1)%2) totCnt+; totPjz+=xxtotNum; if(totCnt) totPjz/=totCnt; /*/ 类似题一、编制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个 正整数totNum; 2. 求这些数右移1位后, 产生的新数是偶数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平 均值totPjz。 void Calvalue(void) /*/ for(; xxtotNum0; totNum+) if(xxtotNum1)%2=0) totCnt+; totPjz+=xxtotNum; if(totCnt) totPjz/=totCnt; /*/ 类型题六 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharD( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把 结果xx输出到文件OUT2.DAT中。 例: 原文: dAe,BfC. CCbbAA 结果: fedCBA., bbCCAA char xx5080 ; int maxline = 0 ; /* 文章的总行数 */ void SortCharD(void) /*/ int i,j,k,m,n; char ch; for(i=0; i maxline; i+) j=strlen(xxi); /*求出每行的字符个数*/ for(m=0; m j-1; m+) for(n=m+1; n j; n+) if(xxim xxin) ch=xxim; xxim=xxin; xxin=ch; /*/ 处理字符串类型题之二 code: /* 请编制函数ConvertCharA(), 其函数的功能是: 以行为单位 把字符串中的所有小写字母改写成该字母的下一 个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。 void ConvertCharA(void) /*/ int i,j; for(i=0; i maxline; i+) for(j=0; j =a)&(xxijz) xxij+;/*如果不是z的话就把字符向 后移动一个。*/ /*/ 字符串类型题之三 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharA( ), 其函数的功能是: 以行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。 void SortCharD(void) /*/ int i,j,k,m,n; char ch; for(i=0; i maxline; i+) j=strlen(xxi); /*求出每行的字符个数*/ for(m=0; m j-1; m+) for(n=m+1; n xxin) ch=xxim; xxim=xxin; xxin=ch; 字符串处理之四 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数StrCharJL( ), 其函数的功能是: 以 行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一返老还童活动方案
- 六一音乐创意活动方案
- 六好工厂活动方案
- 六年级开学迎接活动方案
- 医师业务考试试题及答案
- 医生普法考试试题及答案
- 目标试题及答案
- 云南安全员c考试题库及答案
- 安全培训综合试题及答案
- 兰州高新区创新活动方案
- 福建省福州市2023−2024学年高一下册期末考数学试卷附解析
- 2024年中国铁路成都局集团有限公司招聘考试《铁路基本常识》真题库及答案
- GB 15892-2009生活饮用水用聚氯化铝
- 深圳市失业人员停止领取失业保险待遇申请表空表
- 态度决定一切细节决定成败主题班会课件
- 《国际私法》教学全套课件
- 基建项目建设综合管理信息系统建设方案
- 一年级下册音乐教案 (简谱) (演唱)同坐小竹排(7) 湘艺版
- 砂石料加工厂劳务外包服务采购项目
- 列车网络控制技术-复习打印版
- NGW型行星齿轮传动系统的优化设计
评论
0/150
提交评论