用8086汇编语言编写一个输入字符串的程序

用8086汇编语言编写一个输入字符串的程序,第1张

代码如下:

DSEG SEGMENT

SPACES DB  20H, 20H, 20H, 20H, 24H

LINE DB 0DH, 0AH, 24H

DSEG ENDS

SSEG SEGMENT PARA STACK

DW 256 DUP()

SSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG

BEGIN:

MOV AX, DSEG

MOV DS, AX

LOOP1:

MOV AH, 08H

INT 21H

; 判断回车键

MOV DL, AL

CMP DL, 0DH

JNE LOOP3

MOV DX, OFFSET LINE

MOV AH, 9

INT 21H

JMP LOOP1

LOOP3:

; 判断 SHIFT 键

MOV DL, AL

CMP DL, 0EH

JNE LOOP2

MOV DX, OFFSET SPACES

MOV AH, 9

INT 21H

JMP LOOP1

LOOP2:

; 判断 ESC 键

MOV DL, AL

CMP DL, 1BH

JE EXIT

; 显示字符

MOV DL, AL

MOV AH, 02H

INT 21H

JMP LOOP1

EXIT:

MOV AH, 4CH

INT 21H

CSEG ENDS

END BEGIN

#include<stdio。h>#include<string。h>intmain(){charres[10]

tem[100],maxc;//res[10]用来存储最终结果

maxc是每个输入的字符串中的最大值

intn=10,i,leg,j=0;//leg是每个输入的字符串的长度

j用来当做res数组的下标while(n!=0){gets(tem);leg=strlen(tem);

maxc=tem[0];

for(i=1;i<leg;i++)

{if(tem[i]>maxc)maxc=tem[i];}res[j]=maxc;j++;n——;}for(i=0;i<10;i++)//

输出最终的数组printf("%c",res[i]);printf("\n");return0;}

字符串在存储上类似字符数组

它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

百度百科-字符串

(1)字符串初始化InitString。--------->InitString()

(2)字符串输入InputString。--------->InputString()

(3)字符串输出OutputString。--------->OutputString()

(4)给定字符串,求串长StringLen。--------->StringLen()

(5)给定位置,串插入InsertStringbyLocation。--------->InsertStringbyLocation()

(6)BF算法查找字符串BFSear1ch。--------->BFSear1ch()

(7)KMP算法查找字符串KMPSearch。--------->KMPSearch()

你的理解有问题,剩下的应该怎么做不用我说了,上面的函数都是没有返回值和参数的,这个要你自己定了

#include "stdioh"

#include "stringh"

#include "ctypeh"

void Delete(char str[])

{

int i,j,Length,StartBlank=0,EndBlank=0,MiddleBlank=0;

Length=strlen(str);

for(i=0; i<Length; i++) / 删除前导空格 /

if(str[i]==' ') StartBlank++;

else break;

for(j=0; j<Length; j++)

str[j]=str[j+StartBlank];

Length-=StartBlank;

for(i=Length-1; i>=0; i--) / 删除后导空格 /

if(str[i]==' ') EndBlank++;

else break;

Length-=EndBlank;

while(EndBlank>0)

{

str[Length-1+EndBlank]=str[Length+EndBlank];

EndBlank--;

}

i=0; / 删除中间多余空格 /

while(i<Length)

{

if(str[i]==' ')

{

if(str[i+1]==' ')

{

for(j=i+1; j<Length; j++)

str[j]=str[j+1];

MiddleBlank++;

Length--;

}

else i++;

}

else i++;

}

}

void FindCount(char str[])

{

char FindWord[20],p1,p2;

int count=0; / 查找单词出现的次数 /

printf("Enter a Findword:\n");

gets(FindWord);

p1=str;

p2=FindWord;

while(p1!='\0')

{

if((p1==p2)&&(!isalpha((p1-1))))

while((p1==p2)&&(p2!='\0'))

{ p1++; p2++; }

else p1++;

if((p2=='\0')&&((p1==' ')||(p1=='\0'))) count++; / 所查找单词完全匹配 /

p2=FindWord; / 重置查找单词 /

}

printf("FindCount:%d\n",count);

}

void Swap(char str[])

{

char SwapWord[20],FindWord[20],p1,p2;

int j,s,k,i=0,SwapWordLength,strLength,FindWordLength,n;

printf("Enter a FindWord:\n");

gets(FindWord);

printf("Enter a SwapWord:\n");

gets(SwapWord);

p1=str;

p2=FindWord;

strLength=strlen(str); / 原英文句子长度 /

FindWordLength=strlen(FindWord); / 查找单词长度 /

SwapWordLength=strlen(SwapWord); / 替换单词长度 /

n=SwapWordLength-FindWordLength; / 查找和替换单词长度的差 /

while(p1!='\0')

{

if((p1==p2)&&(!isalpha((p1-1))))

while((p1==p2)&&(p2!='\0'))

{ p1++; p2++; i++; }

else { p1++; i++; }

if((p2=='\0')&&((p1==' ')||(p1=='\0'))) / 所查找单词完全匹配 /

{

if(n<0)

{

j=i-FindWordLength;

for(k=0; k<SwapWordLength; k++)

str[j++]=SwapWord[k];

for(s=i; s<strLength; s++)

str[j++]=str[s];

while(j<strLength)

str[j++]='\0';

strLength=strlen(str);

i+=n;

p1+=n;

}

else

{

for(s=strLength+n; s>i; s--)

str[s]=str[strLength--];

j=i-FindWordLength;

for(k=0; k<SwapWordLength; k++)

str[j++]=SwapWord[k];

strLength=strlen(str);

i+=n;

p1+=n;

}

}

p2=FindWord;

}

}

void main()

{

char str[1000];

printf("Input a English sentence:\n");

gets(str); / 输入一个英文句子 /

printf("Output English sentence:\n");

puts(str);

Delete(str); / 删除前导空格,后导空格,中间多余空格 /

printf("Delete English sentence:\n");

puts(str);

FindCount(str); / 统计某个单词出现次数 /

Swap(str); / 查找并替换某个单词 /

printf("Swap English sentencd:\n");

puts(str);

}

#include <stdioh>

#include <stringh>

int main()

{ int i,j;

char s[10][15],t[15];

for(i=0; i<10; i++)

  scanf("%s",s[i]);

for(i=0; i<9; i++)

  for(j=0; j<9-i; j++)

    if(strcmp(s[j],s[j+1])>0)

    { strcpy(t,s[j]);

      strcpy(s[j],s[j+1]);

      strcpy(s[j+1],t);

    }

for(i=0; i<10; i++)

  printf("%s ",s[i]);

return 0;

}

以上就是关于用8086汇编语言编写一个输入字符串的程序全部的内容,包括:用8086汇编语言编写一个输入字符串的程序、C语言编写“有10个字符串,每个字符串表示一段文字,将10个字符串连接成一篇文章"的程序、c语言字符串 *** 作演示程序设计求大神= =等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9320967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存