输入一串字符,判断是否是回文,如radar就是一个回文

#include<stdio.h>
#include<string.h>

int main(void)
{
	int i, j = 0, n, k = 0;
	char ch[100];
	gets_s (ch);
	n = strlen(ch);
	for (i = n - 1; i >= j; i--, j++)
	{
		if (ch[i] == ch[j])
			k++;
	}
	if (k == n / 2 || k == n / 2 + 1)
		printf("是回文\n");
	else
		printf("不是回文\n");
	return 0;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。 判断一个字符串是否是回文字符串的方法是将字符串正反两个方向进行比较,如果相同,则为回文字符串。在8086汇编语言中,可以使用循环和栈来实现这个过程。 首先,将字符串中的每个字符依次入栈。然后,将栈中的字符依次出栈,并与原字符串中的字符进行比较。如果两者不相同,则说明该字符串不是回文字符串。如果比较完所有字符后,都相同,则说明该字符串是回文字符串。 以下是一个简单的示例程序,可以处理10个长度为5的字符串: ```assembly org 100h section .data strings db "level", "deified", "civic", "radar", "madam", "racecar", "refer", "repaper", "rotor", "sagas" len equ $-strings section .bss stack resb 5 ptr resb 1 section .text start: mov bx, 0 ; 循环计数器清零 mov si, strings ; 字符串指针指向字符串数组开头 mov cx, len ; 循环次数为字符串数组长度 jmp check_palindrome ; 跳转到检查回文字符串的代码段 next_string: inc bx ; 计数器加1 inc si ; 字符串指针指向下一个字符串 jmp check_palindrome ; 跳转到检查回文字符串的代码段 check_palindrome: mov di, si ; di寄存器指向当前字符串 mov cx, 5 ; 循环次数为字符串长度 lea bx, [stack + 4] ; 栈顶指针初始化为最高地址 push cx ; 将循环次数入栈 push_char: mov al, [di] ; 将字符串中的字符入栈 push ax inc di loop push_char ; 循环次数减1,直到循环结束 pop_char: pop ax ; 将栈中的字符出栈 cmp al, [di-1] ; 与原字符串中的字符进行比较 jne not_palindrome ; 如果不相同,则说明该字符串不是回文字符串 loop pop_char ; 继续比较下一个字符 mov al, bx ; 如果所有字符都相同,则说明该字符串是回文字符串 mov [ptr], al ; 中断显示该字符串的位置 int 21h not_palindrome: pop cx ; 如果不是回文字符串,则弹出所有字符 jmp next_string ; 跳转到下一个字符串的检查 mov ah, 4ch ; 结束程序 int 21h ``` 在这个示例程序中,我们使用了一个字符串数组来存储10个长度为5的字符串。首先,我们将循环计数器和字符串指针初始化为0,然后跳转到检查回文字符串的代码段。在该代码段中,我们使用栈来将字符串中的字符入栈,并在出栈时与原字符串中的字符进行比较。如果比较完所有字符后,都相同,则说明该字符串是回文字符串,中断显示该字符串的位置。 如果不是回文字符串,则弹出所有字符,并跳转到下一个字符串的检查。当所有字符串都检查完毕后,程序结束。 希望这个示例程序能够帮助你理解如何在8086汇编语言中判断回文字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值