函数题目,萌新求教
编写程序,比较两字符串S1和S2,如果S1>S2,输出正数1;如果S1=S2,输出0;如果S1 < S2,输出 –1。要求S1和S2可在主函数内从键盘上输入,比较两字符串大小的函数为自定义函数check()(不能使用系统函数strcmp),要求自己编写自定义函数check()。主函数在相同字符串时输出结果为:-1,
不同字符串时输出结果为:1
本帖最后由 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> jackz007 发表于 2022-11-28 16:45
编译运行实况:
可是这样不能实现 “ 比较两字符串S1和S2,如果S1>S2,输出正数1;如果S1=S2,输出0;如果S1 < S2,输出 –1”。 本帖最后由 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 ;
} jackz007 发表于 2022-11-28 17:54
这样还是不行呀,当s2>s1时,输出还是为1,而不是-1 sususususu 发表于 2022-11-28 23:34
这样还是不行呀,当s2>s1时,输出还是为1,而不是-1
4 楼的代码已经修改,请你再试。
页:
[1]