问题描述:
函数fun的功能是比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2,则返回-1。
函数接口定义:
int fun(char a[],char b[]);
其中a
、b
是用户传入的参数。 函数比较两个字符串,如果a
=b
,则返回值0;如果a
>b
,则返回值1;如果a
<b
,则返回-1。
裁判测试程序样例:
#include "stdio.h" #include "string.h" int fun(char a[],char b[]); int main() {int t; char s1[40],s2[40]; gets(s1); gets(s2); t=fun(s1,s2); printf("%d\n",t); return 0; } /* 请在这里填写答案 */
输入样例:
asd
fg
输出样例:
-1
思路:
- 首先,使用
strlen
函数计算字符串a
和字符串b
的长度,分别存储在变量len1
和len2
中。同时,计算两者中的较小值,存储在变量min
中。 - 然后,初始化一个标志变量
flag
为 1,用于记录比较的结果。 - 使用一个循环遍历两个字符串的前
min
个字符。在循环中,如果发现a[i]
(即字符串a
的第i
个字符)大于b[i]
(即字符串b
的第i
个字符),就将flag
设置为 2,并跳出循环。如果发现a[i]
小于b[i]
,就将flag
设置为 3,并跳出循环。 - 循环结束后,根据
flag
的值返回比较结果。如果flag
为 1,说明两个字符串相等,返回 0;如果flag
为 2,说明字符串a
大于字符串b
,返回 1;如果flag
为 3,说明字符串a
小于字符串b
,返回 -1。
代码:
int fun(char a[],char b[]){
int len1 = strlen(a);
int len2 = strlen(b);
int min = len1 <= len2 ? len1 : len2;
int flag = 1;
for(int i=0; i<min; i++){
if(a[i]>b[i]){
flag = 2;
break;
}
else if(a[i]<b[i]){
flag = 3;
break;
}
}
if(flag==1) return 0;
else if(flag==2) return 1;
else if(flag==3) return -1;
}
运行截图: