问题描述
比较2个输入字符串的首字母大小返回差值如果第一个相等就返回0,大于或小于就是差值。如果第一相同就返回0,否则继续往后比较。
(可延伸:比较n组字符串的首字母大小排序)
代码(main函数可以使用指针和引用)
以下分别写了2个main,选择一个即可
#include<stdio.h>
#define N 30
int compare(char *m,char *n);
//定义指针指向字符串的首地址
//int main()
//{
// char *str1,*str2;//定义2个字符串数组
// printf("请输入字符串str1\n");
// scanf("%s",str1);//不是数组也不能引用
// printf("请输入字符串str2\n");
// scanf("%s",str2);
// printf("%d\n",compare(str1,str2)); //传地址指针或者写str1,str2也可以
//}
//下面用数组的引用也可以
int main()
{
char str1[N],str2[N];//定义2个字符串数组
printf("请输入字符串str1\n");
scanf("%s",&str1[N]);//这里不能像上面写str1因为没有定义指针指向str1的首地址,必须要用引用
printf("请输入字符串str2\n");
scanf("%s",&str2[N]);
//printf("%d\n",compare(&str1[N],&str2[N])); //传地址指针或者写str1,str2也可以
printf("%d\n",compare(str1,str2));//这句数组引用和指针通用 ,更好一些
}
int compare(char *m,char *n){//其实传2个数组来也可以,比较str1[0]和str2[0]即可 ,一维直接传递指针,二维数组传递要指针的指针
while(*m==*n){//第一个字母同后移
if(*m=='\0'){ return 0;}//结束
m++;
n++;//后移
}
return *m-*n ;//返回差
}