渴望学到知识的菜鸟


私信TA

用户名:ldhskd

访问量:33235

签 名:

这小伙子人行,能处!

等  级
排  名 112
经  验 8007
参赛次数 1
文章发表 48
年  龄 18
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

        首先,录入的时候,是用空格分开来的,所以用scanf进行录入,这样就变成

了用空格分隔的字符数组了所以,下一步应该把这两个字符数组的末尾加上'\0',使

其变成字符串



在判断字符串大小之前,我们要先知道如何判断字符串的大小


首先比较两个串的第一个字符,若不相等,则直接比较这两个串的第一个字符的ASCII码

大小,若相等,则比较下一个字符,若还相等,则继续比较下一个字符,知道出现不等的

字符或者其中一个字符串遇到结束符'\0'为止。


例如:he 和 hello

        1、h和h相同,比较下一个

        2、e和e相同,比较下一个

        3、'\0'和l比较,l更大

        所以,是第二个字符串更大,返回-1





判断字符串的大小,我们可以用一个函数来实现

int fun(char* a, char* b) {
	while (*a != '\0' && *b != '\0')
	{
		if (*a > * b)
			return 1;
		if (*a < *b)
			return -1;
		a++;
		b++;
	}
	if (*a == '\0' && *b != '\0')return -1;
	if (*a != '\0' && *b == '\0')return 1;
	return 0;
}

这两个指针a和b一开始都是指向他们对应的字符串的第一个元素,

通过循环来进行判断,只要这两个指针其中一个指向了'\0'就跳出循环

如果循环途中遇到了a指向的值更大,那就返回1反之返回-1

如果循环结算了,说明a或b其中一个指向了'\0',当然,也可能两个都指向了'\0'

如果其中一个指向了'\0',且另一个字符串没有指向'\0',那说明另一个字符串就大于前一个

所以可以通过这样的代码来实现:

if (*a == '\0' && *b != '\0')return -1;
if (*a != '\0' && *b == '\0')return 1;

如果这两个条件都没有执行的说,说明就是这两个都指向了'\0',所以,直接一个return 0;就可以了



参考代码:

#include <stdio.h>
#include <string.h>
int fun(char* a, char* b) {
	while (*a != '\0' && *b != '\0')
	{
		if (*a > * b)
			return 1;
		if (*a < *b)
			return -1;
		a++;
		b++;
	}
	if (*a == '\0' && *b != '\0')return -1;
	if (*a != '\0' && *b == '\0')return 1;
	return 0;
}
int main()
{
	char a[1000];
	char b[1000];
	scanf("%s%s", a, b);
	a[strlen(a)] = '\0';
	b[strlen(b)] = '\0';
	printf("%d", fun(a, b));
}


 

0.0分

7 人评分

  评论区

#include<stdio.h>
int myStrcmp(char *a1,char *a2) ;
int myStrcmp(char *a1,char *a2) 
{
	int i = 0;
    while (a1[i] != '\0' && a2[i] != '\0')
	{
        if (a1[i] > a2[i])
            return 1;
        else if (a1[i] < a2[i])
            return -1;
		i++;
	}
	if(a1[i]>a2[i])
	{
		return 1;
	}
	else if(a1[i]<a2[i])
	{
		return -1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	int n;
	char a1[100];
	char a2[100];
	scanf("%s",&a1);
	scanf("%s",&a2);
	n=myStrcmp(a1,a2) ;
	printf("%d\n",n);
	return 0;
}
2024-03-20 20:28:58
a[strlen(a)] = '\0';
    b[strlen(b)] = '\0';
这两行什么意思啊
2023-12-12 09:22:09
  • «
  • 1
  • »