不用strcmp函数,试构造一个函数比较两个字符串大小

帮忙看看,哪错了?
#include<stdio.h>
void main(){
int i,j;
int com(int x[],int y[]);
char a[100];
char b[100];
printf("Input a:");
gets (a);
printf("Input b:");
gets (b);
j=com(a[i],b[i]);
if(j==1)
printf("a>b");
if(j==2)
printf("a<b");
if(j==0)
printf("a=b");
}
int com(int x[],int y[])
{
int i,z;
char a;
char b;
z=0;
for(i=0;(a=x[i])!='\0'&&(b=y[i])!='\0';i++){
if(x[i]>y[i])
z=1;
return z;break;
if(x[i]<y[i])
z=2;return z;break;
}
}
改一下
#include<stdio.h>
void main(){
int i,j;
int com(char x[],char y[]);
char a[100];
char b[100];
printf("Input a:");
gets (a);
printf("Input b:");
gets (b);
j=com(a,b);
if(j==1)
printf("a>b");
if(j==2)
printf("a<b");
if(j==0)
printf("a=b");
}
int com(char x[],char y[])
{
int i,z;
char a;
char b;
z=0;
for(i=0;(a=x[i])!='\0'&&(b=y[i])!='\0';i++){
if(a>b)
z=1;
break;
if(a<b)
z=2;break;
}
return z;
}

这个怎样?
int com(char x[],char y[])
{
int i,z;
z=0;
for(i=0;(x[i]!='\0'||y[i]!='\0')!=0;i++)
{
if(x[i]>y[i])
{
z=1;
break;
}
if(x[i]<y[i])
{
z=2;
break;
}
}
return z;
}追问

正解,为什么for(i=0;(x[i]!='\0'||y[i]!='\0')!=0;i++)
里面那个i++前面的!=0是什么意思?谁!=0

追答

两个字符串比较,只有两个字符串在比较出大小之前都结束了才终止循环,是x,y有一个还没结束就是!=0。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-05
#include<stdio.h>
void main(){
int j;
int com(char x[],char y[]);
char a[100];
char b[100];
printf("Input a:");
gets (a);
printf("Input b:");
gets (b);
j=com(a,b);
if(j==1)
printf("a>b");
else if(j==2)
printf("a<b");
else if(j==0)
printf("a=b");
}
int com(char x[],char y[])
{
int i,z;
char a;
char b;
z=0;
for(i=0;(a=x[i])!='\0'&&(b=y[i])!='\0';i++){
if(a>b){
z=1;
break;
}
if(a<b){
z=2;
break;
}
}
return z;
}追问

可是你这个打hell和hello就不行,显示a=b,求怎么改

第2个回答  2012-06-05
com函数中for循环内部的break语句是否应该在if语句包含之下啊。
比如
if(a > b)
{
z = 1;
break;
}
//if(a < b)同上
第3个回答  2012-06-05
#include<stdio.h>
void main(){
int j;
int com(char x[],char y[]);
char a[100];
char b[100];
printf("Input a:");
gets(a);
printf("Input b:");
gets(b);
j=com(a,b);
if(j==1)
printf("a>b");
if(j==2)
printf("a<b");
if(j==0)
printf("a=b");
}
int com(char x[],char y[])
{
int i,z;
char a;
char b;
z=0;
for(i=0;(a=x[i])!='\0'&&(b=y[i])!='\0';i++){
if(a>b)
z=1;
return z;break;
if(a<b)
z=2;return z;break;
}
return 0;
}

函数与调用函数的变量类型必须一致, 函数返回值不能掉。

不用strcmp函数,试构造一个函数比较两个字符串大小
int com(char x[],char y[]){ int i,z;z=0;for(i=0;(x[i]!='\\0'||y[i]!='\\0')!=0;i++){ if(x[i]>y[i]){ z=1;break;} if(x[i]<y[i]){ z=2;break;} } return z;}

用c语言编写程序,不使用strcmp函数,比较任意两个字符串的大小
if ((strlen(a) != strlen(b)) || (a[0] != b[0])) return 0; \/\/如果长度不相同或发现不相等字符,则表示字符串不相等 return my_strcmp(++a, ++b); \/\/判断下一个字符 }

编程比较两个字符串的大小(不用strcmp函数())
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...

C语言 不用strcmp() 实现字符串比较
①两个字符串长度不相等,如果是str1短,那么在str1结束的位置,while(str1[i])就跳出了循环,这是判断 k=str1[i]-str2[i],肯定是小于0,所以str1 < str2。②如果str2短,那循环会在str2的结尾处从 if(str1[i]!=str2[i]) break; 跳出,同理判断 k 就行了③两个字符串长度相等,碰到某个字符不相等...

不使用strcmp函数实现比较两个字符串的功能
i = 0;while((a[i] == b[i]) && (a[i] != '\\0')) i++;if (a[i] == '\\0')printf("The 2 strings are the same.");else printf("The 2 strings are different.");--- 大概就是这样吧...

...不使用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() 实现字符串比较
判断字符串str1是不是已经结束了,这里判断不严密,str1与str2都应判断是否已经结束。while( (str1[i]!='\\0')&&(str2[i]!='\\0'))if (str1[i]!=str2[i])break;else i++; \/\/继续判断下一个字符

C++编写一函数,比较两个字符串的大小,不能用strcmp
return -1;} } return 0;} int main(){ char a_1[10] = "pause";char a_2[10] = "Pause";char b_1[10] = "hello";char b_2[10] = "ahh";cout<<"str_cmp:"<<str_cmp(a_1,a_2)<<"\\t";cout<<"strcmp:"<<strcmp(a_1,a_2)<<endl;cout<<"str_cmp:"<<str_cmp...

用指针编写一个比较字符串大小的函数(不要用strcmp函数)
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')...

编写程序..比较2个字符串,不用strcmp函数...急..急.
说strcmp不能用,strlen总可以用吧?include <iostream> include <string.h> using namespace std;int myCmp( const char* lhs,const char* rhs ){ typedef unsigned int uint;uint lhs_size = strlen(lhs);uint rhs_size = strlen(rhs);uint size = lhs_size < rhs_size?lhs_size:rhs_...

相似回答