计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
数据库技术
网络技术
数据库技术
软件测试技术
信息安全技术
嵌入式系统开发技术
问答题读函数ReadDat()实现从文件ENG28.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数 encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用写函数WriteDat()把结果xx输出到文件PS28.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的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() main ( ) clrscr ( ); if (ReadDat ( )) printf("数据文件 ENG28.IN不能打开! /n/007"); return; encryptChar (); WriteDat ( ); int ReadDat(void) FILE *fp; int i = 0; unsigned char *p; if((fp = fopen("ENG28.IN", "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("PS28.DAT", "w"); for (i = 0; i 〈 maxline; i++) printf("%s/n", xx[i]); fprintf(fp, "%skn", xx[i]); fclose(fp);
进入题库练习
问答题在SQL Server 2008中,事务日志备份仅可用在完整恢复模式和_______日志恢复模式中。
进入题库练习
问答题请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数ont和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max, cnt,pj输出到out92.dar中。 部分程序、读函数read_dat(intxx[200])及输出格式已给出。 试题程序: #include<conio.h> #include<stdi0.h> #define N 200 void read_dar(int xx[N]) int i,j; FILE *fp; fp=fopen("IN92.DAT","r"); for(i=0;i<20;i++) for (j=0; j<10; j++) fscanf(fp,"%d,", printf("%d",xx[i*10+j]); printf("/n"); fclose fp); void main, int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dat","w"); read_dat(xx); printf("/n/nmax=%d,cnt=%d,pj=%6.2f/n",max, cnt,pj fprintf(fw,"%d/n%d/n%6.2f/n",max,cnt,pj); fclose(fw); printf("/n"); fclose fp); void main, int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dat","w"); read_dat(xx); printf("/n/nmax=%d,cnt=%d,pj=%6.2f/n",max, cnt,pj fprintf(fw,"%d/n%d/n%6.2f/n",max,cnt,pj); fclose(fw);
进入题库练习
问答题已知数据文件in.dat中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。最后main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到out.dat文件。 例如:1239,9-1-2-3>0,则该数满足条件,参加计算平均值pjz1,且个数cnt=cnt+1。 8129,9-8-1-2<0,则该数不满足条件,参加计算平均值pjz2。 程序中已定义数组:a[300],己定义变量:cnt,pjz1,pjz2 请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include <stdio.h> int a[300], cnt=0; //定义全局一维整型数组a[300]和整型cnt变量, 并且变量cnt的初值为0 double pjz1=0.0, pjz2=0.0;//定义全局双精度型变量pjz1和pjz2, 并且初值为0.0, void readDat(); void writeDat(); jsValue() { } main() { int i; readDat(); jsValue(); writeDat(); printf("cnt=%d/n满足条件的平均值pzj1=%7.2lf/n不满足条件的平均值pzj2=%7.2lf/n",cnt, pjz1, pjz2); } void readDat() { FILE *fp; int i; fp=fopen("in.dat", "r"); for(i=0; i<300;i++) fscanf(fp, "%d,", fclose(fp); } void writeDat() { FILE *fp; fp=fopen("out.dat", "w"); fprintf(fp, "%d/n%7.2lf/n%7.2lf/n", cnt, pjz1, pjz2); fclose(fp); }
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN35.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD(),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT35.DAT中。 例如,原文:dAe,BfC 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 main ( ) clrscr ( ); if (ReadDat()) print f ("数据文件 IN35.DAT 不能打开!/n/007"); return; SortCharD ( ); WriteDat ( ); int ReadDat (void) FILE *fp; int i=0; char *p; if ( (fD=fopen("IN35.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 () FILE *fp; int i; clrscr ( ); fp=fopen ("OUT35.DAT", "w"); for ( i=0; i<maxline; i++) print f ("%s/n" ,xx[i] ); fprintf(fp,"%s/n",xx[i]); fclose (fp);
进入题库练习
问答题函数ReadDat()实现从文件in.dat中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到文件out.dat中。 替代关系:f(p)=p*11 mod256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则用f(p)替代所对应的字符。 请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。 #include <stdio.h> #include <string.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(); } /*从文件in.dat中读取一篇英文文章, 存入到字符串数组xx中*/ 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; } /*把结果xx输出到文件out.dat中*/ 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); }
进入题库练习
问答题请编制函数int findValue(int outBuf[]),其功能是:在3位整数(100~999)中寻找符合下面条件的整数,并依次从小到大存入数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。 满足该条件的整数的个数通过所编制的函数返回。 最后调用函数WriteData()把结果输出到文件OUT.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()和写函数WriteData()的内容。 试题程序: #include<stdio.h> void writeData(int,int b[]); int findValue(int outBuf[]) void main() int b[20],num; num=findValue(b); writeData(num,b); void writeData(int num,int b[]) FILE*OUt: int i; out=fopen('OUT.DAT","w"); printf("num=%d/n",num); fprintf(out,"num=%d/n",num); for(i=0;i<num;i++) printf("b[%d]=%d/n",i,b[i]); fprintf(out,"b[%d]=%d/n",i,b[i]); fclose(out);
进入题库练习
问答题已知数据文件in81.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out81.dar文件。 例如:7153,7+1=5+3,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。 8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。 注意:部分源程序已给出。 程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio. h> int a[300], cnt=0; double pjz1=0.0,pjz2=0.0; void jsValue() main ( ) int i; readDat(); jsValue(); writeDat(); printf ("cnt=%d/n 满足条件的平均值pjz1=%7.21f/n 不满足条件的平均值 pjz2=%7.21f/n",cnt,pjz1,pjz2); readDat() FILE *fp; int i; fp=fopen( "in81.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,", fclose(fp); writeDat() FILE *fp; int i; fp=fopen("outSl.dat","w"); fprintf(fp,"%d/n%7.21f/n%7.21f/n",cnt ,pjz1,pjz2); fclose(fp);
进入题库练习
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序已经给出。 程序中已定义数组:a[200],b[200];已定义变量:cnt。 请勿改动数据文件IN.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。 #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVal() void readDat() int i; FILE *fp; fp=fopen("IN.DAT","r"); for(i=0;i<MAX; i++) fscanf(fp,"%d,",&a[i]); fclose(fp); void writeDat() FILE *fp; int i; fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0; i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp); void main() int i; readDat(); jsVal(); printf("满足条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat();
进入题库练习
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat0把这些数存入数组a中。请编写函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序已经给出。 程序中已定义数组:a[200],b[200];已定义变量:cnt。 请勿改动数据文件IN.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。 #include <stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVal() { } void readDat() { int i; FILE *fp; fp=fopen("IN.DAT","r"); for (i=0;i<MAX;i++) fscanf(fp,"%d,", fclose(fp); } void writeDat() { FIIE *fp; int i; fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp); } void main() { int i; readDat(); jsVal(); printf("条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat(); }
进入题库练习
问答题SQL Server中有五种约束类型,分别是主键约束、_________、唯一性约束、缺省约束和检查约束。
进入题库练习
问答题设在SQL Server 2008某数据库中建有图书表和销售表,两个表的定义如下:CREATE TABLE图书表(书号char(10)PRIMARY KEY,书名varchar(40),图书类别varchar(20),进价inc);CREATE TABLE销售表(书号char(10)REFERENCES图书表(书号),销售时间datetime,销售数量int,售价int,PRIMARY KEY(书号,销售时间));现要创建一个存储过程:查询指定类别的每种图书在当前年累计销售总数量。请补全下列代码。CREATE PROC p_TotalSales@lb varchar(20)ASSELECT书名,(SELECT________FROM销售表t1WHERE________andyear(销售时间)=year(________))AS销售总数量FROM图书表t2 WHERE ________
进入题库练习
问答题函数ReadDat()的功能是从文件IN.DAT中读取1000个十进制整数到数组xx中。请编写函数Compute()分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。计算方差的公式如下:设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。注意:请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。【试题程序】#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleavel=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){FILE*fp;inti,j;if((fp=fopen("IN.DAT","r"))==NULL)return1;for(i=0;i<100;i++){for(j=0;j<10;j++)fscanf(fp,"%d,",fscanf(fp,"\n");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){}Voidmain()inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat()){printf("数据文件IN.DAT无法打开!\007\n");return;}Compute();printf("even=%d\navel=%f\nave2=%f\ntotfc=%f\n",even,avel,ave2,totfc);WriteDat();}voidWriteDat(void){FILE*fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d\n%lf\n%lf\n%lf\n",even,avel,ave2,totfc);fclose(fp);}
进入题库练习
问答题下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat(),把结果cnt和sum输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()和输出数据函数writeDat()的内容。 #include <stdio.h> int cnt,sum; void countValue() { } void writeDat() { FIIE *fp; fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n%d/n",cnt,sum); fclose(fp); } void main() { cnt=sum=0; countValue(); printf("满足条件的自然数的个数=%d/n",cnt); printf("满足条件的自然数的个数之和=%d/n",sum); writeDat(); }
进入题库练习
问答题已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额ie(长整型)五部分组成。其中:金额=单价+数量。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件out.dat中。 提示:若中间变量为PROtemp,则可以直接使用结构赋值语句进行解题。 例如:sell[i]=temp; 请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 100 typedef struer { 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); 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("out.dat", "w"); for(i=0;i<100;i++) { fprintf(fp, "%s %s %4d %5d %10ld/n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je); } fclose(fp); }
进入题库练习
问答题设有表Student(Sno,Sname)、SC(Sno,Cno,Grade),现要查询没选C01课程的学生姓名,请补全下列语句:SELECT Sname FROM Student WHERE NOT_______(SELECT______*FROM SC WHERE Cno='C01'AND Student.Sno=SC.Sno)
进入题库练习
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以后的5个数且该数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分程序已经给出。 程序中已定义数组:a[200],b[200];已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVal() { } void readDat() { int i; FILE *fp; fp=fopen("IN.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d,", fclose(fp); } void writeDat() { FILE *fp; int i; fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n",cnt); for (i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp); } void main() { int i; readDat(); jsVal(); printf("满足条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat(); }
进入题库练习
问答题已知在文件IN54.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价由(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量可计算得出。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDaq),其功能要求:按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WntcDat()把结果输出到文件OUT54.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WntedDAT()的内容。 试题程序: #include #include #include #include #include #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("IN54.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("OUT54.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);
进入题库练习
问答题已知文件IN.DAT中存有100条产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)和金额je(长整型)5部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100条销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:对这些记录按产品名称从大到小顺序排列,若产品名称相同,则按金额从小到大顺序排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到文件OUT.DAT中。 注意:请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 【试题程序】 #include < stdio.h > #include < memory.h > #include <string.h > #include <stdlib.h > #define MAX 100 typede f struct { char dm[5] ; // 产品代码 char mc[11] ; // 产品名称 int dj; // 单价 int sj; // 数量 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); ch[4] =0; sell[i] .dj =atoi(ch); memcpy(ch, str+18, 5); ch[5] =0; sell[i].s1 =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++) { fprintf (fp, "%s %4d %5d %101d/n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je); } fclose(fp); }
进入题库练习
问答题已知在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); 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(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);
进入题库练习