资源描述:
《2020年计算机等级考试三级(C语言)上机考试试题总结.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、计算机等级考试三级(C语言)上机考试试题总结第一种:产品销售记录问题:??/*已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:??金额=单价*数量计算得出。函数readdat()读取这100个销售记录并存入结构数组sell中。请编制函数sortdat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函
2、数writedat()把结果输出到文件out1.dat中。注意:部分源程序存放在prog1.c中。??#definemax100??typedefstruct{??chardm[5];/*产品代码*/??charmc[11];/*产品名称*/??intdj;/*单价*/??intsl;/*数量*/??longje;/*金额*/??}pro;??函数解析://if((sell[i].je>sell[j].je)
3、
4、(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,??sell[j].dm)>0))是此题的
5、精华所在理解它就理解了这道题的编程道理??首先sell[i].je>sell[j].je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。??这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达,此方法是按照题意一部一部来分析的,是比较保守的编程方法。??voidsortdat()??{inti,j;??proswap;??for(i=0;isell[j].je)??{swap=sell[i];sell[i]=sell[j
6、];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()函数,否则有的题相当不好处理。??试题变化:??排序要求:??按金额从小到大进行排列,若金额相等,则按产品代码从大到小进行排列相
7、应语句:??if((sell[i].je>sell[j].je)
8、
9、((sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)<0)))??排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列相应语句:if((sell[i].je0))??排序要求:??按金额从大到小进行排列,若金额相等,则按产品代码从大到小进行排列相应语句:??if((sell[i].je0)
10、
11、(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sel
12、l[j].je))??排序要求:??按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列??if(strcmp(sell[i].mc,sell[j].mc)>0
13、
14、(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je15、额从大到小进行排列??if((strcmp(sell[i].mc,sell[j].mc)0)
16、
17、(strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].je>sell[j].je????第二类习题300个四位数问题:??300个四位数问题(此类共10题)本类10题中,五题产生数组b,并对b按一定要求排序;??其余五题是求平均值。我把它们分成两组五题来讨论。以下为产生数组b之题一:??已知数据文件in.dat中存有300个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一函数jsvalue(
18、),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数t,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的