计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机等级考试(NCRE)
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
计算机等级考试三级
计算机等级考试一级
网络工程师(计算机等级考试四级)
计算机等级考试二级
数据库工程师(计算机等级考试四级)
计算机等级考试三级
信息安全工程师(计算机等级考试四级)
嵌入式系统开发工程师(计算机等级考试四级)
软件测试工程师(计算机等级考试四级)
问答题已知文件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[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("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);
进入题库练习
问答题已知数据文件IN36.DAT中存有200个4位数,并已调用读函数readDat()把这些数存人数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数(该4位数以后不满5个数,则不统计),则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存人数组b中,最后调用写函数wnteDat()把结果cnt及数组b中符合条件的4位数输出到OUT36.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("IN36.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("OUT36.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:剔除10个8位无符号二进制数据中的最大值和最小值,然后按四舍五入原则计算其余8个数据的算术平均值,将剔除最大值和最小值之后的8个数据依次存入指定的内存区域中,并在其后存放平均值。 例如: 内存中有:01H,05H,04H,00H,07H,09H,02H,06H,08H,03H 结果为: 01H,05H,04H,07H,02H,06H,08H,03H,05H 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 10 DSEG SEGMENT SOURCE DB N DUP(?) RESULT DB N-1 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 TEMP DW 0 DSEG ENDS SSEG SEGMENT STACK DB 200 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG,DS:DSEG,ES:DSEG START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES,AX LEA DX,SOURCE LEA SI,NAME0 MOV CX,N CALL LOAD ******** BEGIN ******** XOR AX,AX XOR BX,BX XOR DX,DX MOV SI,OFFSET SOURCE MOV BL, (1) ; 取第一个数作为最大值暂存BL MOV DL, (2) ; 取第一个数作为最小值暂存DL MOV CX,N GOON: ADD AL,[SI] ADC AH,0 CMP BL,[SI] JA (3) MOV BL,[SI] CONT: CMP DL,[SI] (4) MOV DL,[SI] NEXT: INC SI LOOP GOON CLD LEA SI,SOURCE LEA DI,RESULT MOV CX,N LP2: LODSB CMP AL,BL JE LP1 CMP AL,DL JE LP1 CBW ADD TEMP,AX STOSB LPI: LOOP LP2 MOV AX,TEMP MOV DL, (5) DIV DL ADD AH,AH CMP AH,DL JB OFF (6) OFF: MOV [DI],AL ; ******** END ******** LEA DX,RESULT LEA SI,NAME1 MOV CX,N-1 CALL SAVE ; SAVE RESULT TO FILE RET START ENDP CSEG ENDS END START
进入题库练习
问答题函数ReadDat()实现从文件in.dat中读取一篇英文文章并存入到字符串数组xx中,请编制函数sortcharD(),其函数的功能是以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组中,最后调用函数writeDat(),把结果xx输出到文件out.dat中。 例:原文:dAeBfC. 结果:ABCdef. 原数据文件存放的格式是每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序给出如下: 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 [试题源程序] #include<stdio.h> #include<strinq.h> #include<conio.h> char xx([50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharD(void) 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); void main() system("cls"); if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharD(); WriteDat():
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着20个无符号二进制字序列Xi(i=1,2,…,20),字的最高3位为000,此序列对应某一信号在一段时间内的连续变化,现对该信号进行一阶低通数字滤波,其滤波方程为:Yi=(15*Yi-1/16)+(Xi/16),Y0=0Yi(i=1,2…,20)为滤波后得到的新序列,结果存入内存。例如:内存中有01FFH,02FFH…结果001H,004DH…部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:
进入题库练习
问答题已知在文件IN44.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价×数量。函数PteadDat()的功能是读取这100个销售记录并存人数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存人结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT44.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数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 Sort;Dat() voidmain() memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat;(); void ReadDat() FILE*fp; char str[80],ch[11]; int i; fp=fopen("TN44.DAT","22"); 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=(10ng)sell[i].dj*sell[i].Sl; fclose(fp); void WriteDat() FTLE*fp; int i: fp=fopen("OUT44.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);
进入题库练习
问答题己知数据文件in55.dat中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函grisValue(),其功 能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的4位数平均值pjzl,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out55.dat文件中。 例如:9123,9-1-2-3>0,则该数满足条件,计算平均值pjzl,且个数cnt=cnt+1。 9812,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。 注意:部分源程序已给出。 程序中已定义数组:a[300],已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 试题程序: #include<stdio.h> int a[300], cnt=0; double pjzl=0.0,pjz2=0.0; jsValue() main() int i; readDat(); jsValue(); writeDat(); print f ("cnt =%d/n满足条件的平均值pjz1=%7.21 f/n不满足条件的平均值 pjz2=%7.21f/n",cnt,pjz1,pjz2); readDat () FILE *fp; int i; fp=fopen("in55.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,", fclose(fp); writeDat () FILE *fp; int i; fp=fopen("out55.dat","w"); fprintf(fp,"%d/n%7.21f/n%7.21f/n",cnt ,pjz1,pjz2); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:将内存中由SOURCE指示的10个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。 例如: 内存中有:1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H 结果为:06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从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 DUP(0) RESULT DB N+2 DUP(0) NAME0 DB 'INPUT1.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 NDATA DB N DUP(0) PDATA DB N DUP(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 ______ DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址 MOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址 XOR DX,DX MOV CX,N CLD MAIN 1: LODSB TEST AL,______ JZ MAIN2 INC DH MOV [BX],AI. INC BX ______ MAIN2: INC DL MOV [DI],AL INC DI MAIN3: ______ MAINl LEA SI,PDATA LEA DI,RESULT MOV [DI],DL INC DI XOR CX,CX MOV CL,DL MAIN4: MOV AL,______ MOV [DI],AL INC DI INC SI LOOP ______ MOV [DI],DH INC DI XOR CX,CX MOV CL,DH MOV BX,OFFSET NDATA MAIN5: MOV AL,[BX] MOV [DI],AL INC DI ______ LOOP MAIN5 ;****** END****** LEA DX,RESULT ;结果数据区首址 LEA SI,NAMEl ;结果文件名起始地址 MOV CX,N+2 ;字节数 CALL SAVE ;保存结果到'OUTPUT1.DAT'文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN32.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移至该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。最后调用函数WriteDat()把结果输出到文件OUT32。DAT中。 例如,原文:You can create an index on any field you have the correct record 结果:n any field Yu can create an index rd yu have the crrect rec 原始数据文件存放的格式是;每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数,WriteDat()的内容。 试题程序: #include<stdio.h> #include<string.h> #include<conio.h> char xx[50] [80]; int maxline=O; int ReadDat(void); void WriteDat(void); void StrOR(void) void main() clrscr(); if(ReadDat()) printf("数据文件 IN32.DAT 不能打开! /n/007"); return; StrOR(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN32.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; clrscr(); fp=fopen("OUT32.DAT","w"); for (i=0;i<maxline;i++) printf("%s/n",xx[i]); fprintf fp,"%s/n",xx[i]); fclose(fp)
进入题库练习
问答题下列程序的功能是:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a数组中。找出成绩最高的学生记录(假定最高成绩的记录是唯一的),通过形参返回。请编写函数mmm(STU a[],STU*s)实现程序要求,最后调用函数reawriteDAT()把结果输出到文件out.dat中。 例如:KS01 87 KS09 67 KS11 97 则调用该函数后,输出The lowest:KS09,67。 注意:部分源程序已给出。 请勿改动主函数main()和函数readwriteDAT()的内容。 [试题源程序] #include<stdio.h> #include<string.h> #include<conio.h> #define N 10 void readwriteDat(); typedef struct ss char num[10];int s; STU; void mmm(STU a口,STU*s) main() ( STU a[N]="A01",81,"A02",89,"A03",81),"A04",66),"A05",87),"A06",77),"A07",79, "A08",61,"A09",80),"A10",71),,m; int i; system("cls"); printf("*****The original data*****/n"); for(i=0;i<N;i++)printf("No=%s Mark=%d/n",a[i]nmu/n,a[i].s); mmm(a, wf=fopen("out.dat","w"); for(i:0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s); mmm(a,&m); fprintf(wf,"The lowest:%s,%d/n",m.num,m.s); fclose(rf); fclose(wf);
进入题库练习
问答题请编制程序PROG1.ASM,其功能是:内存中连续存放的20个8位有符号数(补码)是由一个8位A/D转换器采集的双极性信号(Xn),现要求对该信号作如下限幅处理(处理后的信号记为Yn): a) Yn=-100 Xn<-100 b) Yn=Xn ∣Xn∣≤100 c) Yn=100 Xn>100 例如: Xn:68H,60H,8EH,38H,… Yn:64H,61H,9CH,38H,… 部分程序已在PROG1.ASM中给出,请填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每行空白一般只需一条指令,但功能相当的多条指令亦可)或删除 BEGIN和END之间原有的代码并自行编写程序片段来完成要求的功能。 原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。 试题程序: EXTRN LOAD:FAR, SAVE:FAR N EQU 20 M EQU 100 DSEG SEGMENT SOURCE DW N DUP(?) RESULT DW N DUP(0) NAME0 DB 'INPUTI.DAT',0 NAME1 DB 'OUTPUT1.DAT',0 DSEG ENDS SSEG SEGMENT STACK DB 128 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG, SS:SSEG 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 ; 从INPUT1.DAT中读取数据 ; **** BEGIN **** LEA SI,SOURCE LEA DI,RESULT (1) NEXT: MOV AX,[SI] CMP AX,-M (2) L1 CMP AL,M (3) MOV AL,M JMP L2 L1: MOV AL,-M L2: MOV [DI],AL (4) (5) (6) ; **** END **** LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名起始地址 MOV CX,N ; 字节数 CALL SAVE ; 保存结果到OUTPUT1.DAT文件中 RET START ENDP CSEG ENDS END START
进入题库练习
问答题已知数据文件in38.dat中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数JsVal(),其功能是:若一个4位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到out38.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( "in38.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/n",b[i]); writeDat(); writeDat ( ) FILE *fp; int i; fp=fopen("out38.dat","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp);
进入题库练习
问答题函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组XX中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存人字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。 例如,原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是:每行的宽度均小于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 ConvertCharA(void) voidmain() system("CLS"); if(ReadDat()) printf("数据文件IN5.DAT不能打开!/n/007"); return; ConvertCharA(); WriteDat(); int ReadDat(void) FILE*fp; int i=0; char*P; if((fP=fopen("IN5.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("OUT5.DAT","W"); for(i=0;i<maxline;i++) printf("%S/n"xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
进入题库练习
问答题已知数据文件in81.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsVaiue(),其功能是,求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out81.dat文件。 例如;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.2lf/n不满足条件的平均值 pjz2=%7.2lf/n",cnt,pjz1,pjz2); readDat() FILE *fp; int i; fp=fopen( "in81.dat","r"); for(i=0;i<300;i++) fscanf(fp,"%d,", writeDat() FILE *fp; int i; fp=fopen("out81.dat","w") fprintf(fp,"%d/n%7.2lf/n%7.2lf/n",cnt ,pjz1,pjz2); fclose(fp);
进入题库练习
问答题下列程序的功能是:选出100~1000之间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数。计算并输出上述这些素数的个数cnt,以及这些素数值的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT90.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()和写函数writeDAT()的内容。 试题程序: #include <stdio.h> int cnt,sum; void writeDAT(); void countValue() void main() cnt=sum=0; countValue(); printf("素数的个数=% d/n",cnt); printf("满足条件素数值的和=% d",sum); writeDAT(); void writeDAT() FILE * fp; fp=fopen("OUT90.DAT","w"); fprintf(fp,"% d/n% d/n",cnt,sum); fclose(fp);
进入题库练习
问答题请编制程序,其功能是:内存中有一个由16个十六位二进制数组成的数组(SOURCE)和一个字变量L。试将L作为逻辑尺对数组SOURCE进行下列处理:如L的第i位为0,则数组的第i个数不变:如L的第i位为1,则数纽的第i个数按位取反。字L的位序从低到高依次为0至15,数组下标依次从0到15。 例如:L=0009H 数组为:139CH,89C6H,5437H,8819H,… 变换为:EC63H,89C6H,5437H,77E6H,… 部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入(L在前,SOURCE在后)。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] EXTRN LOAD:FAR,SAVE:FAR N EQU 16 STAC SEGMENT STACK DB 128 DUP (?) STAC ENDS DATA SEGMENT L DW ? SOURCE DW N DUP(?) RESULT DW N DUP(0) NAME0 DB 'INPUT.DAT',0 NAME1 DB 'OUTPUT.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,L ;数据区起始地址 LEA SI,NANE0 ;原女合数据文件名 MOV CX,2*(N+1) ;字节数 CALL LOAD ;从'INPUT.DAT'中读取数据 ; ******** BEGIN ************ LEA SI, SOURCE{{U}} {{/U}} MOV CX,N MOV DX,{{U}} {{/U}}L0: MOV AX, [SI]{{U}} {{/U}}L,DX{{U}}{{/U}}STORE NOT AX STORE:MOV [DI],AX ADD DI,2 ADD SI,2 {{U}}(5) {{/U}} LOOP L0 ; ******** END ******** LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,2*N ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习
问答题己知数据文件IN45.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数ab-cd≥10且ab-cd≤20且两个数均为偶数,同时两个新十位数字均不为零,则将满足此条件的4位数按从人到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT45.DAT文件中。 注意:部分源程序已给出。 程序中已定义数组:a[200],b[200],已定义变量:cnt。 请勿改动主函数main0、读函数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("IN45.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("OUT45.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp, "%d/n",b[i]); fclose(fp);
进入题库练习
问答题试题要求如图10.6所示。部分源程序内容如下:#include<stdio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidWriteDat(void);voidCalValue(void)voidmain()inti;for(i=0;i<MAXNUM;i++)xx[i]=0;if(ReadDat())printf("数据文件IN.DAT不能打开!/007/n");return;CalValue();printf("文件IN.DAT中共有正整数=%d个/n",totNum);printf("符合条件的正整数的个数=%d个/n",totCnt);printf("平均值=%.2lf/n",totPjz);WriteDat();intReadDat(void)FILE*fp;inti=0;if((fp=fopen("K://k06//35010005//in.dat","r"))==NULL)returni;while(!feof(fp))fscanf(fp,"%d,",&xx[i++]);fclose(fp);return0;voidWriteDat(void)FILE*fp;fp=fopen("K://k06//35010005//OUT.DAT","w");fprintf(fp,"%d/n%d/n%.2lf/n",totNum,totCnt,totPjz);fclose(fp);
进入题库练习
问答题编制一个程序,其功能为:内存中以8位无符号数形式连续存放着10个数据,这数据来自于一个自动抄表系统记录的10个用户某月天然气的使用量(立方米),天然气费计算公式如下(其中,X表示天然气用量,Y表示应该天然气费): a)Y=X×80 X≤8 b)Y=8×80+(X-8)×120 X>8 计算每个用户需要交的天然气费,结果用字表示,并将结果存入指定单元。 例如: 用天然气量为:05H,07H,12H…… 则天然气费为:0190H,0348H,0780H…… 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。 请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。 对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。 [试题程序] TRN AD:FAR,SAVE:FAR N EQU 0 DSEG EGMENT SOURCE DB DUP(?) RESULT DW DUP(0) NAME0 DB INPUT.DAT',0 NAME1 DB OUTPUT.DAT',0 DSEG NDS SSEG EGMENT TACK B 56 DUP(?) SSEG NDS CSEG EGMENT SSUME CS:CSEG,DS:DSEG,SS:SSEG START ROC AR USH S OR AX,AX USH AX OV AX,DSEG OV DS,AX EA DX,SOURCE EA SI,NAME0 OV CX,N ALL OAD ; ********* BEGIN ******** EA SI,SOURCE EA DI,RESULT LD OV CX,N OV DL,80 OV DH,120 AGAIN: MOV AL,[SI] MP AL,8 (1) UL DL MP NEXT BIGGER: (2) UB AL,8 (3) DD AX,BX NEXT: (4) (5) NC SI OOP GAIN ; ***+**** END ******** EA DX,RESULT EA SI,NAME1 OV CX,N*2 ALL AVE ET START ENDP CSEG NDS END START
进入题库练习
问答题请编制程序,其功能是:内存中连续存放着20个有符号字节数序列,求出该序列的最大值和最小值。结果存放形式为:先按原序放20个需处理的有符号字节数序列,后跟该程序列的最大值和最小值(最大值在前,最小值在后)。 例如: 内存中有:81H,02H,03H,... 结果为:81H,02H,03H,...(共20个需处理的原有符号字节序列),后跟该序列的最大值和最小值(最大值在前,最小值在后) 部分程序已给出,其中原始数据由过程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****** ;最大值放在BH中,最小值放在BL中 LEA SI,SOURCE LEA ______,RESULT MOV BH,[SI] ;第一个字节既为最大值 MOV BL,BH ;又为最小值 MOV [DI],BH ADD SI,______ ______ MOV CX,N-1 NEXT: MOV AL,[SI] CMP AL,BH ______ CHKMIN MOV BH,AL JMP ENDL CHKMIN: CMP AL,BL JAE ENDL MOV ______,AL ENDL: MOV [DI],AL ADD SI,1 ADD DI,1 LOOP NEXT ______ ______ MOV [DI],______ ; ******END****** LEA DX,RESULT ;结果数据区首址 LEA SI,NAME1 ;结果文件名 MOV CX,N+2 ;结果字节数 CALL SAVE ;保存结果到文件 RET START ENDP CODE ENDS END START
进入题库练习