将a、b两个数组逐个相对应的字符进行比较,如果a的大于b的对应字符,直接输出1;如果a的小于b的对应字符,直接输出-1;如果相等则继续比较下一个字符,比较结果与上述相同,若比较到最后对应字符仍然相等,则输出0。
长度不确定的话,如果比较到较短的数组最后还是两个相同,则较长的数组最终大于较短的数组。
字符串比较用函数 strcmp。
char a[80],b[80];
printf("please enter string a:\n");
gets(a);
printf("please enter string b:\n");
gets(b);
if (strcmp(a,b)==0) printf("0");
else if (strcmp(a,b)>0) printf("1");
else printf("-1");
核心代码字符串长度可任意,下面a,b只是随便长度举例,只要不两字符串的首地址传给p,q即可
char a[]="alsdjfa";
char b[]=";asldjfaslfh";
char *p;
char *q;
int flag=3;
for(p=a,q=b;*p!='\0'&&*q!='\0';p++,q++){
if *p>*q{flag=1;break;}
else if *p==*q{flag=0;continue;}
else{flag=-1;break;}
}
if flag!=3{
printf("\n%d\n",flag);
}
esle if *p=='\0'{
printf("a is null\n");
}
else{printf("b is null\n");
}
通过移位运算来判定整数的正负性。
#include
using namespace std;
#define MAX(A,B) (((A)-(B))>>31 ? (B) : (A))
int main()
{
int a = 10, b = 100;
cout << MAX(a, b) << endl;
}