c语言中比较两个字符串的大小
用comparison()实现字符串的比较功能从键盘输入一个字符串;调用函数comparison()输出结果;...
用comparison()
实现字符串的比较功能
从键盘输入一个字符串;调用函数comparison()
输出结果; 展开
实现字符串的比较功能
从键盘输入一个字符串;调用函数comparison()
输出结果; 展开
展开全部
在C语言中比较字符串大小,可以使用库函数strcmp,也可以自己编写比较函数。
1、使用库函数。
需要包含头文件string.h。声明为:
int strcmp(const char *s1, const char *s2);
会根据字典序比较s1和s2, 如果二者相等,则返回0;如果s1较小则返回-1;如果s1较大则返回1。
比如
strcmp("123", "123") 结果为0。
strcmp("123", "456") 结果为-1。
strcmp("456", "123") 结果为1。
2、自定义函数。
实现字符串比较的方法有很多,其基本原理为按字节比较。
举例如下:
int my_strcmp(char *s1, char *s2)
{
int i;
for(i = 0; s1[i] == s2[i] && s1[i]!=0; i++);//循环比较,达到结束或者出现不相等值时退出循环。
if(s1[i] == s2[i]) return 0;//代表全部相等,返回0
if(s1[i]<s2[i]) return -1;//s1较小,返回-1。
return 1;//s1较大,返回1.
}
推荐于2018-10-11
展开全部
一:(这个调用了 string.h 头函数)
#include <stdio.h>
#include <string.h>
void comparision(char a[],char b[])
{
if(strcmp(a,b)>0) printf("a[40]>b[40]");
else if(strcmp(a,b)==0) printf("a[40]=b[40]");
else printf("a[40]<b[40]");
}
main(void)
{
char a[40],b[40];
gets(a);
gets(b);
comparision(a,b);
}
2:这个是普通方法 不调用函数strcmp();
#include <stdio.h>
int comparision(char a[],char b[])
{
int t,i=0;
while(a[i]!='\0'||b[i]!='\0')
{
if(a[i]==b[i]) t=0;
else if(a[i]>b[i]) t=1;
else t=-1;
if(t!=0) break;
i++;
}
return t;
}
main(void)
{
char a[40],b[40];
int k=0;
gets(a);
gets(b);
k=comparision(a,b);
if(k==1) printf("a[40]>b[40]");
else if(k==-1) printf("a[40]<b[40]");
else printf("a[40]=b[40]");
}
#include <stdio.h>
#include <string.h>
void comparision(char a[],char b[])
{
if(strcmp(a,b)>0) printf("a[40]>b[40]");
else if(strcmp(a,b)==0) printf("a[40]=b[40]");
else printf("a[40]<b[40]");
}
main(void)
{
char a[40],b[40];
gets(a);
gets(b);
comparision(a,b);
}
2:这个是普通方法 不调用函数strcmp();
#include <stdio.h>
int comparision(char a[],char b[])
{
int t,i=0;
while(a[i]!='\0'||b[i]!='\0')
{
if(a[i]==b[i]) t=0;
else if(a[i]>b[i]) t=1;
else t=-1;
if(t!=0) break;
i++;
}
return t;
}
main(void)
{
char a[40],b[40];
int k=0;
gets(a);
gets(b);
k=comparision(a,b);
if(k==1) printf("a[40]>b[40]");
else if(k==-1) printf("a[40]<b[40]");
else printf("a[40]=b[40]");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-15
展开全部
#include <stdio.h>
int comparison(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0'||b[i]!='\0';i++)
{
if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return -1;
}
if(a[i]=='\0'&&b[i]=='\0') return 0;
if(a[i]=='\0') return -1;
return 1;
}
void main()
{
char a[100],b[100];
int t;
printf("请输入两个字符串:\n");
scanf("%s%s",a,b);
t=comparison(a,b);
if(t==1) printf("%s > %s",a,b);
else if(t==-1) printf("%s < %s",a,b);
else printf("%s == %s",a,b);
printf("\n");
}
int comparison(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0'||b[i]!='\0';i++)
{
if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return -1;
}
if(a[i]=='\0'&&b[i]=='\0') return 0;
if(a[i]=='\0') return -1;
return 1;
}
void main()
{
char a[100],b[100];
int t;
printf("请输入两个字符串:\n");
scanf("%s%s",a,b);
t=comparison(a,b);
if(t==1) printf("%s > %s",a,b);
else if(t==-1) printf("%s < %s",a,b);
else printf("%s == %s",a,b);
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-15
展开全部
int comparison(char *str1,char *str2)
{
while(*str1!='\0'&&*str1!='\0')
{ if(*str1==*str2)
{ str1++; str2++;
}
else return *str1-str2;
}
return 0;
}
{
while(*str1!='\0'&&*str1!='\0')
{ if(*str1==*str2)
{ str1++; str2++;
}
else return *str1-str2;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个字符串s1和s2,若s1=s2时,返回值为0;若s1不等于s2时,返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14)。如果s1 > s2,则输出正值;如果s1 < s2,则输出负值。
答案:
#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
char s1[N],s2[N];
int i,j=0;
puts("输入字符串s1:");
gets(s1);
puts("输入字符串s2:");
gets(s2);
for(i=0;(s1[i]!='\0')&&(s2[i]!='\0');i++)
{
j=s1[i]-s2[i];
if(j!=0)
break;
}
if((s1[i]=='\0')&&(s2[i]=='\0'))
printf("%d\n",j);
else
printf("%d\n",s1[i]-s2[i]);
}
答案:
#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
char s1[N],s2[N];
int i,j=0;
puts("输入字符串s1:");
gets(s1);
puts("输入字符串s2:");
gets(s2);
for(i=0;(s1[i]!='\0')&&(s2[i]!='\0');i++)
{
j=s1[i]-s2[i];
if(j!=0)
break;
}
if((s1[i]=='\0')&&(s2[i]=='\0'))
printf("%d\n",j);
else
printf("%d\n",s1[i]-s2[i]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询