c语言两个字符串比较大小的问题,不使用strcmp函数
发布网友
发布时间:2022-04-25 17:58
我来回答
共2个回答
热心网友
时间:2023-10-23 01:13
#include<stdio.h>
#define N 80
void cmp(char a[N],char b[N])
{
int i=0;
char *p1=a,*p2=b;
while(*(p1+i)==*(p2+i)&&*(p1+i)!='\0')
{
i++;
}
if(*(p1+i)>*(p2+i))
printf("%s>%s\n",p1,p2);
else if(*(p1+i)<*(p2+i))
printf("%s<%s\n",p1,p2);
else
printf("%s=%s\n",p1,p2);
}
int main()
{
char a[N]={"abcdef"},b[N]={"abcdfg"};
char c[N]={"abcdefg"},d[N]={"abcdefg"};
char e[N]={"abcdefg"},f[N]={"abcdeeg"};
cmp(a,b);
cmp(c,d);
cmp(e,f);
return 0;
}
运行效果:
扩展资料:
while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:
一、在while语句中设定条件语句,条件不满足,则循环自动停止。
如:只输出3的倍数的循环;可以设置范围为:0到20。
二、在循环结构中加入流程控制语句,可以使用户退出循环。
1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。
2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。
热心网友
时间:2023-10-23 01:14
看了也试了、没什么问题
不过不用加头文件string.h
while((str1[i]==str2[i])&&(str1[i]!='\0')) i++;
这是说两个字符串从首位字符开始比较、如果相比较的两个字符相等且第一个字符串没有到结尾、那么要比较的字符各向后移动一位、str1[i]!='\0'是判断字符串结束的、当不满足条件时就会继续向下执行
if(str1[i]=='\0'&&str2[i]=='\0')
s=0;
else
s=str1[i]-str2[i];
如果是由于第一个字符串结束而跳出上面的循环、判断第二个字符串是否也结束了、
也就是判断下是不是两个字符串同时结束、如果是、s=0、不是、s为两个字符相差的ASCII码追问能更详细一点吗?谢谢啊,比如Ai和Fd啊,他们都是170啊,不是应该相等的吗?
就是如何比较字符串的啊,如果一次个是as,第二个是adf,又怎么比较啊?
追答额、我明白你的意思了、你理解错了
字符串比较并不是把每个字符的ASCII值都加起来后比较、
而是从头开始比较、只要有不相同的就结束、
比如、、
abcd和abef
从第一位开始比较、都是a相同、继续
第二位都是b、继续
第三位一个是c一个是e、不同
于是返回c-e的ASCII值、后面的就不比较了、结束程序了
c语言两个字符串比较大小的问题,不使用strcmp函数
不过不用加头文件string.hwhile((str1[i]==str2[i])&&(str1[i]!='\0')) i++; 这是说两个字符串从首位字符开始比较、如果相比较的两个字符相等且第一个字符串没有到结尾、那么要比较的字符各向后移动一位、str1[i]!='\0'是判断字符串结束的、当不满足条件时就会继续向下执行if(str1[i]=='\...
用c语言编写程序,不使用strcmp函数,比较任意两个字符串的大小
int my_strcmp(const char *a, const char *b){ if (((a == 0) && (b == 0)) || ((*a == 0) && (*b == 0))) return 1; //如果已经比较到字符串结尾,则表示字符串相等 if ((strlen(a) != strlen(b)) || (a[0] != b[0])) return 0; //如果长度不相同或发...
C语言问题:不用strcmp函数比较两个字符串的大小
strcmp函数是用来比较字符串的,而字符串以'\0'作为结尾标志,故要加上&&a[i]!='\0'。
利用指针来比较两个字符串大小,不能用strcmp()函数 的程序怎么写
if(aa[a]>bb[a]){ c+=1;return(c);//break;} if(aa[a]<bb[a]){ return(c);//break;} } } void main(){char*str[1][20];int a,b,c,d,e,f,h,i,j;printf("please input five char:\n");/*scanf("%s%s%s",str[0],str[1],str[2],str[3],str[4]);*/ scanf...
用循环和数组编写,比较两个字符串的大小。(不用到strcmp函数)
/* HELLO.C -- Hello, world */ include <stdio.h> int main(){ int i, n;char s1[50];char s2[50];printf("enter s1:");scanf("%s", s1);printf("enter s2:");scanf("%s", s2);n = strlen(s1) >strlen(s2) ? strlen(s2) : strlen(s1);for (i = 0; i <= n; ...
C语言 编一个函数比较字符串大小(不用strcmp库函数)
int s_cmp(char *s1,char *s2){ while (*s1 == *s2++)if (*s1++ == 0)return (0);return (*s1 - *(s2-1));}
编写C语言程序,不使用strcmp函数,比较任意两个字符串的...
丹凤呈祥龙献瑞 红桃贺岁杏迎春 福满人间 一年好运随春到 四季彩云滚滚来 万事如意
...字符串str1和str2的大小。要求不使用库函数strcmp.
char *s1, char *s2){if (s1 == NULL || s2 == NULL)// 字符串为空 return 0;while(*s1 == *s2 && *s1 != '\0'){s1++;s2++;}return *s1 - *s2;}// 给了一个测试例子~可以自己写几个例子测试一下。int main(){printf("%d\n", Mystrcmp("ab", "aa"));} ...
...不使用C语言提供的标准函数strcmp。输出比较的结果(相等的结果...
include "stdio.h"int main(int argv,char *argc[]){char a[100],b[100],i;printf("Input 2 strings...\n");scanf("%100s%100s",a,b);for(i=0;a[i]==b[i] && a[i];i++);printf("%d\n",a[i]-b[i]);return 0;}运行样例:...
c语言怎么不用strcmp按字典顺序对多个字符串排序?
strcmp子函数的功能是比较str1和str1字符串的每个字符 用一个for循环来实现这个功能的 功能实现,模拟着函数 void mystrcmp(char *str1,char *str2){ int i;for(i=0;str1[i]||str2[i];i++)if(str1[i]<str2[i])retrun -1;else if(str1[i]>str2[i])return 1;return 0;} strc...