C语言:用指针实现字符串大小的比较,应该怎样做呢?

作者&投稿:刀杨 (若有异议请与网页底部的电邮联系)
怎样用c++编写比较两个字符串的大小(用指针)~

#include
using namespace std;

int cmp(char *s, char *p);

int main()
{
char m[20],n[20];
cin>>m>>n;
int i = cmp(m,n);
if (i == 0)
cout <<"两者相等"<<endl;
if (i == 1)
cout << "前者大于后者"<< endl;
if (i == -1)
cout << "前者小于后者" << endl;
return 0;
}

int cmp(char *s, char *p)
{
while (*s&&*p)
{
if (*s>*p)
return 1;
else if (*s < *p)
return -1;
else
{
if (*(s+1) == '\0' && *(p+1) != '\0')
return -1;
else if (*(s+1) != '\0' && *(p+1) == '\0')
return 1;
else if (*(s+1) == '\0'&&*(p+1)=='\0')
return 0;
else
{
s++,p++;
continue;
}
}
}
}

一:(这个调用了 string.h 头函数)
#include
#include

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

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]");
}

字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:

  • 返回值大于0,则前串大,

  • 返回值小于0,则前串小,

  • 返回值等于0,两个字符串相等。

参考代码:

#include<stdio.h>
int stringcompare(char *a,char *b)
{
while( *a && *a == *b )
{
a++;
b++;
}
return *a-*b ;
}

int main()
{
int ret;
char a[10];
char b[10];
printf("请输入字符串a: ");
gets(a);
printf("请输入字符串b: ");
gets(b);
ret=stringcompare(a,b);
if ( ret > 0 )
printf("a>b
");
else if ( ret < 0 )
printf("a<b
");
else
printf("a=b
");
    system("pause");
    return 0;
}

运行结果:

请输入字符串a: abcde

请输入字符串b: acd

a<b


请输入字符串a: acd

请输入字符串b: abcde

a>b


请输入字符串a: abc

请输入字符串b: abc

a=b



字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:
返回值大于0,则前串大,
返回值小于0,则前串小,
返回值等于0,两个字符串相等。
参考代码:
#include<stdio.h>
int stringcompare(char *a,char *b)
{
while( *a && *a == *b )
{
a++;
b++;
}
return *a-*b ;
}
int main()
{
int ret;
char a[10];
char b[10];
printf("请输入字符串a: ");
gets(a);
printf("请输入字符串b: ");
gets(b);
ret=stringcompare(a,b);
if ( ret > 0 )
printf("a>b\n");
else if ( ret < 0 )
printf("a<b\n");
else
printf("a=b\n");
system("pause");

return 0;
}
运行结果:
请输入字符串a:
abcde
请输入字符串b:
acd
a<b
请输入字符串a:
acd
请输入字符串b:
abcde
a>b
请输入字符串a:
abc
请输入字符串b:
abc
a=b

#include<stdio.h>
int stringcompare(char *a,char *b);
main()
{
char a[10];
char b[10];
printf("请输入字符串");
gets(a);
gets(b);
printf("%d",stringcompare(a,b));
}

int stringcompare(char *a,char *b)
{
do{
if(*a<*b) return -1;
else if(*a>*b) return 1;
a++;
b++;
}while(*a&&*b);
return 0;
}

#include<stdio.h>
int stringcompare(char *a,char *b)
{
int ret = 0;
while(!(ret = *a - *b) && *b)
a++, b++;
if(ret<0)ret = -1;
else if(ret>0)ret = 1;
return ret;
}
void main()
{

char a[10];
char b[10];
printf("请输入字符串\n");
gets(a);
gets(b);
int k = stringcompare(a,b);
if(k>0)printf("%s>%s\n",a,b);
else if(k==0)printf("%s=%s\n",a,b);
else printf("%s<%s\n",a,b);
}


C语言:用指针实现字符串大小的比较,应该怎样做呢?
字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:返回值大于0,则前串大,返回值小于0,则前串小,返回值等于0,两个字符串相等。参考代码:inclu...

c语言用指针编写,输入一行文字,找出其中大写字母,小写字母,空格,数字...
void main(){ int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s[20];while((s[i]=getchar())!='\\n')i++;p=s;while(*p!=10){ if(*p>='A'&&*p<='Z')a++;else if(*p>='a'&&*p<='z')b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9')d++;else e++;p+...

C语言编程、以函数方式用指针实现。将字符串s2的前n个字符连接到s1的...
C语言编程、以函数方式用指针实现。将字符串s2的前n个字符连接到s1的尾部 10 如果n大于s2的长度,则仅将s2全部复制即可。函数形式:int my_strncpy(char *s1,char *s2,int n),其中函数返回值为最终连接到s1的字符数。xxd520000 | 浏览1253 次 |举报 我有更好的答案推荐于2017-12-16 11:44:00 最佳答案 ...

C语言里怎么在数组里定义汉字变量 和指针指向汉字数组?
1、在C语言中,可以通过将汉字作为字符串输入。由于一个汉字占2个字节,所以对汉字的操作,只能以2个字节作为操作单位。2、下面通过具体实例来说明汉字在C语言中的使用:char s[] = "首都北京"; \/\/ 将汉字字符赋值给字符数组 char s2[20]; \/\/ 定义字符数组,存放用户输入的汉字 scanf("%s...

C语言编程,使用指针,完成一字符串中大小写的转换
void convertToUppercase(char *); void main() { char string[] = "characters and &32.98"; printf("The string before conversion is: %s", string); convertToUppercase(string); printf("\/nThe string after conversion is: %s\/n", string); } void convertToUppercase(char *sPtr) { w...

急!!!请问在C语言中如何用指针实现一个字符串输入,然后把输入字符串倒...
include "stdio.h"include <string.h> void main(){ char *p,a[200],b[200];int i,m;p=a;printf("\\nEnter a string:\\n");gets(a);m=strlen(a);p=p+m-1;for(i=0;i<m;i++){ b[i]=*p;p--;} b[i]='\\0';printf("%s",b);} ...

编辑c语言程序有一个包含n个字符的字符串,用指针实现将字符串中从第m...
include <stdio.h>\/\/ 将长度为n的字符串str从第m个字符开始全部变成chchar *myedit(char *str, int n, int m, char ch){ char *p = str; for (p += m; p - str < n; p++) *p = ch; return str;}int main(){ char test[] = "hello world, hello c, hello!

c语言编程,使用指针做为函数参数,编写一个字符串交换函数,实现两个字符...
include <stdio.h>void swap(char *a, char *b){ int ch; while(*a && *b) ch=*a,*a=*b,*b=ch,a++,b++; if(*a){*b++=*a,*a++='\\0';while(*b++=*a++);}else if(*b){*a++=*b,*b++='\\0';while(*a++=*b++);}} ...

c语言 输入一个字符串,用指针实现从第一个字符开始,依次跳过一个字符输...
for(i=0,i<lenth(string),i=i+2) printf("%c" *(p+i)); 其中p是指向字符串的指针,string代表字符串。 嗯,应该没错!

C语言:利用指针编写程序,统计字符串的长度?
include <stdio.h> int main(){ char str[100];gets(str);char *s = str;int count =0;while(*s){ count++;s++;} printf("Length of the string is %d\\n",count);return 0;}

改则县18979338477: C语言:用指针实现字符串大小的比较,应该怎样做呢? -
庞阅冰栀: 字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:返回值大于0,则前串大...

改则县18979338477: 请问在c语言中,怎样利用指针来比较多个字符串的大小? -
庞阅冰栀: 每个字符串用一个指针指向首地址 再设置一个计数器 在尾地址前指针移动计数器就加1 最后可以通过比价计数器的大小来比较字符串长度

改则县18979338477: C语言中,不用库函数.用指针访问字符串,比较两个字符串大小.求指教~ -
庞阅冰栀: #include "stdio.h" main() { char s1[100],s2[100]; char *p1,*p2; scanf("%s %s",s1,s2); printf("%s%s \n",s1,s2); p1=s1;p2=s2; while(*p1) { if(*p1==*p2) {p1++;p2++;} else if(*p1>*p2) {printf("s1>s2\n");break;} else {printf("s1 } if(*p1==0&&*p2==0) printf("s1=s2\n"); }

改则县18979338477: 用C语言写程序:自定义一个函数比较两个字符串的大小.要求用到指针. -
庞阅冰栀: void strcpy(char *s1,char *s2) { for(;*s1!='\0';s1++,s2++) if(*s1!=*s2) break; return(*s1-*s2); }

改则县18979338477: C语言:编写一程序实现比较任意个字符串的大小.实现比较排序时定义函数完成,函数参数可选指针数组. -
庞阅冰栀: int mystrcmp(const char *si,const char *sd) { int k; while( (k=*si-*sd)==0 && *si++ && *sd++) return k;; } k>0 说明 si大;k<0 说明 sd大;k=0 两个字符串相等

改则县18979338477: C语言:用指针实现比较字符串的大小..我写的有些问题·!! -
庞阅冰栀: 代码没什么问题,不过粗心而已.是个最常见最容易犯的错误.if(i==0) // printf("数组b=数组a\n"); 再者别用if,if if 用if, else if , else 就行了

改则县18979338477: 急用两个C语言程序 一个是用指针求字符串的长度 另一个是用指针实现字符串的比较 拜托 要快!!! -
庞阅冰栀: int strlen(char* str) {int i=0; while(*str++)i++;return i; } int strcmp(char *str1, char *str2) { int i; do{ i=*str1 -*str2; }while(*str1++ && *str2++ && (!i)); return i; }

改则县18979338477: 自定义函数实现用指针方法完成两个字符串的比较.并编辑主函数调用之(C语言) -
庞阅冰栀: #include <stdio.h>#include <stdlib.h> int str_cmp(char *, char *); int main() { char str1[32] = "baidu"; char str2[32] = "baidu hello"; int x = str_cmp(str1, str2); if(x>0) { printf("大于,不相等\n"); } else if(x<0) { printf("小于,不相等\n"); } ...

改则县18979338477: c语言 用指针编写程序 设有两个字符串a,b 将他们对应字符的较大者放在c的相应位置 -
庞阅冰栀: 算法:比较a和b的字符长度,取得较大的长度作为c的长度 将a和b的每个字符比较,较大的赋值给c对应的位置,较长的字符串后多余的字符全部直接赋值给c 代码:最后分别输出a和b以及他们的对应字符的ASCII码,可以很直观做出演示 main() ...

改则县18979338477: 编写一个函数,比较两个字符串是否相等(利用指针完成)c语言: -
庞阅冰栀: #include <stdio.h> #include <string.h> int same(char *a,char *b) {if (strlen(a) != strlen(b))return 0;elsewhile ((*a == *b) && (*a != '\0')){a++;b++;};return ((*a != '\0') ? 0 : 1); }; int main() {char a[100],b[100];scanf("%s%s",a,b);if (same(a,b) ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网