C语言中如何比较输入的字符串是否相同并且输出自己想要的数据

C语言中如何比较输入的字符串是否相同并且输出自己想要的数据

因为前几天参加了个蓝桥杯的比赛,比赛中遇到了考察这个知识点的问题,所以想介绍给大家,鄙人第一次写帖子,如有不妥的地方请见谅。


比较两个字符串是否相等并输出数据

这里用到了一个函数strcmp(),在使用strcmp()函数之前需要导入头文件#include<string.h>:

#include<stdio.h>
#include<string.h>
int main(){
	char str1[20];
	gets(str1);
	if(strcmp(str1,"A1")==0){
		printf("1898\n");
		printf("589\n");
	}
	return 0;
} 


原因分析:

这里是判断输入的字符是否与A1相同,如果相同则输出数据1898、589

在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要了解什么是回文。回文就是正着读和倒着读都一样的字符串,比如“level”和“racecar”。 对于输入的一组字符串,可以使用堆栈和队列来判断是否回文。 堆栈是一种先进后出的数据结构,可以借助堆栈实现字符串的反转。我们可以将原始字符串的每个字符依次入栈,然后再依次出栈,得到反转后的字符串。如果反转后的字符串与原始字符串相同,则说明该字符串是回文。 队列是一种先进先出的数据结构,可以借助队列实现字符串的正序。我们可以将原始字符串的每个字符依次入队,然后再依次出队,得到正序的字符串。如果正序的字符串与原始字符串相同,则说明该字符串是回文。 下面是使用堆栈和队列判断字符串是否回文的示例代码: ```c #include <stdio.h> #include <string.h> #define MAX_LEN 100 typedef struct { char data[MAX_LEN]; int top; } Stack; typedef struct { char data[MAX_LEN]; int head; int tail; } Queue; void initStack(Stack *s) { s->top = -1; } void push(Stack *s, char c) { s->data[++s->top] = c; } char pop(Stack *s) { return s->data[s->top--]; } void initQueue(Queue *q) { q->head = 0; q->tail = -1; } void enqueue(Queue *q, char c) { q->data[++q->tail] = c; } char dequeue(Queue *q) { return q->data[q->head++]; } int isPalindrome(char *str) { int len = strlen(str); Stack s; Queue q; int i; initStack(&s); initQueue(&q); for (i = 0; i < len; i++) { push(&s, str[i]); enqueue(&q, str[i]); } for (i = 0; i < len; i++) { if (pop(&s) != dequeue(&q)) { return 0; } } return 1; } int main() { char str[MAX_LEN]; printf("请输入一个字符串: "); scanf("%s", str); if (isPalindrome(str)) { printf("%s是回文字符串\n", str); } else { printf("%s不是回文字符串\n", str); } return 0; } ``` 在上面的代码,我们定义了一个结构体类型`Stack`和`Queue`,分别表示堆栈和队列。`isPalindrome`函数用于判断字符串是否回文。首先,我们将字符串的每个字符依次压入堆栈和队列。然后,我们依次弹出堆栈的字符和出队列的字符,并比较它们是否相等。如果全部相等,则说明该字符串是回文。 在`main`函数,我们输入一个字符串,并调用`isPalindrome`函数判断该字符串是否回文。如果是回文,则输出“是回文字符串”,否则输出“不是回文字符串”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值