请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是小写字母a~z之间的字符,请把它们转换成相应的大写字符;若为其他字符,不作转换。例如:内存中有61H('a'),62H('b'),31H('1'),41H('A'),42H('B')…结果为 41H('A'),42H('B'),31H,41H('A'),42H('B')…部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTP

题目

请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是小写字母a~z之间的字符,请把它们转换成相应的大写字符;若为其他字符,不作转换。

例如:

内存中有61H('a'),62H('b'),31H('1'),41H('A'),42H('B')…

结果为 41H('A'),42H('B'),31H,41H('A'),42H('B')…

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

请填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:


相似考题
更多“ 请编制程序,其功能是:内存中连续存放着20个ASCII字符,如果是小写字母a~z之间的字符,请把它们转换成相应的大写字符;若为其他字符,不作转换。例如:内存中有61H('a'),62H('b'),31H('1')”相关问题
  • 第1题:

    请编制程序,其功能是:内存中连续存放着20个ASCⅡ字符,如果是小写字母a~z之间的字符(包括字母a和z),请把它们转换成相应的大写字母所对应的ASCⅡ字符;若为其他字符,不作转换。

    例如:

    内存中有:61H('a'),62H('b'),31H('1'),41H('A'),42H('B')…

    结果为: 41H('A'),42H('B'),31H,41H,42H…

    部分程序已经给出,其中原始数据由过程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 ; 从"INPUT.DAT"中读取数据

    ; ******** BEGIN ********

    LEA SI, SOURCE

    LEA DI, RESULT

    MOV CX, N

    NEXT: MOV AL,[SI]

    CMP AL,'a'

    JB (1)

    CMP AL, (2)

    J (3) UPPER2

    SUB AL, (4)

    UPPER2: HOV [DI], (5)

    INC (6)

    INC (7)

    (8) NEXT

    ; ******** END ********

    LEA DX,RESULT ; 结果数据区首址

    LEA SI,NAME1 ; 结果文件名

    MOV CX,N ; 结果字节数

    CALL SAVE ; 保存结果到文件

    RET

    START ENDP

    CODE ENDS

    END START


    正确答案:(1) UPPER2 (2) 'z' (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP
    (1) UPPER2 (2) 'z' (3) JA (4) 20H(5) AL (6) SI (7) DI (8) LOOP 解析:本题主要考查的是将小写字母改写成大写字母的实现方法。题目中给出的程序是利用循环依次对每个字符进行判断是否是小写字母,若是则减去32即成为该字母相对应的大写字母。

  • 第2题:

    计算机的内存中有一项占据4个字节的数据,内容依次为61H,41H,31H,51H,这项数据可能是()。

    A.汉字,西文混合字符串

    B.汉字字符串

    C.西文字符串

    D.控制字符串


    正确答案:C

  • 第3题:

    从键盘输入一组小写字母,保存在字符数组str中。请补充函数proc(),该函数的功能是:把字符数组str中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。例如,输入abcdefg,输出aBcDeFg。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proe()的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:


    【解析】要将字符串中所有下标为奇数的小写字母转化为大写字母,应该检查字符串str中从第一个到最后一个字符,判断其下标是否为奇数,因此【l】填“str[i]!=ˊ\0ˊ”。每找到一个下标为奇数的小写字母。就将其转换为大写字母,大写字母的ASCⅡ码值比与其对应的小写字母小32,因此【2】填“32”。每判断完一个字符,要为检查下一个字符做准备,因此【3】填“i++”。

  • 第4题:

    ASCII编码字符集是最常用的西文字符集。下列关于ASCII编码字符集的叙述中,错误的是( )。

    A.每个字符的编码在内存中只占一个字节

    B.英文大小写字母的编码不相同

    C.每个字符在.PC机键盘上都有一个键与之对应

    D.部分字符是不可显示(打印)的


    正确答案:C

  • 第5题:

    下列字符中,其ASCII码值最大的是______。

    A.空格字符

    B.9

    C.A

    D.z


    正确答案:D

  • 第6题:

    strtolower()函数的功能是()

    • A、将给定的字符串全部转换为小写字母
    • B、将给定的字符串全部转换为大写字母
    • C、将给定的字符串首字母转换为小写字母
    • D、将给定的字符串首字母转换为大写字母

    正确答案:A

  • 第7题:

    lash能将ASCII代码转换成对应的字符,也可以返回字符对应的ASCII码。Chr表示什么()。

    • A、转换ASCII码为字符
    • B、转换字符为ASCII码
    • C、转换字符为海明码
    • D、转换海明码为字符

    正确答案:A

  • 第8题:

    已知大写字母’A’的ASCII码是65,小写字母“a”的ASCII码是97,则字符常量“/101”是()

    • A、字符’A’
    • B、字符’a’
    • C、字符’e’
    • D、非法的常量

    正确答案:A

  • 第9题:

    strtoupper()函数的功能是:()

    • A、将给定字符串全部转换为大写字母
    • B、将给定字符串全部转换为小写字母
    • C、将给定字符串首字母转换为大写字母
    • D、将给定字符串首字母转换为小写字母

    正确答案:A

  • 第10题:

    问答题
    如何将字符串首字符转换成大写

    正确答案: ucfirst():该函数的作用是将字符串的第一个字符改成大写,该函数返回首字符大写的字符串.用法同strtolowe()一样.
    解析: 暂无解析

  • 第11题:

    问答题
    编一个程序,输入一个字符,如果输入的字符是大写字母,则转换为小写字母;如果输入的字符是小写字母,则转换为大写字母,否则不转换。

    正确答案: charch,c;
    Console.WriteLine("请输入一个字符");
    ch=char.Parse(Console.ReadLine());
    if(ch>=’A’&&ch<=’Z’)
    {
    c=(char)(ch+32);
    Console.WriteLine("字符{0}为大写字母,转换为小写字母为{1}",ch,c);
    }
    elseif(ch>=’a’&&ch<=’z’)
    {
    c=(char)(ch-32);
    Console.WriteLine("字符{0}为小写字母,转换为大写字母为{1}",ch,c);
    }
    else
    Console.WriteLine("{0}既不是大写字母也不是小写字母",ch);
    解析: 暂无解析

  • 第12题:

    单选题
    已知大写字母’A’的ASCII码是65,小写字母“a”的ASCII码是97,则字符常量“/101”是()
    A

    字符’A’

    B

    字符’a’

    C

    字符’e’

    D

    非法的常量


    正确答案: B
    解析: 暂无解析

  • 第13题:

    以下关于全角和半角的叙述中,( )不正确。

    A. 半角字符指小写字母和汉字筒体,全角字符指大写字母和汉字繁体

    B. 在屏幕上,全角字符显示的宽度为半角字符的两倍

    C. 在磁盘内存储的文档中,每个半角字符占用一个字节

    D. 在磁盘内存储的文档中,每个全角字符占用两个字节


    答案: A 半角,即一个字符占用一个标准字符的位置。主要包括:英文字母、罗马数字、西方语言的符号。 全角,即一个字符占用两个标准字符的位置。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。

  • 第14题:

    试题要求如下:

    请编制程序,其功能是:内存中连续放着20个ASCII字符,如果是小写字母A~Z之间的字符,请把它们转换成相应的小写字母:若为其他字符,均转换成ASCII字符'NUL' (00H)。

    例如:

    内存中有:41H ('A'),42H ('B'),5EH,64H,48H……

    结果为: 61H ('a'),62H ('b'),00H('NUL'),00H('NUL'),00H('NUL')……

    部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。在BEGIN和AND之间编程完成要求的功能。

    对程序进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果。

    试题程序:

    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(0FH)

    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'中读取数据

    LEA SI, SOURCE

    LEA DI, RESULT

    ; **** BEGIN ****

    ; **** END ****

    LEA DX, RESULT ; 结果数据区首址

    LEA SI, NAME1 ; 结果文件名

    MOV CX, L+I ; 结果字节数

    CALL SAVE ; 保存结果到文件

    RET

    START ENDP

    CODE ENDS

    END START


    正确答案:MOV CX N NEXT: MOV AL [SI] CMP AL 'A' JB PRO CMP AL 'Z' JA PRO XOR AL 20H JMP PSH PRO: MOV AL 00H PSH: MOV [DI] AL INC DI INC SI LOOP NEXT
    MOV CX, N NEXT: MOV AL, [SI] CMP AL, 'A' JB PRO CMP AL, 'Z' JA PRO XOR AL, 20H JMP PSH PRO: MOV AL, 00H PSH: MOV [DI], AL INC DI INC SI LOOP NEXT 解析:本程序要求将A~Z之间的字母转换成相对应的小写字母。DI中存放着的是转换后的偏移地址,每次加1;AL的作用是相当于一个指针,每次SOURCE与它相加;CX是一个循环计数器,每次减1。

  • 第15题:

    函数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
    #include
    #include
    char xx[50][80] ;
    int maxline = 0 ;/* 文章的总行数 */
    int ReadDat(void) ;
    void WriteDat(void) ;
    void ConvertCharA(void)
    {
    int i,j; /*定义循环控制变量*/
    int str; /*存储字符串的长度*/
    for(i=0;i
    {
    str=strlen(xx[i]); /*求得当前行的字符串的长度*/
    for(j=0;j
    if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小写字母*/
    if(xx[i][j]=='z')
    xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/
    else
    xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/
    }
    }
    void main()
    {
    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) ;
    }

  • 第16题:

    已知大写字母B的ASCII码值是66,小写字母b的ASCII码值是98,则用八进制表示的字符常量'\ 142'是( )

    A.字符B

    B.字符b

    C.字符a

    D.非法的常量


    正确答案:B

  • 第17题:

    编一个程序,输入一个字符,如果输入的字符是大写字母,则转换为小写字母;如果输入的字符是小写字母,则转换为大写字母,否则不转换。


    正确答案: charch,c;
    Console.WriteLine("请输入一个字符");
    ch=char.Parse(Console.ReadLine());
    if(ch>=’A’&&ch<=’Z’)
    {
    c=(char)(ch+32);
    Console.WriteLine("字符{0}为大写字母,转换为小写字母为{1}",ch,c);
    }
    elseif(ch>=’a’&&ch<=’z’)
    {
    c=(char)(ch-32);
    Console.WriteLine("字符{0}为小写字母,转换为大写字母为{1}",ch,c);
    }
    else
    Console.WriteLine("{0}既不是大写字母也不是小写字母",ch);

  • 第18题:

    如何将字符串每个单词的首字符转换成大写


    正确答案: U.cwords(): 该函数将传入的字符串的每个单词的首字符变成大写.如"helloW.orld",经过该函数处理后,将返回"Hello Word".用法同strtolowe()一样.

  • 第19题:

    下列关于字符叙述中正确的是:()

    • A、西文字符“A”的ASCII码值在内存中占1字节
    • B、汉字“天”的ASCII码值在内存中占2字节
    • C、ASCII码是汉字和西文字符在计算机内部的表示形式
    • D、大写字母“A”和小写字母“a”的ASCII码值相同

    正确答案:A

  • 第20题:

    已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用 八进制表示的字符常量’/101’是().

    • A、字符A
    • B、字符a
    • C、字符e
    • D、非法的常量

    正确答案:A

  • 第21题:

    如何将字符串首字符转换成大写


    正确答案: ucfirst():该函数的作用是将字符串的第一个字符改成大写,该函数返回首字符大写的字符串.用法同strtolowe()一样.

  • 第22题:

    单选题
    下列关于字符叙述中正确的是:()
    A

    西文字符“A”的ASCII码值在内存中占1字节

    B

    汉字“天”的ASCII码值在内存中占2字节

    C

    ASCII码是汉字和西文字符在计算机内部的表示形式

    D

    大写字母“A”和小写字母“a”的ASCII码值相同


    正确答案: C
    解析: 暂无解析

  • 第23题:

    单选题
    标准函数fgets(s,n,f)的功能是()
    A

    从文件f中读取长度为n的字符串存人指针s所指的内存

    B

    从文件f中读取长度不超过n-1的字符串存人指针s所指的内存

    C

    从文件f中读取n个字符串存人指针s所指的内存

    D

    从文件f中读取长度为n-1的字符串存入指针s所指的内存


    正确答案: D
    解析: 暂无解析