计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
问答题已知在文件IN47.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价x数量。函数ReadDat()的功能是读取这100个销售记录并存人数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品名称从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT47.DAT中。 注意:部分源程序已给出。 请勿改变主函数()读函数ReaDat()和写函数WriteDat()的内容。 [试题程序] #include<stdio.h> #include<memory.h> #include<string.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() voidmain() memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE*fP; char str[80],ch[11]; int i; fp=fopen("IN47.DAT","r"); for(i=0;i<100;i++) fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,i0); 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=(10ng)sell[i].dj*sell[i].sl; fclose(fp); void WriteDat() FILE*fp; int i; fp=fopen("OUT47.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);
进入题库练习
问答题函数ReadDat()的功能是实现从文件ENG54.IN中渎取一篇英文文章,并存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx的对应的位置上,最后调用函数WHteDat()把结果XX输出到文件PS54.DAT中。 替代关系:f(P)=P*13 mod 256(P是数组XX中某一个字符的ASCⅡ值,f(P)是计算后新字符的ASCⅡ值),如果计算后f(P)的值小于等于32或其ASCⅡ值是偶数,则该字符不变,否则将f(P)所对应的字符进行替代。 注意:部分源程序已给出。 原始数据文件的存放格式:每行的宽度均小于80个字符。 请勿改动主函数main()、读函数ReadDat()和写函数WfiteDat()的内容。 [试题程序] #include<stdlib.h> #include<stdio.h> #include<string.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void encryChar() void main() system("CLS"); if(ReadDat()) printf("数据文件ENG54.IN不能打开!/n/007"); return; encryChar(); WriteDat(); int ReadDat(void) FILE*fp; int i=0; unsigned char*P; if((fP=fopen("ENG54.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() FILE*fp; int i; fP=fopen("ps54.dat","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fP);
进入题库练习
问答题试题要求如图10.5所示。部分源程序内容如下:#include<stdio.h>#include<mem.h>#include<string.h>#include<stdlib.h>#defineMAX100typedefstructchardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/ints1;/*数量*/longje;/*金额*/PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()voidmain()mem$et(sell,0,siZeOf(Sell));ReadDat();SortDat();WriteDat();voidReadDat()FTLE*fp;charstr[80],ch[11];inti;fp=fopen("K://k06//35010006//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);voidWriteDat()FILE*fp;inti;fp=Eopen("K://k06//35010006//OUT.DA2","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);
进入题库练习
问答题函数ReadDat()的功能是实现从文件ENG98.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件ps98.dat中。 替代关系,f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。 注意:部分源程序已给出。 原始数据文件的存放格式是每行的宽度均小于80个字符。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<conio.h> #include<stdio.h> #include<string.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void encryChar() void main( clrscr(); if(ReadDat()) printf("数据文件ENG98. IN不能打开!/n/007"); return; encryChar(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; unsigned char *p; if((fp=fopen("ENG98.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() FILE *fp; int i; fp= fopen("ps98.dat","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN63.DAT中读取一篇英文文章,并存入到字符串数组XX中。请编制函数StrCharJL(),该函数的功能是:以行为单位把字符串中的所有字符的ASCⅡ值左移4位,如果左移后其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCⅡ值再加上原字符的ASCⅡ值,得到的新字符仍存入到原字符串对应的位置。之后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WfiteDat()把结果xx输出到文件OUT63.DAT中。 注意:部分源程序已给出。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 [试题程序] #inciude<stdio.h> #include<string.h> #include<stdlib.h> char XX[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void StrCharJL(void) void main() system("CLS"); if(ReadDat()) printf("数据文件IN63.DAT不能打开/n/007"); return; StrCharJL(); WriteDat(); int ReadDat(void) FILE*fp; int i=0; char*P; if((fP=fopen("IN63.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; system("CLS"); fp=fopen("OUT63.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fP);
进入题库练习
问答题某级数的前两项A1=1,A2=1,以后各项具有如下关系: An=An-2+2An-1 下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn<M且Sn+1≥M,这里Sn=A1+A2+… +An,并依次把n值存入数组单元b[0],b[1],b[2]冲,请编制sValue()函数来实现此功能,最后调用函数writeDat()把数组b的值输出到out48.dat文件中。 注意:部分源程序已给出。 请勿改动主函数mean()和输出函数writeDat()的内容。 试题程序: #include<stdio.h> int b[3]; jsValue ( ) main ( ) jsValue( ); printf("M=100,n=%d/nM=1000,n=%d/nM=10000,n=%d/n”,b[0],b[1],b[2]); writeDat (); writeDat ( ) FILE *fp; fp=fopen ("out48. dat", "w" ); fprintf(fp,"%d/n%d/n%d/n",b[O],b[1],b[2]); fclose (fp);
进入题库练习
问答题读函数ReadDat()的功能是实现从文件IgNG52.IN中读取一篇英文文章,并存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx的对应的位置上,最后调用写函数WriteDat()把结果xx输出到文件PS52.DAT中。 替代关系:f(P)=P*11 mod 256(P是数组xx中某一个字符的ASCⅡ值,f(P)是计算后新字符的ASCⅡ值),如果计算后f(P)的值小于等于32或f(P)对应的字符是小写字母,则该字符不变,否则将f(P)所对应的字符进行替代。 注意:部分源程序已给出。 原始数据文件存放的格式是:每行的宽度均小于80个字符。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 [试题程序] #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptchar() voidmain() system("CLS"); if(ReadDat()) printf("数据文件ENG52.IN不能打开!/n/007"); return; encryptChar(); WriteDat(); int ReadDat(void) FILE*fp; int i=0; unsigned char*P: if((fp=fopen("ENG52.IN","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) P+strchr(xm[i],'in'); if(P)*P=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE*fp; int i; fp=fopen("PS52.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fP,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:将一数据采集系统中采集的80个字节无符号数(已存于SOURCE开始的内存区域)按算术平均数字滤波方法进行数字滤波,每8个数求一个平均值(含去余数)。将10个平均值依次写入RESULT指示的内存区域。例如:原采集数据1EH,31H,31H,33H,58H,75H,38H,34H,49H,A2H,98H,DFH,99H,64H,64H,B7H,…结果为3DH,CCH,…部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程宋完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:
进入题库练习
问答题在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数addat()的功能是读取这200个数存放到数组aa中。请编制函数JsSorr(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数wiltedat()把结果bb输出到文件 OUT3.DAT中。 例如:处理前 9012 5099 6012 7025 8088 处理后 5099 8088 7025 6012 9012 注意:部分源程序已给出。 请勿改动主函数main()、读函数readDat0和写函数writeDat()的内容。 试题程序: #include <stdio.h> #include <string.h> #include <conio.h> int aa[200], bb[10]; void jsSort() main() readDat ( ); jsSort (); writeDat(); readDat ( ) FILE *in; int i; in = fopen("IN3.DAT", "r"); for(i = 0; i < 200; i++) fscanf(in, "%d,", fclose(in); writeDat() FILE *out; int i; out = fopen("OUT3.DAT", "w"); clrscr(); for (i = 0; i < 10; i++) printf("i=%d,%d/n", i+1, bb[i]); fprintf(out, "%d/n", bb[i]); fclose(out);
进入题库练习
问答题函数ReadDat()的功能是实现从文件ENG57.IN中读取一篇英文文章,并存入到字符串数组xx中。请编制函数encorChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存人数组“的对应的位置上,最后调用函数WfiteDat()把结果xx输出到文件ps57.dat中。 替代关系:f(P)=P*11 nod 256(P是数组xx中某一个字符的ASCⅡ值,f(P)是计算后新字符的ASCⅡ值),如果原字符是数字字符0至9或计算后f(P)的值小于等于32,则该字符不变,否则将f(P)所对应的字符进行替代。 注意:部分源程序已给出。 原始数据文件的存放格式是:每行的宽度均小于80个字符。 请勿改动主函数main()、读函数ReadDat()和写函数WfiteDat()的内容。 [试题程序] #include<stdlib.h> #include<stdio.h> #include<string.h> #include<ctype.h> unsigned char xx[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void encryChar() voidmain() system("CLS"); if(ReadDat()) printf("数据文件ENG57.IN不能打开!/n/007"); return; encryChar(); WriteDat(); int ReadDat(void) FILEfp; int i=0; unsigned char*P; if((fp=fopen("ENG57.IN","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!=NULL) P=strchr(xx[i],'kn'); if(P) *P=0; i++; maxline=i; fclose(fp); return 0; void WriteDat() FILE*fp; int i; fp=fopen("ps57.dat","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题请编制程序PROG1.ASM,其功能是:统计30个学生成绩中得分在100~90、89~80、 79~70、69~60区间以及低于60分的人数,并计算30个学生的平均成绩(取整数),结果依次存入指定的内存区域。 例如: 内存中有10个分数; 5EH,50H,64H,52H,55H,48H,3AH,4AH,40H,42H 结果为:02H,03H,02H,02H,01H,4DH(平均成绩) 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。 试题程序: EXTRN LOAD:FAR, SAVE:FAR N EQU 30 L EQU 5 DSEG SEGMENT SOURCE DB N DUP(?) RESULT DB N+1 DUP(0) NAME0 DB 'INPUT1. DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DSEG ENDS SSEG SEGMENT STACK DB 256 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, SS: SSEG, DS: DSEG START PROC FAR PUSH DS XOR AX, AX PUSH AX MOV AX, DSEG MOV DS, AX LEA DX, SOURCE LEA SI, NAME0 MOV CX, N CALL LOAD ; *** BEGIN *** LEA SI,SOURCE LEA DI,RESULT XOR BX,BX (1) MOV CX,N GOON: LODSB (2) ADD BX,AX (3) JAE A1 CMP AL,80 JAE A2 CMP AL,70 JAE A3 CMP AL,60 JAE A4 INC (4) (5) A4: INC BYTE PTR [DI+3] JMP NEXT A3: INC BYTE PTR [DI+2] JMP NEXT A2: INC BYTE PTR [DI+1] JMP NEXT A1: INC BYTE PTR [DI] NEXT: LOOP GOON MOV AX, (6) MOV DL, (7) DIV DL MOV [DI+5], AL ; *** END *** LEA DX, RESULT LEA SI, NAME1 MOV CX, L+1 CALL SAVE RET START ENDP CSEG ENDS END START
进入题库练习
问答题已知数据文件IN72.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个数均为偶数且两个十位数中至少有一个数能被9整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并计算满足上述条件的4位数的个数 cnt,最后调用写函数writeDat()把结果cn吸数组b中符合条件的4位数输出到OUT72.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数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("IN72.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", fclose(fp); main ( ) int i; readDat ( ); jsVal ( ); printf ("满足条件的数=%dkn", ont ); for (i=0; i<cnt; i++) printf ( "%d/n", b [i] ); printf ( "/n" ); writeDat (); writeDat ( ) FILE *fp; int i; fp=fopen ( "OUT72. DAT", "w" ); fprintf ( fp, "%dkn", cnt ); for (i=0; i<cnt; i++) fprintf(fp, "%d/n",b[i]); fclose (fp);
进入题库练习
问答题己知数据文件IN60.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab<cd,ab必须足奇数且不能被5整除,cd必须是偶数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT60.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数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("IN60.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", fclose(fp); main ( ) int i; readDat(); jsval(); printf ("满足条件的数=%d/n", cnt); for(i=0;i<cnt;i++) printf("%d/n",b[i]); printf("/n"); writeDat(); writeDat() FILE *fp; int i; fp=fopen("OUT60.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp, "%d/n",b[i]); fclose(fp);
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN59.DAT中读取一篇英文文章,并存入到字符串数组xx中。请编制函数CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存人字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT59.DAT中。 例如:原文Adb Bcdza abck LLhj 结果Aca Bbcyz zabj LLgi 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 [试题程序] #include<stdio.h> #include<string.h> #include<stdlib.h> char xx[50][80]; int maxline=0: int ReadDat(void); void WriteDat(void); void CovertCharD() voidmain() system("CLS"); if(ReadDat()) printf("数据文件IN59.DAT不能打开/n/007"); return; CovertCharD(); WriteDat(); int ReadDat() FILE*fp; int i=0; char*P; if((fp=fopen("IN59.DAT","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!=NULL) P=strchr(xx[i],'Ⅵ'); if(P) * P=0: i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE*fp; int i; system("CLS"); fp=fopen("OUT59.DAT","w"); for(i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着五个用压缩型(组合型)BCD码表示的2位十进制数,请将它们转换成十个 ASCII字符,高位的BCD码转换后放在较高的地址单元。 例如: 内存中有:21H,43H,(共五个字节) 结果为:31H('1'),32H('2'),33H('3'),34H('4'),…(共十个字节) 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DA丁中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放, 由过程SAVE保存到文件OUTPUT1.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 5 STAC SEGMENT STACK DB 128 DUP (?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N*2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAC START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NANE0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从"INPUT.DAT"中读取数据 ; ********* BEGIN ********** LEA SI,SOURCE LEA DI,RESULT MOV CX,N NEXT: MOV (1) ,[SI] (2) MOV BL,AL AND AL, (3) OR AL,30H MOV [DI], (4) (5) MOV AL, (6) PUSH (7) MOV CL, (8) SHR AL,CL POP (9) OR AL,30H MOV [DI],AL (10) LOOP NEXT ; ******** END ******** LEA DX,RESULT ; 结果数据区首址 LEA SI,NANE1 ; 结果文件名 MOV CX,N*2 ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。例如:内存中有01H,04H,02H…(假设后17个字节均大与04H)结果为01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:
进入题库练习
问答题编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 最后调用函数writeDat()把结果输出到文件OUT80.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()和写函数WriteDat()的内容。 试题程序: #include <stdio.h> void writeDat(); int JsValue(int t) void main() int n; n=1000; printf("n=% d,f=% d/n",n,jsValue(n)); writeDat(); void writeDat() FILE * out; int s; out=fopen("OUT80.DAT","w"); s=jsValue(1000);printf("% d",s); fprintf(out,"% d/n",s); fclose(out);
进入题库练习
问答题已知在文件IN3.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组.sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 [试题程序] #include #include #include #include #include #define MAX 100 typedef struct char dm[5]; /*产品代码*/ char mc[11]; /*产品名称* / int dj; /*单价*/ int s1; /*数量*/ 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("IN3.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; scll[i].dj=atol(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].s1=atol(ch); sell[i].je=(long)sell[i].dj*sell[i].s1; fclose(fp); void WriteDat(void) FILE *fp; int i; fp=fopen("OUT3.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].s1,sell[i].je); fclose(fp);
进入题库练习
问答题已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 [试题程序] #include #Include #include #include #include #define MAX 100 typedef struct char dm[5] /*产品代码*/ char mc[11]; /*产品名称*/ int dj; /*单价*/ int s1; /*数量*/ long je; /*金额*/ PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() void main() memset(sell,0,sizeof(sell)); ReadDat(); SorrDat(); WriteDat(); void ReadDat() FILE *fp; char str[80],ch[11]; int i; fp=fopen("IN6.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].s1; fclose(fp); void WriteDat(void) FILE *fp; int i; fp=fopen("OUT6.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].s1,sell[i].je); fclose(fp);
进入题库练习
问答题已知数据文件IN40.DAT中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出这些4位数是素数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt、pjz1、pjz2输出到out40.dat文件中。 例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。9812是非素数,则该数不满足条件,计算平均值pjz2。 注意:部分源程序已给出。 程序中已定义数组:a[300],b[300],已定义变量:ent,pjzl,pjz2。 请勿改动主函数main()、读函数readDat()和写函数wfiteDat()的内容。 [试题程序] #include<stdio.h> int a[300],cnt=0; double Pjz1=0.0,Pjz2=0.0; void readDat(); void writeDat(); int isP(int m) int i; for(i=2;i<m;i++) if(m%i==0)return 0; return 1; void jsValue() voidmain() readDat(); jsValue(); writeDat(); printf("cnt=%d/n满足条件的平均值pjz1=%7.2lf/n不满足条件的平均值pjz2=%7.2lf/n",cnt,Pjz1,pjz2); void readDat() FILE*fp; int i; fp=fopen("in40.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,", fclose(fp); void writeDat() FILE*fP; fp=fopen("out40.dat","w"); fprintf(fp,"%d/n%7.2lf/n%7.2lf/n",cnt,pjz1,Pjz2); fclose(fp);
进入题库练习