谁能帮我解释一下 为什么那后面有一个s? 为什么输出结果中多了一个字符S? 为什么显示出是这样排列

作者&投稿:庾高 (若有异议请与网页底部的电邮联系)
删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用~

#include

void delchar(char *s,char c)
{
char *p;

for(p=s;*s;s++)
if(*s!=c)
*p++=*s;
*p='\0';
}

void main()
{
char c,s[100];

printf("输入字符串:");
gets(s);
printf("输入要删除的字符:");
scanf("%c",&c);
delchar(s,c);
printf("%s
",s);
}

stack segment stack
dw 100 dup(0)
stack ends ;堆栈段
data segment
str db 100 dup(?)
data ends ;代码段定义一100字节的str字符串
code segment
assume cs:code,ds:data,ss:stack ;各段与段寄存器的关系
main proc far
mov ax,data
mov ds,ax ;将data段地址给ds
mov si,offset str ;将字符串str的偏移地址给si
mov bx,0 ;将bx清零
next: mov ah,1
int 21h
mov [si],al ;输入一个字符给字符串
inc si ;将si加1
inc bx ;将bx加1
cmp al,0dh ;将al与13(回车)比较
je sort ;相等时跳转到sort
jmp next ;不相等跳转到next
sort: sub bx,1 ;bx减1
mov [si],byte ptr'$' ;将字节型$移到si所指位置
next0: mov cx,bx ;将bx内容送给cx
mov si,offset str ;将str偏移地址给si
next2: mov al,[si]
cmp al,[si+1] ;比较字符串的相邻两位
jbe next1 ;小于或等于时跳转到next1
xchg al,[si+1]
mov [si],al ;大于时将后面的字符移到前面
next1: inc si ;si加1
loop next2 ;反复next2来比较
dec bx ;bx减1
jnz next0 ;不等于0时跳转到next0
mov dx,offset str ;将str偏移地址给dx
mov ah,9
int 21h ;显示字符串
mov ah,4ch
int 21h ;结束程序返回DOS

main endp
code ends
end main ;程序结束,起始点main

这九成九是印刷问题,或者是试卷的排版问题。所以你就不用纠结了。
要知道,源程序是在开发工具中编辑的,有一个标点错误都可能编译不了;而运行结果是在屏幕上直接输出的,一个空格都不会显示错误。但是将它们在文字处理软件(如Word)中作为文本进行排版时,结果就可能大大不同了,因为那不再是程序运行的结果,而是人为编辑的结果。


浮山县19577526913: 谁能帮我解释一下 为什么那后面有一个s? 为什么输出结果中多了一个字符S? 为什么显示出是这样排列 -
示山活血: 这九成九是印刷问题,或者是试卷的排版问题.所以你就不用纠结了.要知道,源程序是在开发工具中编辑的,有一个标点错误都可能编译不了;而运行结果是在屏幕上直接输出的,一个空格都不会显示错误.但是将它们在文字处理软件(如Word)中作为文本进行排版时,结果就可能大大不同了,因为那不再是程序运行的结果,而是人为编辑的结果.

浮山县19577526913: 谁能帮我解释一下这个西门子STEP7程序啊?为什么加在基本地址上还加1呢? -
示山活血: // Set default counter = 0L 0T #Default_Counter 在存储器放入0并传送给 #Default_Counter 这个应该很好理解,人家说了#Default_Counter设置为0// Address default counterL #BaseAddressL W#16#1+ISLD 3T #AddressPointer 来看这一...

浮山县19577526913: 汉语拼音方案 中为什么用一个i代表三个音呢? -
示山活血: 这主要是为了减少韵母数量,而且普通话中,i在任何一个声母后面只表示一个音位,所以不会有一个拼音对应两种念法.另外,这三个音位的来源基本相同.

浮山县19577526913: 古代的人为什么名字后面都有字什么什么的,这是什么意思啊,谁能帮我解答下 -
示山活血: 据说上古时期,婴儿在出生三个月的时候由父亲给命名,这就是古人“名”的由来.其实在我国民间,部分地区至今仍保留着婴儿满月时才命名的习俗,不过是命名的权利不再由父亲一人担当,而是由婴儿的亲人共同担当.有趣的是,在古代,男孩子长到20岁的时候要举行“结发加冠”之礼,以示成人,这时就要取字.而女孩子在15岁时要举行“结发加筓”之礼以示可以嫁人了,这时也要取字.

浮山县19577526913: 【计算机专业英语】you have used the only inheritance ...谁能帮我解释一下,这句话为什么这么翻译? -
示山活血: you have used the only inheritance possibility "that" you have ,加上一个that是不是好理解一点?第一个have表示完成时,第二个have表示你所“拥有”, for your customer class 是限定 the only inheritance possibility 的,表示其属性.because 后面解释了第一个“only”.满意否?

浮山县19577526913: 谁能帮我解释一下CDR 存储时,图形和备份图天的概念,备份图形占不占内存? -
示山活血: CorelDRAW里关于备份有2个选项:一个是间隔一定的时间(具体多长可根据自己喜好调整),软件自动对正在开着的文件备份一次,这样得到得文件叫做“XXX.cdr_的自动备份”,另一个是在存储时做得备份,叫做“XXX.cdr_的备份”,当你现在的文件受损或做了无法退回的误操作时,可把这个备份文件后面的“_的备份”去掉,可以直接打开,它可以把你的损失降到最小.备份文件不占内存,只占磁盘空间,但软件做备份存储时,你会无法进行操作,所以自动备份时间不要设置的过短.另,你改备份文件里的东西,对源文件不会有影响.

浮山县19577526913: 谁能帮我解释一下古诗中的倒装句是如何鉴别的呢?是不是只要主语在后面就是倒装句呢?比如:竹喧归浣女,莲动下渔舟 -
示山活血:[答案] 倒装句主要有四种: (1)主谓倒装.在感叹句或疑问句中,为了强调谓语而将它放到句首,以加强感叹或疑问语气. (2)宾语前置.否定句中代词充当宾语、疑问代词充当动词或介词的宾语以及用“之”字或“是”字作...

浮山县19577526913: I was drafted into the ...谁能帮我分析一下这个句子? -
示山活血: 第一个and后面是一个插入语,可以先抛开不看,与后面的句子就接上了,而这个and链接的是两个并列的句子,所以都有自己的动词,但第二个句子的主语I就省略了,事实上是:I was drafted into the Army at the end of my junior year.I had no inclination to return to finish college.

浮山县19577526913: The time will come when my words will come true.谁能给我解释下后面的一个“will”在那儿是什么用法?因为按平时的习惯是不加那个“will”的呀 -
示山活血:[答案] 这是由when 引导的一个定语从句,先行词是time,所以是将来时.不是状语从句

浮山县19577526913: 谁能帮我解释一下这首诗 -
示山活血: 这些都是签文 1.家族未来的道路充满荆棘,儿孙要谨防危险,当下多多祈福,才能免去日后的分离之苦 2.不大清楚 3.不要忧愁已经晚了,残花开在旧枝上,一朝遇上好机会,就能到达仙境 4.怪异现象发生,亲人骨肉分离,下雪又逢着大雨,喝杯酒都能惹出是非

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网