4.编写一程序,将字符串s1和s2比较,如果s1>s2,输出一个正数;s1=s2,输出0;s1<s2,输出一个负数。不用strcmp函数。两个字符串用gets函数读入。

#include <stdio.h>
int main()
{
 char str1[100],str2[100];
 int i;
 int s1len=0,s2len=0,n;
 printf("请输入字符串1\n");
 gets(str1);
 printf("请输入字符串2\n"); 
 gets(str2);
 while(str1[s1len]!='\0')
   s1len++;
 while(str2[s2len]!='\0')
   s2len++;
 for(i=0;i<s1len||i<s2len;i++) 
   if(str1[i]!=str2[i])
     {n=str1[i]-str2[i];
      break;
    }
if(i==s1len&&i==s2len) 
   n=0;
printf("%d",n);
return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用strcmp函数比较两个字符串s1s2的大小关系,该函数返回值为整型,如果s1>s2,则返回正数;如果s1=s2,则返回;如果s1<s2,则返回负数。具体实现代码如下: ```c #include <stdio.h> #include <string.h> int main() { char s1[100], s2[100]; printf("请输入字符串s1:"); scanf("%s", s1); printf("请输入字符串s2:"); scanf("%s", s2); int result = strcmp(s1, s2); if (result > ) { printf("s1大于s2\n"); } else if (result == ) { printf("s1等于s2\n"); } else { printf("s1小于s2\n"); } return ; } ``` 运行程序,输入两个字符串,即可得到它们的大小关系。 ### 回答2: 可以使用strcmp函数进行字符串比较。该函数的原型为: ```c int strcmp(const char *s1, const char *s2); ``` 该函数用于比较两个字符串s1s2的大小关系。如果s1>s2,则返回一个正数;如果s1==s2,则返回0;如果s1<s2,则返回一个负数。 具体实现代码如下: ```c #include <stdio.h> #include <string.h> int main() { char s1[100], s2[100]; int result; printf("请输入字符串s1:"); gets(s1); printf("请输入字符串s2:"); gets(s2); result = strcmp(s1, s2); if (result > 0) { printf("s1>s2,返回值为%d\n", result); } else if (result == 0) { printf("s1=s2,返回值为%d\n", result); } else { printf("s1<s2,返回值为%d\n", result); } return 0; } ``` 这个程序中,主要使用了gets函数获取输入的两个字符串,然后使用strcmp函数进行比较,最后根据比较结果输出相应的语句。 需要注意的是,在使用gets函数时,应特别注意输入的字符串长度不要超过数组的长度,否则可能会导致数组越界和内存破坏的问题。同时,在实际使用中,可以加入错误处理的机制,以便在输入出现错误时及时提示用户并退出程序。 ### 回答3: 要编写一个比较两个字符串大小的程序,我们需要先了解字符串比较规则。在按照字典序比较两个字符串的大小时,我们需要遵循以下规则: 1. 从字符串的第一个字符开始比较,如果两个字符不相同,则比较它们的ASCII码值。ASCII码值较大的字符大于ASCII码值较小的字符。 2. 如果两个字符串的前面若干个字符均相同,则比较它们的长度。长度较短的字符串小于长度较长的字符串。 根据上述规则,我们可以编写以下程序: ``` #include <stdio.h> #include <string.h> int compare(char *s1, char *s2) { int len1 = strlen(s1); int len2 = strlen(s2); int i, j; for (i = 0, j = 0; i < len1 && j < len2; i++, j++) { if (s1[i] > s2[j]) { return 1; } else if (s1[i] < s2[j]) { return -1; } } if (len1 > len2) { return 1; } else if (len1 < len2) { return -1; } else { return 0; } } int main() { char s1[100], s2[100]; printf("请输入字符串s1:"); scanf("%s", s1); printf("请输入字符串s2:"); scanf("%s", s2); int result = compare(s1, s2); printf("%d\n", result); return 0; } ``` 此程序首先输入两个字符串s1s2,然后调用compare函数比较它们的大小,并将结果输出。compare函数的实现如下: 1. 首先获取两个字符串的长度。 2. 利用for循环依次比较两个字符串的每个字符。如果两个字符不相等,则根据ASCII码值关系返回1或-1。 3. 如果两个字符串前缀的所有字符都相等,则根据长度关系返回1或-1。 4. 如果两个字符串完全相等,则返回0。 在程序运行时,我们可以输入任意两个字符串进行比较输出的结果为正数、零或负数,分别代表第一个字符串大于、等于或小于第二个字符串

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值