1、三网上机100套题三网上机试题1、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT10.DAT中。 提示:若中间变量为PRO tem
2、p,则可以直接使用结构赋值语句进行解题;产品名称比较请用函数strcmp进行解题。 例如:selli = temp ; 注意:部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。同时要注意的是比较产品名称大小的时候用strcmp()函数实现。程序使用两次二重循环来实现要求的功能。#include #include #include #include #define MAX 100typedef struct char dm5; /*产品代码*/ ch
3、ar mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; char str80,ch11; int i; fp=fopen(IN.DAT,r); for(i=0;i100;i+) fgets(str,80,fp)
4、; 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(void)FILE *fp; int i;fp=fopen(OUT10.DAT,w); for(i=0;i100;i+) printf(%s %s %4d %5d %10dn, selli.d
5、m,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);void SortDat()int i,j; PRO cell; /*定义结构变量*/ for (i=0;i99;i+) for (j=i+1;j 0) /*strcmp()函数功能是比较产品名称大小*/ cell=selli; /*按产品代码从小到大进行排序处理*/ selli=sellj; sellj=cell; for (i=0;i9
6、9;i+) for (j=i+1;j100;j+) if (strcmp(selli.mc,sellj.mc) = 0)&(selli.jesellj.je) /*判断若产品名称相同,则按金额从大到小进行排序处理*/ cell=selli; selli=sellj; sellj=cell; 2、 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数Write
7、Dat()把结果xx输出到文件out.dat中。例如:位置01234567源字符串h g f e d c b a 则处理后字符串 h a f c d e b g部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。本题for循环条件里采用的步长为2,这是因为要求只对下边为奇数的元素进行判断。程序使用三重循环来实现要求的功能。外层的while循环用来实现行间遍历,内层的二重for循环用来遍历行内下标为奇数的元素。#include #include #include #includechar xx2080;void j
8、sSort()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); system(cls); for(i=0;i20;i+) printf(%sn,xxi); fprintf(out,%sn,xxi); fclose(out);void main() readDat(); jsS
9、ort(); writeDat();void jsSort()int i,j,k,l,p,temp; /*定义局部变量*/ i=0; while(i20) /*判断i的值若小于20,则执行内嵌语句*/ j=strlen(xxi); /*strlen(xxi)函数的功能是统计第i行字符串中字符的个数*/ for(k=1;kj;k=k+2) p=k; for(l=k+2;lj;l=l+2) if(xxilxxip) /*比较两个字符的ASCII值按从小到大的顺序进行排序处理*/ p=l; if(p!=k) temp=xxip; xxip=xxik; xxik=temp; i+; 3、 已知在文件I
10、N.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT8.DAT中。 部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输
11、出数据函数WriteDat()的内容。本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。正确的比较方法是用atoi对代码做变换。程序使用两次二重循环来实现要求的功能。#include #include #include #include #define MAX 100typedef struct char dm5; /*产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/PRO;PRO sellMAX;void ReadDa
12、t();void WriteDat();void SortDat()void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; 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=a
13、toi(ch); memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl; fclose(fp);void WriteDat(void) FILE *fp; int i; fp=fopen(OUT8.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,s
14、elli.dj,selli.sl,selli.je); fclose(fp);void SortDat()int i,j; PRO cell; /*定义结构变量*/ for (i=0;i99;i+) for (j=i+1;j100;j+) if (atoi(selli.dm) atoi(sellj.dm) /*atoi函数功能是将字符串转换成一个整数值*/ cell=selli;/*按产品代码从大到小进行排序处理*/ selli=sellj; sellj=cell; for (i=0;i99;i+) for (j=i+1;j100;j+) if ( atoi(selli.dm)=atoi(se
15、llj.dm)&(selli.jesellj.je ) /*判断若产品代码相同,则按金额从大到小进行排序处理*/ cell=selli; selli=sellj; sellj=cell; 4、 下列程序prog1.c的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。 请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。 最后调用函数writeDat()把结果输出到文件out.dat中。 请勿改动主函数main()和写函数writeDat()的内容。本题采用for循环结合if语句来实现功能。
16、循环的起始点为10,终止点32。因为此二者的平方恰好包括了100和1000。在循环体内计算出变量a的值,这样可以保证每次检查的数都是平方数。然后再得出此数的各位数值。如果符合条件则将其传递给数组bb。#include int jsValue(int bb)writeDat(int num,int b) FILE *out; int i; out=fopen(out.dat,w); printf(%dn,num); fprintf(out,%dn,num); for(i=0;inum;i+)printf(%dn,bi);fprintf(out,%dn,bi); fclose(out);main(
17、) int b20,num; num=jsValue(b); writeDat(num,b);int jsValue(int bb) int i,a,d,e,c,p; /*定义局部变量*/ p=0; for(i=10;i=100&a1000) /*判断a的取值范围*/ c=a/100; /*求数值的百位数的数字*/ e=(a-c*100)/10; /*求数值的十位数的数字*/ d=a-c*100-e*10; /*求数值的个位数的数字*/if(c=e)|(c=d)|(d=e) /*判断数值是否有两位数字相同*/ bbp=a; /*将符合条件的数值存入数组中*/ p+; return p-;5、
18、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat() 把结果输出到文件OUT4.DAT中。 部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDa
19、t()和输出数据函数WriteDat()的内容。本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。正确的比较方法是用atoi对代码做变换。程序使用两次二重循环来实现要求的功能。#include #include #include #include #define MAX 100typedef struct char dm5; /*产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/PRO;PRO sellMAX;void R
20、eadDat();void WriteDat();void SortDat()void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; char str80,ch11; int i; fp=fopen(IN.DAT,r); for(i=0;iMAX;i+) fgets(str,80,fp); memcpy(selli.dm,str,4); memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0; selli
21、.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(void) FILE *fp; int i; fp=fopen(OUT4.DAT,w); for(i=0;iMAX;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
22、.mc,selli.dj,selli.sl,selli.je); fclose(fp);void SortDat()int i,j; PRO cell; /*定义结构变量*/ for (i=0;i99;i+) for (j=i+1;j100;j+) if (selli.je sellj.je) /*判断金额的大小*/ cell=selli;/*按金额从大到小进行排序处理*/ selli=sellj; sellj=cell; for (i=0;i99;i+) for (j=i+1;j100;j+) if ( atoi(selli.dm) atoi(sellj.dm)&(selli.je=sell
23、j.je ) /*atoi函数的功能是将字符串转换成一个整数值*/ cell=selli; /*按产品代码从大到小进行排序处理*/ selli=sellj; sellj=cell; 6、 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。 其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排
24、列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。 部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。正确的比较方法是用atoi对代码做变换。程序使用两次二重循环来实现要求的功能。#include #include #include #include #define MAX 100typedef struct char dm5; /*
25、产品代码*/ char mc11; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()void main() memset(sell,0,sizeof(sell); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; char str80,ch11; int i;fp=fopen(IN.DAT,r); for(i=0;i100;i+) fgets(st
26、r,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(void) FILE *fp; int i;fp=fopen(OUT2.DAT,w); for(i=0;i100;i+) printf(%s %s %4d %5d %5dn,
27、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);void SortDat()int i,j; PRO cell; /*定义结构变量*/ for (i=0;i99;i+) for (j=i+1;j sellj.je) /*判断金额的大小*/ cell=selli; /*按金额从小到大进行排序处理*/ selli=sellj; sellj=cell; for (i=0;i99;i+) for (j=i+1;j100;j+) if ( atoi(selli.dm) atoi(sellj.dm)&(selli.je=sellj.je ) /*atoi函数功能是将字符
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1