1、全国计算机等级考试三级C语言上机题4160题目41 下列程序prog1.c的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT15.DAT中。 其中的S,I,X,N,E各代表一个十进制数字。 部分源程序存在文件prog1.c中。 请勿改动主函数main()和输出数据函数writeDat()的内容。 #include int cnt,sum; void countValue
2、() int s,i,x,n,e,six,nine; for(s=1;s10;s+) for(i=0;i10;i+) for(x=0;x10;x+) for(n=1;n10;n+) for(e=0;e10;e+) six=s*100+i*10+x; nine=n*1000+i*100+n*10+e; if(3*six=2*nine) cnt+;sum+=six+nine; void main() cnt=sum=0; countValue(); printf(满足条件的个数=%dn,cnt); printf(满足条件所有的SIX与NINE的和=%dn,sum); writeDat(); wri
3、teDat() FILE *fp; fp=fopen(OUT15.DAT,w); fprintf(fp,%dn%dn,cnt,sum); fclose(fp); * 题目42 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存
4、入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include #include #include #define MAX 100 typedef struct char dm5; /*产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ PRO; PRO sellMAX; void R
5、eadDat(); void WriteDat(); void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(strcmp(selli.mc,sellj.mc)0|strcmp(selli.mc,sellj.mc)=0&selli.jeSELLJ.JE) xy=selli;selli=sellj;sellj=xy; void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp;
6、char str80,ch11; int i; fp=fopen(IN.DAT,r); for(i=0;i100;i+) fgets(str,80,fp); memcpy(selli.dm,str,4); memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0; selli.dj=atoi(ch); memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl; fclose(fp); void WriteDat() FILE *fp; int i;
7、 fp=fopen(OUT5.DAT,w); for(i=0;i100;i+) printf(%s %s %4d %5d %5dn,selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fprintf(fp,%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fclose(fp); * 题目43 无忧id 82题(只是将结果按“从大到小”排序) 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSo
8、rt(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。 例如:位置01234567 源字符串a b c d e f g h 则处理后字符串 a h c f e d g b 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include char xx2080; void jsSort() int i,j,
9、k,strl; char ch; for(i=0;ixxik) ch=xxij;xxij=xxik;xxik=ch; void main() readDat(); jsSort(); writeDat(); readDat() FILE *in; int i=0; char *p; in=fopen(in.dat,r); while(i20&fgets(xxi,80,in)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+; fclose(in); writeDat() FILE *out; int i; out=fopen(out.dat,w); clrscr();
10、 for(i=0;i20;i+) printf(%sn,xxi); fprintf(out,%sn,xxi); fclose(out); * 题目44 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。 条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字
11、符不参加处理,字符仍放在原位置上。 例如:位置012345678 源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串 h g f e d c b a 8 7 6 5 9 4 3 2 1 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include char xx2080; void jsSort() int i,j,k,strl,half; char temp; for(i=0;i20;i+) strl=strlen(xxi)
12、; half=strl/2; for(j=0;jHALF-1;J+) for(k=j+1;kHALF;K+) if(xxij=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; void main() readDat(); jsSort(); writeDat(); readDat() FILE *in; int i=0; char *p; in=fopen(in.dat,r); while(i20&fgets(xxi,80,in)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+; fclose(in); writeDat() FILE *out; int i; clrscr(); out=fopen(out.dat,w); for(i=0;i20;i+) printf(%sn,xxi); fprintf(out,%sn,xxi); fclose(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1