您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 重点推荐最新全国计算机等级考试三级(C语言)上机考试试题总结
精品文档你我共享AAAAAA最新全国计算机等级考试三级(C语言)上机考试试题总结第一种:产品销售记录问题:/*已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT1.DAT中。注意:部分源程序存放在PROG1.C中。#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/intsl;/*数量*/longje;/*金额*/}PRO;函数解析://if((sell[i].jesell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)0))是此题的精华所在理解它就理解了这道题的编程道理首先sell[i].jesell[j].je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达,此方法是按照题意一部一部来分析的,是比较保守的编程方法。voidSortDat(){inti,j;PROswap;for(i=0;iMAX-1;i++){for(j=i+1;jMAX;j++)if(sell[i].jesell[j].je){swap=sell[i];sell[i]=sell[j];sell[j]=swap;}elseif((sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)0)){swap=sell[i];sell[i]=sell[j];sell[j]=swap;}}100个产品销售记录排序其余9题说明1)in.dat内容完全相同。2)程序也基本雷同,仅排序的要求不一样。3)考生应熟悉strcmp()函数,否则有的题相当不好处理。试题变化:排序要求:精品文档你我共享AAAAAA按金额从小到大进行排列,若金额相等,则按产品代码从大到小进行排列相应语句:if((sell[i].jesell[j].je)||((sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)0)))排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列相应语句:if((sell[i].jesell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)0))排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从大到小进行排列相应语句:if((sell[i].jesell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)0))排序要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列if((strcmp(sell[i].mc,sell[j].mc)0)||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].jesell[j].je))排序要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列if(strcmp(sell[i].mc,sell[j].mc)0||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].jesell[j].je))排序要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列if((strcmp(sell[i].mc,sell[j].mc)0)||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].jesell[j].je))排序要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列if((strcmp(sell[i].mc,sell[j].mc)0)||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].jesell[j].je))排序要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列if((strcmp(sell[i].dm,sell[j].dm)0)||(strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].jesell[j].je300个四位数问题:300个四位数问题(此类共10题)本类10题中,五题产生数组B,并对B按一定要求排序;其余五题是求平均值。我把它们分成两组五题来讨论。以下为产生数组B之题一:已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()精品文档你我共享AAAAAA把这些数存入数组a中,请编制一函数jsvalue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到文件OUT.DAT。例如:1239,9-1-2-30,则该数满足条件存入数组b中,且个数cnt=cnt+1。8129,9-8-1-20,则该数不满足条件忽略。程序中已定义数组:a[300],b[300],已定义变量:cnt#includeinta[300],b[300],cnt=0;jsvalue(){/**/inti,j,g,s,b,q,t;for(i=0;i300;i++){g=a[i]%10;/*个位的数字*/s=a[i]/10%10;/*十位的数字*/b=a[i]/100%10;/*百位的数字*/q=a[i]/1000;/*千位的数字*/if(g-q-b-s0)b[cnt++]=a[i];for(i=0;icnt-1;i++)for(j=i+1;jcnt;j++)if(b[i]b[j]){t=b[i];b[i]=b[j];b[j]=t;}}/**/}相似题求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。jsvalue(){inti,j,t;for(i=0;i300;i++){for(j=2;jif(a[i]%j==0)break;if(j==a[i])b[cnt++]=a[i];for(i=0;icnt-1;i++)/*排序*/for(j=i+1;jcnt;j++)if(b[i]b[j]){t=b[i];b[i]=b[j];b[j]=t;}}要求:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。精品文档你我共享AAAAAAif(q-b-s-g0)b[cnt++]=a[i];要求:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。if((q+b)==(s+g))b[cnt++]=a[i];: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。程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2inta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;jsvalue(){/**/inti,g,s,b,q;for(i=0;i300;i++){g=a[i]%10;/*个位的数字*/s=a[i]/10%10;/*十位的数字*/b=a[i]/100%10;/*百位的数字*/q=a[i]/1000;/*千位的数字*/if(g-q-b-s0){cnt++;pjz1+=a[i];}elsepjz2+=a[i];if(cnt)pjz1/=cnt;if(cnt300)pjz2/=300-cnt;/**/}之二要求:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。精品文档你我共享AAAAAAif((q+b)==(g+s)){cnt++;pjz1+=a[i];}elsepjz2+=a[i];之三要求:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数小于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。if(g-q-b-s0){cnt++;pjz1+=a[i];}elsepjz2+=a[i];之四要求:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均z值pjz1,以及所有不满足此条件的四位数平均值pjz2。jsvalue(){/**/inti,j,t;for(i=0;i300;i++){for(j=2;jif(a[i]%j==0){pjz2+=a[i];break;}if(j==a[i]){cnt++;pjz1+=a[i];}if(cnt)pjz1/=cnt;if(cnt300)pjz2/=300-cnt;}之五要求:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。if((q+g)==(b+s)){cnt++;pjz1+=a[i];}elsepjz2+=a[i];code:/*200个四位数题:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位精品文档你我共享AAAAAA数字),如果新组成的两个十位数abcd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。程序中已定义数组:a[200],b[200],已定义变量:cnt#include#defineMAX200inta[MAX],
本文标题:重点推荐最新全国计算机等级考试三级(C语言)上机考试试题总结
链接地址:https://www.777doc.com/doc-4155251 .html