代码如下:
DSEG SEGMENTSPACES 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语言字符串 *** 作演示程序设计求大神= =等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)