计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
问答题已知数据文件IN22.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的千位数字加十位数字恰好等于百位数字加上个位数字,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到0UT22.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 [试题程序] #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("IN22.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", fclose(fp); voidmain() int i; 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("OUT22.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"% d/n",b[i]); fclose(fp);
进入题库练习
问答题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)5部分组成。其中:金额=单价×数量。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT10.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[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("OUT10.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);
进入题库练习
问答题已知数据文件IN77.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT77.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVa1( ) void readDat( ) int i; FILE *fp; fp=fopen("IN77.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", fclose(fp); main() int i; readDat(); jsVa1(); printf("满足条件的数=%d/n",cnt); for(i=0;i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat(); writeDat() FILE *fp; int i; fp=fopen("OUT77.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp, "%d/n",b[i]); fclose(fP);
进入题库练习
问答题编制一个程序,其实现的功能为:求出内存中连续存放的20个无符号数序列的最大值和最小值,并将结果按要求存入。结果的存放形式为:按原序列存放20个需要处理的无符号数,后跟该序列的最小值和最大值(最小值在前,最大值在后)。 例如: 内存中有:23H,45H,61H…… 结果为: 23H,45H,61H…… (20个需要处理的原来的无符号数),后面跟该序列的最小值和最大值(最小值在前,最大值在后)。 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 【试题程序】 EXTRN LOAD:FAR,SAVE:FARN EQU 20SSEG SEGMENT STACK DB 256 DUP (?)SSEG ENDSDSEG SEGMENTSOURCE DB N DUP (?)RESULT DB N+2 DUP (0)NAME0 DB 'INPUT.DAT',0NAME1 DB '0UTPUT.DAT',0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART 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 MOV DL,[SI] MOV DH,DL MOV [DI],DL INC SI INC DI MOV CX, (1) AGAIN: MOV AL,[SI] CMP (2) JBE MIN (3) JMP NEXTMIN: CMP (4) JAE NEXT MOV DL,ALNEXT: MOV [DI],AL INC SI INC DI LOOP AGAIN MOV [DI],DL MOV (5) ; ******** END ******** LEA DX,RESULT LEA SI,NAME1 MOV CX,N+2 CALL SAVE RETSTART ENDPCSEG 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链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 20 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N 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,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ; ******BEGIN****** LEA SI,SOURCE LEA DI,RESULT MOV CX,N NEXT: MOV AL,[SI] MOV [DI],AL INC SI ______ LOOP ______ CLD MOV BX,______ NEXT1: LEA SI,RESULT MOV CX,BX NEXT2: LOD ______ CMP [SI],AL JAE ______ XCHG [SI],______ MOV [SI-1],AL NEXT3: LOOP ______ DEC ______ JNZ ______ ; ******END****** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题某级数的前两项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]中,请编制jsValue()函数来实现此功能,最后调用函数writeDat()把数组b的值输出到out81.dat文件中。 注意:部分源程序已给出。 请勿改动主函数main()和输出函数writeDat()的内容。 试题程序: #include <stdio.h> int b[3]; void writeDat(); void JsValue() void main() jsValue(); printf("M=100,n=% d/nM=1000,n=% d/nM=10000,n=% d/n",b[0],b[1],b[2]); writeDat(); void writeDat() FILE * fp; fp=fopen("out81.dat","w"); fprintf(fp,"% d/n% d/n% d/n",b[0],b[1],b[2]); fclose(fp);
进入题库练习
问答题试题要求如下: 请编制程序,其功能是:内存中连续存放着30个无符号字节数,求它们的和。和值形式按字存放,此前按顺序存放参加运算的30个字节。 例如: 内存中有01H,02H,03H,…… 结果为01H,02H,03H,……(30个参加运算的字节),后跟一个字(为前面30个字节的和)。 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中发现整个程序中存在错误之处,请加以修改。 试题程序: EXTRN LOAD: FAR, SAVE: FAR N EQU 30 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N +2DUP(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, NAME0 ; 原始数据文件名 MOV CX, N ; 字节数 CALL LOAD ; 从'INPUT1.DAT'中读取数据 ; **** BEGIN **** LEA SI, SOURCE LEA DI, RESULT MOV CX, N MOV BX, 0 NEXT: MOV AL, [SI] (1) (2) MOV [DI], (3) INC SI (4) LOOP NEXT MOV [DI], (5) ; **** END **** LEA DX, RESULT ; 结果数据区首址 LEA SI, NAME1 ; 结果文件名 MOV CX, N+2 ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题已知在文件IN1.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量s1(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组.sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 [试题程序] include #include #include #include #include #define MAX 100 typedef struct char dm[5]; /*产品代码* / char mc[11]; /*产品名称*/ int dj; /*单价* / int si; /*数量*/ 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("IN1.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() FILE * fp; int i; fp=fopen("OUT1.DAT","w"); for(i=0;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);
进入题库练习
问答题已知在文件IN9.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中,金额=单价X数量。函数ReadDat()的功能是读取这100个销售汜录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列,排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 [试题程序] include<stdio.h> #include<memory.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; PR()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[ll]; int i; fp=fopen("IN9.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; fclosc(fp); void WriteDat() FILE *fP; Int i; fp=fopen("OUT9.DAT","w"); for(i=0;i<100;i++) fprintf(fp,"%s %s %4d %5d %101d\n",sell[i].dm,sell[i].mc,sell[i].sl,sell[i].sl,sell[i].je); fclose(fp);
进入题库练习
问答题fctose(fp);
进入题库练习
问答题试题要求如图10.8所示。部分源程序内容如下:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal()voidreadDat()inti;FILE*fp;fp=fopen("K://k06//35010008//in.dat","r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);voidmain()inti;readDat();jsVal();printf("满足条件的数=%d/n",cnt);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("/n");writeDat();WriteDat()FILE*fp;inti;fp=fopen("K://k06//35010008//out.dat","w");fprintf(fp,"%d/n",cnt);for(i=0;i<cnt;i++)fprintf(fp,"%d/n",b[i]);fclose(fp);
进入题库练习
问答题设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始从1到m报数,如此进行下去直到所有的人都出圈为止。先要求按出圈次序,每10个人为一组,给出这n个人的顺序表。请编制函数Josegh()实现此功能并调用函数WriteDat()把编号按照出圈顺序输出到文件OUT86.DAT中。 设n=100,s=1,m=10进行编程。 注意:部分源程序已给出。 请勿改动主函数main()和写函数WriteDat()的内容。 试题程序: #include <stdio.h> #define N 100 #define S 1 #define M 10 int P[100],n,s,m; void WriteDat(void); void Josegh(void) void main() m=M;n=N;s=S; Josegh(); WriteDat(); void WriteDat(void) int i; FILE * fp; fp=fopen("OUT86.DAT","w"); for(i=N-1;i>=0;i - -) printf("% 4d",p[i]); fprintf(fp,"% 4d",p[i]); if(i%10==0) Printf("/n"); fprintf(fp,"/n"); fclose(fp);
进入题库练习
问答题已知文件INl6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型 10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件 OUT16.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<mem.h> #include<string.h> #include<conio.h> #include <stdlib.h> #define MAX 100 typede f struct char dm[5]; /*产品代码*/ char mc[11]; /* 产品代码 */ 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("IN16.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("OUT16.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);
进入题库练习
问答题已知数据文件IN31.DAT中存有200个4位数,并已调用读函数readDat()把这些数存人数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的2位数ab(新2位数的十位数字是原4位数的千位数字,新2位数的个位数字是原4位数的十位数字),以及把个位数字和百位数字组成另一个新的2位数cd(新2位数的十位数字是原4位数的个位数字,新2位数的个位数字是原4位数的百位数字),如果新组成的两个2位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新2位数的十位数字均不为0,则将满足此条件的4位数按从大到小的顺序存人数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果ent及数组b中符合条件的4位数输出到OUT31.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 [试题程序] #include<stdio.h> #define MAX 200 int a[MAx],b[MAX],cnt=0; voidwriteDat(); void jsVal() void readDat() int i; FILE*fp; fp=fopen("IN31.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d", 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(); void writeDat() FILE*fp; int i; fp=fopen("OUT31.DAT","w"); fprintf(fP,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fP);
进入题库练习
问答题函数ReadDat()的功能是实现从文件ENG9.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChat(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS9.DAT中。 替代关系:f(p)=p* 11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)的值小于等于32,则该字符不变,否则将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 ("数据文件ENG9.IN不能打开! /n/007 "); return; encryptChar(); WriteDat(); int ReadDat(void) FILE *fp; int i= 0; unsigned char *p; if ((fp = fopen("ENG9.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("PSg.DAT", "w" ; for(i = 0; i < maxline; i++) printf("%s/n", xx[i]); fprintf(fp, "%s/n", xx[i]); fclose(fp);
进入题库练习
问答题对10个候选人进行选举,现有一个100条记录的选票文件ENG50.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符。或1,1表示此人被选中,0表示此人未被选中,全选或全不选(空选票)均为无效的选票。给定函数ReadDat()的功能是把选票记录读入到字符串数组xx中。请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT50.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数RedDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> char xx[100] [11]; int yy[10]; int ReadDat (void); void WriteDat (void); void CoutRs (void) void main ( ) int i; for(i=0;i<10;i++) yy[i]=0; if(ReadDat()) printf ( "数据文件ENG50.IN 不能打开! /n/007" ); return; CoutRs (); WriteDat (); int ReadDat (void) FILE *fp; int i; char tt[13]; if((fp=fopen("ENG50.IN","r"))==NULL) return 1; fori=0;i<100;i++) if (fgets (tt, 13, fp)==NULL) return 1; memcpy(xx[i],tt,10); xx[i] [10]=0; fclose(fp); return 0; void WriteDat() FILE *fp; int i; fp= fopen("OUT50.DAT","w"); for(i=0;i<10;i++) fprintf(fp,"%d/n",yy[i]); print f ( "第%d个人的选票数=%d/n", i+1, yy [i] ); fclose(fp);
进入题库练习
问答题请编制程序ex9.ASM,其功能是:从20个有符号字节数据中取出负数并计算其绝对值之和(字型),然后存放在指定的内存区中,多余的空间填0。 例如: 内存中有80H,02H,00H,7CH,7BH,11H,…… 结果为80H,00H,FEH,00H,FDH,00H,85H,00H,…… 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 20 STAC SEGMENT STACK DB 256 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N DUP(?) RESULT DB N 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 MOV ES,AX LEA DX,SOURCE ;数据区起始地址 LEA SI,NAME0 ;原始数据文件名 MOV CX,N ;字节数 CALL LOAD ;从'INPUT1.DAT'中读取数据 ; **** BEGIN **** LEA SI,SOURCE LEA DI,RESULT MOV DX,0 MOV CX,N CLD CON:LODSH (1) JGE (2) MOV [DI],AL INC DI (3) INC DI ADD DL,AL (4) NEXT:LOOP CON MOV [DI],DX ADD DI,2 MOV CX,40 SUB CX,DI MOV AL,0 (5) ; ****END**** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着两个无符号字节序列AK和BK((K=0,1,……,9),求序列CK,CK=AK-BK(CK以有符号字的形式按C0,C1……,C9的顺序连续存放)。 例如: 序列AK为:30H,FFH,80H,FFH… 序列BK为:00H,FFH,FFH,OAH… 结果CK为:0030H,000H,FF81H,FFF5H… 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 10 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGMENT SOURCE DB N*2 DUP(?) RESULT DW N 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,NAME0 ; 原始数据文件名 MOV CX,N*2 ; 字节数 CALL LOAD ; 从"INPUT1.DAT"中读取数据 ******** BEGIN ******** MOV DI,OFFSET RESULT ; 结果从RESULT开始存放 MOV BX,0 (1) PRO: MOV AH,0 MOV AL,SOURCE[BX] ; 序列Ak中的一个字节 SUB AL, (2) ; Ck=Ak-Bk (3) JUMP ; 无借位转JUMP MOV AH, (4) ; 有借位转换成有符号字(为负) JUMP: MOV (5) ,A ADD DI,2 INC BX DEC CX JNZ PRO ; ******** END ******** LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名 MOV CX,N*2 ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题请编制程序ex8.ASM,其功能是:内存中连续存放的20个8位无符号数是一个自动抄表示抄录的20个用户某月的用水量(立方米),为了控制用水量,水费计算公式如下(X表示用水量;Y表示水费,单位为分): a)Y=XX 70 X<=10 b)Y=10×70+(X-10)×120 X>10 例如: 用水量(X):04H,0FH,18H…… 水费(Y):0118H,0514H,094CH…… 试计算出这20个用户应缴纳的水费,结果用字(word)表示。 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之间已给出的源程序使其完整,空白处已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.ON连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 20 RATE1 EQU 70 RATE2 EQU 120 DELTA EQU 10 STAC SEGMENT STACK DB 128 DUP(?) STAC ENDS DATA SEGNENT SOURCE DB N DUP(?) RESULT DW N 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,NAME0 ;原始数据文件名起始地址 MOV CX,N ;字节数 CALL LOAD ;从'INPUT.DAT'中读取数据 ; ******** BEGIN ******** LEA SI, SOURCE LEA DI, RESULT CLD MOV CX,N MOV BL,RATE1 MOV BH,RATE2 NEXT: (1) CMP AL,DELTA J (2) GREAT MUL BL JMP STORE GREAT: (3) MUL BH (4) STORE: (5) (6) INC SI LOOP NEXT ; ******** END ******** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名起始地址 MOV CX,N*2 ;字节数 CALL SAVE ;保存结果到'OUTPUT.DAT'文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题下列程序的功能是:在3位整数(100~999)中寻找符合下面条件的整数,并依次从小到大存人数组b中:它既是完全平方数,又有两位数字相同,例如144,676等。 请编制函数int jsValue(int bb[])实现此功能,满足该条件的整数的个数通过所编制的函数返回。 最后调用函数writeDat()把结果输出到文件OUT88.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()和写函数writeDat()的内容。 试题程序: #include <stdio.h> void writeDat(); int jsValue(int bb[]) void main() int b[20],num; num=jsValue(b); writeDat(num,b); void writeDat(int num,int b[]) FILE * out; int i; out=fopen("OUT88.DAT","w"); fprintf(out,"% d/n",num); for(i=0;i<num;i + +) fprintf(out,"% d/n",b[i]); fclose(out);
进入题库练习