用C语言编写这个程序?
比较两个字符串S和T大小的函数strcomp(char *s,char *t),要求s小于t时返回-1,s等于t返回0,s大于t时返回1,在主函数中任意输入4个字符串,求最小字符串。不能用strcmp;
比较两个字符串S和T大小的函数strcomp(char *s,char *t),要求s小于t时返回-1,s等于t返回0,s大于t时返回1,在主函数中任意输入4个字符串,求最小字符串。不能用strcmp;
答案:你好:下边是程序代码,我已运行过,完全可以满足你的要求,希望对你有帮助!如果不符合你的要求,你可以追问.
#include <stdio.h>
#include <string.h>
int strcomp(char *s,char *t)
{
while(*s&&*t&&*s==*t)
{
s++;t++;
}
if(*s-*t>0)
return 1;
if(*s-*t==0)
return 0;
if(*s-*t<0)
return -1;
}
main()
{
int i,j,k,l,m,n,b;
char str1[20],str2[20],str3[20],str4[20];
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
printf("请输入第三个字符串:");
gets(str3);
printf("请输入第四个字符串:");
gets(str4);
i=strcomp(str1,str2);
j=strcomp(str1,str3);
k=strcomp(str1,str4);
m=strcomp(str2,str3);
n=strcomp(str2,str4);
b=strcomp(str3,str4);
if(i<0&&j<0&&k<0)
printf("%s\n",str1);
else if(m<0&&n<0)
printf("%s\n",str2);
else if(b<0)
printf("%s\n",str3);
else
printf("%s\n",str4);
getch();
}我用指针编写的:
#include <iostream>
using namespace std;
int main()
{
int n=0,judge;
char text1[20],text2[20];
char *s=NULL,*t=NULL;
s=text1;
t=text2;
cout<<"Please input two strings:"<<endl;
cin>>text1;
cin>>text2;
for(*s=text1[0],*t=text2[0];*s!='\0',*t!='\0';s++,t++)
{if(*s==*t) //判断两字符是否相等
n=0;
else if(*s>*t)
{judge=1;cout<<judge<<endl;n=1;break;}
else
{judge=-1;cout<<judge<<endl;n=-1;break;}
}
if(n==0)
{judge=0;cout<<judge<<endl;}
}int Mystrcmp(char *s,char *t){//有空指针返回2,其实用异常处理更好,_try{..}...if((!s)||(!t)) return 2;if((0==*s)&&(0==*t))return 0;if(0==*s)return -1;if(0==*t)return 1;return Mystrcmp(++s,++t);}