{
if (sell[i].je>sell[j].je) /*按金额从小到大进行排列*/ { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy;}
else if (sell[i].je==sell[j].je) /*若金额相同*/
if (strcmp(sell[i].dm,sell[j].dm)<0) /*则按代码从大到小进行排列*/ { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } }
第10 套
已知在文件IN5.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相等, 则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。
注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void SortDat() { int i,j;
PRO xy;
for(i=0;i if(sell[i].je else if(sell[i].je==sell[j].je) /*若金额相同*/ if(strcmp(sell[i].dm,sell[j].dm)>0) /*则按代码从小到大进行排列*/ { xy=sell[i]; sell[i]=sell[j]; sell[j]=xy; } } } 附加题 已知在文件IN9.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中,金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列,排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void SortDat() 6 / 57 { int i,j; PRO xy; for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if (sell[i].je>sell[j].je) /*按金额从小到大进行排列*/ { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } else if (sell[i].je==sell[j].je) /*若金额相同*/ if (strcmp(sell[i].dm,sell[j].dm)>0) /*则按代码从小到大进行排列*/ { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } } } 已知在文件IN9.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中,金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列,排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void SortDat() { int i,j; PRO xy; for(i=0;i<99;i++) for(j=i+1;j<100;j++) { if (sell[i].je>sell[j].je) /*按金额从小到大进行排列*/ { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } else if (sell[i].je==sell[j].je) /*若金额相同*/ if (strcmp(sell[i].dm,sell[j].dm)>0) /*则按代码从小到大进行排列*/ { xy=sell[i];sell[i]=sell[j];sell[j]=xy; } } } 第11套 已知数据文件IN11.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中。请编制一个函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT11.DAT文件。 7 / 57 例如:6712,6+2=7+1,则该数满足条件存入数组bb中,且个数cnt=cnt+1。 8129,8+9≠1+2,则该数不满足条件,忽略。 注意:部分源程序已给出。程序中已定义数组:a[300],b[300];已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 【参考答案】 void jsValue() { int i,thou,hun,ten,data,j; for(i=0;i<300;i++) { thou=a[i]/1000; /*取得四位数的千位数字*/ hun=a[i]00/100; /*取得四位数的百位数字*/ ten=a[i]0/10; /*取得四位数的十位数字*/ data=a[i]; /*取得四位数的个位数字*/ if (thou+data==hun+ten) { b[cnt]=a[i]; cnt++; } } for(i=0;i if(b[i]>b[j]) { data=b[i]; b[i]=b[j]; b[j]=data; } } 第12套 已知数据文件IN14.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编制一个函数jsValue(),其功能是:如果这些四位数各位上的数均是奇数,则统计出满足此条件的个数cnt并把所有满足此条件的四位数按从小到大的顺序存入数组b中,最后main()函数调用写函数writeDat()把结果输出到OUT.DAT文件。 注意:部分源程序已给出。程序中已定义数组:a[200]、b[200];已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 int i,j; /* 定义变量 */ int a1,a2,a3,a4; int temp; for(i=0;i { a1=a[i]; /* 数位分解 */ a2=a[i]0/10; a3=a[i]00/100; a4=a[i]/1000; if(a1%2==1&&a2%2==1&&a3%2==1&&a4%2==1) /* 判断条件 */ b[cnt++]=a[i]; } for(i=0;i 8 / 57 { temp=b[i]; b[i]=b[j]; b[j]=temp; } 第13套 已知数据文件IN13.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足条件的四位数依次存入数组b中,然后对数组b中的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT13.DAT文件。 例如:7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。 8129,8+1≠2+9,则该数不满足条件,忽略。 注意:部分源程序已给出。程序中已定义数组:a[300],b[300];已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 【参考答案】 void jsValue() { int i,thou,hun,ten,data,j; for(i=0;i<300;i++) { thou=a[i]/1000; /*取得四位数的千位数字*/ hun=a[i]00/100; /*取得四位数的百位数字*/ ten=a[i]0/10; /*取得四位数的十位数字*/ data=a[i]; /*取得四位数的个位数字*/ if (thou+hun==data+ten) { b[cnt]=a[i]; cnt++; } } for(i=0;i if(b[i] 第14套 已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat()把这两个文件中的数存入数组a和b中,请考生编写一个函数jsVal(),实现的功能是一次对数组a和b中得数按条件重新组成一个新数并一次存入数组c中,在对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writedat()吧结果输出到文件OUT.DAT中。 组成新数的条件:如果数组a和b中相同的下表位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置的数,把这样组成的新数一次存入数组c中。 例如: a:12 33 24 15 21 b:32 35 17 15 18 9 / 57 c:6161 5394 排序后c:5394 6161 答案:int i,j; /* 定义变量 */ int temp; for(i=0;i if(a[i]%2==1&&b[i]%2==0||a[i]%2==0&&b[i]%2==1) /* 判断条件 */ c[cnt++]=(a[i]<<8)+b[i]; for(i=0;i { temp=c[i]; c[i]=c[j]; c[j]=temp; } 第15套 已知数据文件IN10.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT10.DAT文件。 例如:9123,9-1-2-3>0,则该数满足条件存入数组b,且个数cnt=cnt+1。 9812,9-8-1-2<0,则该数不满足条件,忽略。 注意:部分源程序已给出。程序中已定义数组:a[300],b[300];已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 【参考答案】 jsValue() { int i,thou,hun,ten,data,j; for(i=0;i<300;i++) { thou=a[i]/1000; /*取得四位数的千位数字*/ hun=a[i]00/100; /*取得四位数的百位数字*/ ten=a[i]0/10; /*取得四位数的十位数字*/ data=a[i]; /*取得四位数的个位数字*/ if (thou-hun-ten-data>0) { b[cnt]=a[i]; cnt++; } } for(i=0;i if(b[i]>b[j]) { data=b[i]; b[i]=b[j]; b[j]=data; } } 10 / 57 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库2024年9月计算机三级网络技术机试100套上机题库(最新)(2)在线全文阅读。
相关推荐: