sususususu 发表于 2022-11-28 16:35:13

函数题目,萌新求教

编写程序,比较两字符串S1和S2,如果S1>S2,输出正数1;如果S1=S2,输出0;如果S1 < S2,输出 –1。要求S1和S2可在主函数内从键盘上输入,比较两字符串大小的函数为自定义函数check()(不能使用系统函数strcmp),要求自己编写自定义函数check()。

主函数在相同字符串时输出结果为:-1,

不同字符串时输出结果为:1

jackz007 发表于 2022-11-28 16:45:16

本帖最后由 jackz007 于 2022-11-28 16:46 编辑

#include <stdio.h>

int check(char s1[] , char s2[])
{
      int a , b , c , i , r                                             ;
      for(a = 0 ; s1 ; a ++)                                       ;
      for(b = 0 ; s2 ; b ++)                                       ;
      for(i = 0 , c = (a > b) ? a : b ; i < c && s1 == s2 ; i ++) ;
      r = (i == c) ? 0 : -1                                             ;
      return r                                                          ;
}

int main(void)
{
      char c , s1 , s2                                        ;
      gets(s1)                                                          ;
      gets(s2)                                                          ;
      if(! check(s1 , s2)) printf("-1\n")                               ;
      else printf("1\n")                                                ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
123
123
-1

D:\\C>x
1234
123
1

D:\\C>

sususususu 发表于 2022-11-28 17:49:08

jackz007 发表于 2022-11-28 16:45
编译运行实况:

可是这样不能实现 “ 比较两字符串S1和S2,如果S1>S2,输出正数1;如果S1=S2,输出0;如果S1 < S2,输出 –1”。

jackz007 发表于 2022-11-28 17:54:01

本帖最后由 jackz007 于 2022-11-28 23:38 编辑

sususususu 发表于 2022-11-28 17:49
可是这样不能实现 “ 比较两字符串S1和S2,如果S1>S2,输出正数1;如果S1=S2,输出0;如果S1 < S2,输出...

int check(char s1[] , char s2[])
{
      int a , b , c , i , r                                             ;
      for(a = 0 ; s1 ; a ++)                                       ;
      for(b = 0 ; s2 ; b ++)                                       ;
      for(i = 0 , c = (a > b) ? a : b ; i < c && s1 == s2 ; i ++) ;
      r = (i == c) ? 0 : (s1 > s2) ? 1 : -1                     ;
      return r                                                          ;
}

sususususu 发表于 2022-11-28 23:34:07

jackz007 发表于 2022-11-28 17:54


这样还是不行呀,当s2>s1时,输出还是为1,而不是-1

jackz007 发表于 2022-11-28 23:39:02

sususususu 发表于 2022-11-28 23:34
这样还是不行呀,当s2>s1时,输出还是为1,而不是-1

         4 楼的代码已经修改,请你再试。
页: [1]
查看完整版本: 函数题目,萌新求教