计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
数据库技术
网络技术
数据库技术
软件测试技术
信息安全技术
嵌入式系统开发技术
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中。请编写函数jsValue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat(),把结果输出到out.dat文件中。 例如:9123,9-1-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。 9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 注意:部分源程序已经给出。 程序中已定义数组:a[300];已定义变量:cnt,pjz1,pjz2。 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。 #include<stdio.h> int a[300],cnt=0; double pjz1=0.0,pjz2=0.0; void jsValue() void ReadDat() FILE *fp; int i; fp=fopen("in.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,",&a[i]); fclose(fp); void writeDat() FILE *fp; fp=fopen("out.dat","w"); fprintf(fp,"%d/n%7.2f/n%7.2f/n",cnt,pjz1,pjz2); fclose(fp); main() ReadDat(); jsValue(); writeDat(); printf("cnt=%d/n满足条件的平均值pzj1=%7.2f/n不满足条件的平均值pzj2=%7.2f/n",cnt,pjz1,pjz2);
进入题库练习
问答题在SQL Server 2008中,现要将T1表的C1列(int类型)定义为标识列,初值和增量值均为1。请补全下列语句:CREATE TABLE T1(C1 int ________(1,1),…)
进入题库练习
问答题设某全国性的运输企业建立了大型OLTP系统,并在该系统之上建立了数据仓库。OLTP系统和数据仓库中有如下数据表: 运输明细表(运输单ID,发送站ID,终到站ID,货物ID,货物重量,运输价格,发货日期) 汇总表1(发送站ID,终到站ID,货物ID,发货日期,总重,总运价) 汇总表2(发送站ID,终到地区ID,货物ID,发货日期,总重,总运价) 汇总表3(发送站ID,终到站ID,货物ID,发货月份,总重,总运价) 汇总表4(发送地区ID,终到地区ID,货物类别ID,发货日期,总重,总运价) 该企业管理的货运站约有100个,货物约有500种共10类,各汇总表都建有主码,且各表有合理的维护策略,在每次维护后数据能保持一致。设有视图V,该视图的访问频率很高,其查询结果模式为(发送地区ID,终到站ID,发货月份,总重,总运价),该视图现以汇总表1为计算数据源。经监控发现,汇总表1的被访问频率过高,导致系统整体性能下降,而其它汇总表被访问频率较低。在不增加汇总表和索引的情况下,请给出一个改善系统服务性能的优化方案,并简要说明理由。
进入题库练习
问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define MAX 100 typedef struct { char dm[5]; /*产品代码*/ char mc[11]; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ ) PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() { } void main() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); } void ReadDat() { char str[80],ch[11]; int i; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++) { fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4); sell[i].dj=atoi(ch); memcpy(ch,str+18,5); sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); void WriteDat() { FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<100;i++) { printf("%s %s %4d %5d %5d/n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s %s %4d %5d %5d/n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); }
进入题库练习
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代后,仍存入数组xx的对应位置上,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 替代关系:f(p)=p*11mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。 原始数据文件存放的格式是:每行的宽度均小于80个字符。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptChar() void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; encryptChar(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; unsigned char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数SonCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WfiteDat(),把结果xx输出到OUT.DAT文件中。 例如,原文:dAeBfC. CCbbAA 结果:fedCBA. bbCCAA 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 注意:部分程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<Stdio.h> #include<string.h> #include<conio.h> char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharD(void) void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharD(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","W"); for(i=0;i<maxline; i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> char xx[100][11]; int yy[10]; int ReadDat(void); void WriteDat(void); void CountRs(void) void main() int i; for(i=0;i<10;i++) yy[i]=0; if(ReadDat()) printf("选票数据文件IN.DAT不能打开!/n/007"); return; CountRs(); WriteDat(); int ReadDat(void) FILE *fp; int i; if((fp=fopen("IN.DAT","r"))==NULL) return 1; for(i=0; i<100; i++) if(fgets(xx[i],12,fp)==NULL) return 1; xx[i][10]='/0'; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0; i<10; i++) fprintf(fp,"%d/n",yy[i]); printf("第%d个人的选票数=%d/n",i+1,yy[i]); fclose(fp);
进入题库练习
问答题已知数据文件IN.dat中存有200个四位数,并己调用读函数rData()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数一个是奇数,另一个为偶数,并且两个二位数中至少有一个数能被17整除,同时两个新数的十位数字均不为 0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。 注意:部分源程序已经给出。程序中已定义数组a[200]、b[200],己定义变量count。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数rData()和写函数wData()的内容。 #include <stdio. h> #define MAX 200 int a[MAX], b[MAX], count = 0; void spellNum () { } void rData() { int i; FILE *fp; fp = fopen("IN.dat", "r"); for (i=0; i<MAX; i++) fscanf(fp, "%d,", fclose (fp); } void wData () { FILE *fp; int i; fp = fopen("OUT.dat", "w"); fprintf(fp, "%d/n", count); for (i=0; i<count; i++) fprintf(fp, "%d/n", b[i]); fclose (fp); } void main () { int i; rData (); spellNum (); printf ("满足条件的数=%d/n", count); for (i=0; i<count; i++) printf("%d ", b[i]); printf ("/n"); wData (); }
进入题库练习
问答题编写函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值为6。 函数ReadWrite()实现从in.dat文件中读取两个字符串,并调用函数findStr(),最后,把结果输出到out.dat文件中。 注意:部分程序已经给出。 请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。 #include <stdio.h> #include <string.h> #include <conio.h> int findStr (char *str,char *substr) { } void ReadWrite() { char str[81],substr[10],ch; int n,len,i=0; FILE *rf,*wf; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); while(i<25) { fgets(strt 81,rf); fgets(substr,10,rf); len=strlen(substr)-1; ch=substr[len]; if (ch=='/n'||ch==0x1a) substr[len]=0; n=findStr(str,substr); fprintf(wf,"%d/n",n); i++; } fclose(rf); fclose(wf); } main () { char str[81],substr[10]; int n; gets(str); gets(substr); puts(str); puts(substr); n=findStr(str,substr); printf("n=%d/n",n); ReadWrite();
进入题库练习
问答题用例模型通过对系统参与者及其重要行为的描述,表达系统的______需求。
进入题库练习
问答题请编写函数countValue(),其功能是:求出1~1000之内能被7或11整除但不能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。 主函数最后调用函数writeDAT()把计算结果输出到out.dat文件中。 注意:部分源程序已经给出。 请勿改动主函数main()和输出数据函数writeDAT()的内容。 #include <conio.h> #include <stdio.h> void countValue(int *a,int *n) { } void writeDAT() { int aa[1000],n,k; FIIE *fp; fp=fopen("out.dat","w"); countValue(aa, for (k=0;k<n;k++) if ((k+1)%10==0) fprintf(fp,"%5d/n",aa[k]); else fprintf(fp,"%5d",aa[k]); fprintf(fp,"/n"); fclose(fp); } main() { int aa[1000],n,k; countValue(aa, for (k=0;k<n;k++) if ((k+1)%10==0) printf("%5d/n",aa[k]); else printf("%5d",aa[k]); writeDAT(); }
进入题库练习
问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。 注意:部分程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define MAX 100 typedef struct { char dm[5]; /*产品代码*/ char mc[11]; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*余额*/ } PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() { } void main() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); void ReadDat() { FILE *fp; char str[80],ch[11]; int i; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++) { fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4); sell[i].dj=atoi(ch); memcpy(ch,str+18,5); sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); void WriteDat(void) { FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<100;i++) { printf("%s %s %4d %5d %5d/n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s %s %4d %5d %5d/n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); }
进入题库练习
问答题已知IN7.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇牧,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函牧writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT7.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数wfiteDat()的内容。 试题程序: #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void writeDat(); void jsVal() void readDat() int i; FILE * fp; fp=fopen("IN7.DAT","r"); for(i = 0; i < MAX; i++) fscanf(fp,"%d", readDat(); jsVal(); printf("满足条件的数=%d/n", cnt); for(i=0; i < cnt; i++ printf("%d ", b[i]); printf("/n"); writeDat() void writeDat ) FILE * fp; int i; fp = fopen("OUT7.DAT", "w"); fprintf(fp, "%d/n", cnt); for(i = 0; i < cnt; i++) fprintf(fp, "%d/n", b[i]); fclose(fp);
进入题库练习
问答题下列程序的功能是;把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调用函数readwriteDat()把结果输出到out63.dat文件中。 例如;s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。 注意:部分源程序已给出。 请勿改动主函数main()和输入输出函数readwriteDAT()的内容。 试题程序: #include<conio.h> #include<stdio.h> #define N 81 void readwriteDAT(); void chg(char *s) main ( ) char a [N]; clrscr ( ); printf("Enter a string :"); gets (a); printf("The original string is :"); puts (a); chg (a); printf("The string after modified :"); puts (a); readwriteDAT ( ) void readwriteDAT () int i; char a [N]; unsigned char *p; FILE *rf,*wf; rf=fopen("in63.dat","r"); wf=fopen("out63.dat","w"); for(i=0;i<10;i++) fgets(a,80,rf); p=strchr(a,'/n'); if(p) *p=0; chg(a); fprintf(wf,"%s/n",a); fclose(rf); fclose(wf);
进入题库练习
问答题设某数据库中作者表(作者号、城市)和出版商表(出版商号,城市)。请补全如下查询语句,使该查询语句能查询出在作者表里而不在出版商表中的城市。SELECT城市FROM作者表作者_________ (SELECT城市FROM出版商表)
进入题库练习
问答题请编制函数ReadDat(),实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出XX中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意:部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。试题程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleave1=0.0,ave2=0.0,totfe=0.0;voidWriteDat(void);intReadDat(void)inti;FILE*fp;if((fp=fopen("IN.DAT","r"))==NULL)return1;/***编制函数ReadDat()的部分***//******************/fclose(fp);return0;voidCompute(void)inti,yy[MAX];for(i=0;i<MAX;i++)yy[i]=0;for(i=0;i<MAX;i++)if(xx[i]%2==0)//测试结点i是否是偶数)yy[even++]=xx[i];//将结点i存入数组yy中ave2+=xx[i];//将结点i累加存入ave2中else//如果结点i不是偶数odd++;//累加变量odd记录奇数的个数ave1+=xx[i];)//将xx[i]累加存入ave1中if(odd==O)ave1=0:elseave1/=odd;//计算奇数的平均数if(even==0)ave2=0;elseave2/=even;//计算偶数的平均数for(i=0;i<even;i++)totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;voidmain()inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat())printf("数据文件IN.DAT不能打开!");return:Compute();printf("EVEN=%dAVE1=%fAVER2=%fTOTFC=%f"f,even,ave1,ave2,totfc):WriteDat();voidWriteDat(void)FILE*fp:inti;fp=fopen("OUT.DAT","w"):fprintf(fp,"%d%f%f%f",even,ave1,ave2,totfc);fclose(fp);
进入题库练习
问答题现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是:每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include <stdio.h> char xx[100][11]; int yy[10]; int ReadDat(void); void WriteDat(void); void CountRs(void) { } void main() { int i; for (i=0;i<10;i++) yy[i]=0; if (ReadDat()) { printf("选票数据文件IN.DAT不能打开! /n/007"); return; } CountRs(); WriteDat(); } int ReadDat(void) { FILE *fp; int i; if ((fp=fopen("IN.DAT","r"))==NULL) return 1; for(i=0;i<100;i++) { if(fgets(xx[i],12,fp)==NULL) return 1; fclose(fp); return 0; void WriteDat(void) { FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<10;i++) { fprintf(fp,"%d/n",yy[i]); printf("第%d个人的选票数=%d/n",i+1,yy[i]); } fclose(fp); }
进入题库练习
问答题请编制函数ReadDat()实现从文件IN93.DAT中读取1000个十进制整数到数组xx中。请编制函数Compute()分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT93.DAT文件中。计算方差的公式如下:原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意:部分源程序已给出。请勿改动主函数main()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleaver=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void)FILE*fp;if((fp=fopen("IN93.DAT","r"))==NULLreturn1;fclose(fp);returnO;voidCompute(void)voidmain()inti;for(i=O;i<MAX;i++)xx[i]=0;if(ReadDat())printf("数据文件IN93.DAT不能打开!/007/n");return;Compute();printf("ODD=%d/nEVEN=%d/nAVER=%lf/nTOTFC=%lf/n",odd,even,aver,totfc);WriteDat();voidWriteDat(void)FILE*fp;inti;fp=fopen("OUT93.DAT","w");fprintf(fp,"%dln%dln%lf/n%lfkn",odd,even,aver,totfc);fclose(fp);
进入题库练习
问答题数据库管理系统为用户和应用程序提供了_________语言,用此语言可以定义数据库的模式结构,但此语言执行后的结果不能回滚。
进入题库练习
问答题已知文件IN19.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数 SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT19.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include〈stdio.h> #include〈mem.h> #include〈string.h> #include〈conio.h> #include〈stdlib.h> #define MAX 100 typedef struct char dm[5]; /* 产品代码 */ char mc[il]; /* 产品名称 */ int dj; /* 单价 */ int sl; /* 数量 */ long je; /* 金额 */ PRO; PRO sell [MAX]; void ReadDat ( ; void WriteDat ); void SortDat( main ( ) memset(sell, 0, sizeof(sell)); ReadDat ( ); SortDat (); WriteDat ( ); void ReadDat() FILE *fp; char str[80], ch[11]; int i; fp = fopen("IN19.DAT", "r"); for(i=0; i〈100; i++) fgets(str, 80, fp); memcpy(sell[i].dm, str, 4); memcpy(sell[i].mc, str + 4, 10); memcpy(ch, str+ 14, 4); ch[4] = 0; sell[i] .dj = atoi(ch); memcpy(ch, str +18, 5); ch[5] = 0; sell[i] .sl = atoi(ch); sell[i] .je = (long)sell[i] .dj * sell[i] .sl; fclose(fp); void WriteDat() FILE *fp; int i; fp = fopen("OUT19.DAT", "w"); for(i = 0; i〈 100; i++) fprintf(fp, "%s %s %4d %5d %101d/n", sell[i] .dm, sell[i] .mc, sell [i] .dj , sell[i].sl, sell[i].je); fclose(fp);
进入题库练习